在ZEDBOARD + PETALINUX环境中设置QSPI FLASH存放并启动系统

29 篇文章 7 订阅
10 篇文章 3 订阅

 

 

 

1,BOOT.BIN在哪里运行存储于启动模式,内部的BITSTREAM以及U-BOOT(或者用户APP)都可以存储。
2,UBOOT有启动命令脚本(auto booting).这个脚本指示从SD卡某个文件或者QSPI FLASH的某个地址区域取
KERNEL和DTB以及ROOTFS,保存在内存的指定区域(这个指定内存区域跟KERNEL编译时候的设置以及其他是对应的)。
3,KERNEL在内存指定位置运行,挂载的RAMDISK是指定在内存的固定区域里的。


分析SD卡启动和QSPI FLASH启动的差别,结合以上三点我们不难总结出:
1,文件系,DTB和内核都不需要修改,因为他是在固定的内存区域运行。UBOOT传递的启动参数指示跟文件系统,DTB位置也一样。
2,BOOT.bin里面的zynq_fsbl和bitstream都不需要变化。
3,UBOOT的启动脚本命令必须变化,之前是从SD指定文件取数据,现在是从QSPI FLASH的指定地址取数据。

 

 

综上我们只需要在UBOOT的自动启动脚本里面指示出来KERNEL,ROOTFS,DTB的存放位置就可以达到从QSPI FLASH启动的目的。而这三个文件都被集中放在image.ub这个文件里。我们在系统配置指示一下image存放位置就可以。

petalinux-config 

 选择Subsystem AUTO Hardware Setting.

选择Advanced bootable images storage settings.

进入后我们看到这里实际就是设置image.ub的存放区域。

我们看到默认是从SD启动,并且下一行指示出了文件名称是image.ub。我们点进去选择

选择primary flash。

之后就看到多了箭头所指示的这一行。说明image.ub是要存在qspi flash的kernel区。

 

这里跟qspi flash划分了多个区域,我们可以在

Subsystem AUTO Hardware Setting -> Flash Setting里面看到QSPI FLASH 的分区(当然也可以修改)。

我们看到

第一个区名称是boot,从地址0开始,长度是0x500000 .(是5M,7Z020的BITSTREAM是4M多一点,加上UBOOT,FSBL不到5M,因此足够)。

第二个区名称是bootnv,从地址0x500000开始,长度是0x20000 ,这里存放UBOOT启动参数或者命令。UBOOT启动后会检查这部分是否为有效的启动命令,如果是则执行这些有效的命令,如果不是则执行autoboot(32K)。我们现在接触到的都是不设置这部分而自动运行autoboot.

第三部分名称是kernel,从地址0x520000开始,长度可以32M-0x52000,长度大于26M的样子。当然这26M还可以继续划分成两个或者三个分区还可以继续划分分区。这里就是image.ub的。

这里我们看之前有parttion0,1,2,3 的字样,我们就要明白这在linux系统里面对应的设备是/dev/mtd*,*就是0,1,2,3。

我们在linux将文件a.bin拷贝到qspi flash 的kernel区的话,首先找到kernel 所在区为2,对应的linux设备是mtd2

之后执行flash拷贝命令

 flashcp a.bin /dev/mtd2

之后输入pealinux-build ,进行编译。

在image/linux目录下生成了u-boot.elf,zynq_fsbl,system.bin 以及image.ub。这些文件中实际上跟sd卡启动的petalinux设置唯一差别的文件就是u-boot.elf,而这个文件的差别也仅仅在于autobooting的脚本(是指示从qspi flash的指定地址0X52000获取image.ub而不是从sd卡的指定文件名)

生成boot.bin后,烧写到flash的0x0的boot分区(对应linux下的/dev/mtd0)。而将image.ub烧写到0x520000的kernel分区(对应/dev/mtd2)。这里烧写步骤有多种,可以用SDK,也可以用 tftp下载到SD卡启动好的板子linux上后使用flashcp烧写。

之后设置flash启动,将看到运行结果。这里面除了系统引导之前的fsbl和uboot能快一些之外(因此是从flash搬运到ocm或者DDR,而取代了从SD卡),运行linux的时间和结果没有任何的差别(因为LINUX 内核以及文件系统都在DDR内)。

 

 

 

 

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Petalinux QSPI 启动是指使用 PetaLinux 工具链将 Linux 操作系统和应用程序编译成适合在 QSPI 存储器上运行的镜像文件,并通过 QSPI 接口启动系统。这种启动方式可以提高系统启动速度和稳定性,适用于嵌入式系统等场景。在使用 Petalinux 进行 QSPI 启动时,需要进行相关的配置和编译工作,具体步骤可以参考 Petalinux 官方文档或相关教程。 ### 回答2: Petalinux是一个基于Yocto的开源Linux发行版,它提供了一套完整的工具链,可以用来构建和定制Linux系统。而QSPI(Quad SPI)则是一种串行接口,可以用于在Flash EEPROM读写数据,也是一种常用于嵌入式系统的存储器芯片接口。可以通过在Petalinux配置和启用QSPI接口,来启动并运行Linux系统。 在使用Petalinux构建QSPI启动Linux系统时,需要经过以下步骤: 1. 在Petalinux配置QSPI接口:在系统配置文件,需要打开QSPI接口的支持,并为QSPI设置正确的时钟和IO,以确保正确的数据传输。此外,还需将QSPI Flash EEPROM的详细信息添加到设备树文件,如型号、容量、启动地址等。 2. 构建Linux内核镜像和根文件系统:使用Petalinux提供的工具链,编译内核镜像和根文件系统,并将其打包成BOOT.bin文件。 3. 烧写BOOT.bin文件到QSPI Flash EEPROM:将已生成的BOOT.bin文件烧写到QSPI Flash EEPROM,以便系统启动时可以读取和加载文件。 4. 通过串口控制台启动Linux系统启动嵌入式设备,并通过串口连接终端,输入相应的命令,即可加载内核镜像和根文件系统启动Petalinux系统。 在使用QSPI启动Petalinux时,需要注意以下几点: 1. 确保QSPI Flash EEPROM的正确性和可靠性:由于QSPI Flash EEPROM是嵌入式系统启动设备之一,因此需确保选择的芯片型号和容量符合设备要求,且芯片本身稳定可靠,以免启动或运行时出现问题。 2. 需要针对具体QSPI Flash EEPROM做出配置:对于不同型号的QSPI Flash EEPROM,需要根据其具体规格和接口特性,进行正确的配置和编程,以确保数据传输的正确性和稳定性。 3. 需要正确处理启动引导:在QSPI启动时,需要保证BootROM能够正确加载和运行BOOT.bin文件。因此,需要考虑和配置引导地址、引导大小、引导模式等参数,并确保BOOT.bin文件能够正确地烧写到QSPI Flash EEPROM的启动地址。 总之,使用QSPI启动Petalinux系统是一个较为复杂的过程,需要考虑到硬件、软件、配置等方面的问题。只有充分理解和掌握相关知识,并将其运用到实际生产,才能够确保系统启动和运行的正确性和稳定性。 ### 回答3: PetaLinux是基于Yocto Project和OpenEmbedded构建的嵌入式Linux开发环境,它提供了完整的工具链以及开发包,可以用于开发多种嵌入式平台。PetaLinux支持QSPI启动,这使得我们可以在嵌入式平台上通过QSPI闪存进行启动,从而实现更高效的启动和更快的操作。下面将详细介绍如何进行PetaLinux QSPI启动。 1.准备工作 首先,我们需要安装PetaLinux环境。安装后,我们需要为目标硬件生成PetaLinux项目,并且确保打开了QSPI闪存选项。通常可以在配置PetaLinux项目时勾选QSPI闪存选项,选择适当的闪存设备、接口和其他设置。 2.生成Boot Image 生成的PetaLinux项目包含了所有需要的文件和配置,但是还需要生成引导镜像。引导镜像通常包括Bootloader和Kernel,以及一些其他的设备树、rootfs等。PetaLinux提供了"petalinux-package" 命令来生成引导镜像,可以根据需要选择不同的选项,并指定生成的镜像名称和路径。 3.烧写Boot Image 生成的镜像需要烧写到QSPI闪存,以便平台可以从启动。这可以通过多种方式实现,例如使用JTAG以及其他专用烧写器。许多平台也支持网络启动(TFTP),以便更轻松地更新或修改镜像。 4.QSPI启动 完成上述步骤后,我们可以尝试使用QSPI闪存启动目标平台。为此,我们需要更改平台的启动序列,以便从QSPI闪存加载引导镜像。这通常需要进入平台的BIOS配置界面,并选择适当的启动顺序,将其设置为QSPI闪存。我们可以根据平台的不同,采用不同设置方法。 总之,PetaLinux QSPI启动可以大大提高启动和操作效率,所有的前期准备工作都需要耐心严密地完成。在配置过程,建议参考平台官方文档以及其他开发者的经验,并根据具体情况进行调整。同时,需要注意保护闪存的重要数据,以免误删除或覆盖。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值