zynq/zynqMP启动模式总结:FLASH+emmc启动/petalinux烧写速度最快的启动方 ...

打印 上一主题 下一主题

主题 840|帖子 840|积分 2520

        因客户要求zynq开辟板只有FLASH和emmc,然而还得在petalinux进行开辟体系,因FLASH大小有限,所以没办法把内核和根文件地址全部存储到FLASH中,于是想配合emmc进行启动,但是在网上搜索的大多都是只把根文件体系放到了emmc,然后把内核和BOOT.bin放到了FLASH,但是烧写FLASH真的很费时间,所以就想出了一个新的办法(被逼的):   

    
启动文件分配:      
存储地区分区存储文件
FLASH-BOOT【fsbl、u-boot、bit(可选)】
EMMCFAT32image.ub【Image】
Ext4rootfs.tar.gz【解压后的】
这样分配下来,BOOT.bin 的大小只有几M,烧写起来方便许多
接下来直接讲授实现过程:
起首想先容一下我的环境:
        petalinux2021.2、vivado2021.2、zynq7020、zynqMP 7ev 
一、向EMMC存储文件

起首应该使用ramdisk模式创建一个很小的petalinux体系:(这个须要打包一起放到FLASH启动)
        1、须要把FLASH内存进行分配(添加kernel、bootscr和rootfs分区)
        2、 修改 Root filesystem type 为 (INITRD),并进行地址配置
        3、  修改 Boot script offset的值 (0x3E80000),这个值为boot.scr的基地址
然后直接petalinux-build即可
然后对这些文件进行打包(网上都是一个一个的分地址烧录到FLASH,但是太麻烦):
这边分享一个把上述文件全部打包成一个BOOT.bin
  1. petalinux-package --boot --force --format BIN --fsbl --u-boot --kernel images/linux/Image --offset 0x1E40000 --cpu a53-0 --boot-script --offset 0x3E80000 --add images/linux/rootfs.cpio.gz.u-boot --offset 0x4000000 --cpu a53-0 --file-attribute partition_owner=uboot
复制代码
    这样只须要把BOOT.bin(大概50Mb)烧写到FLASH即可,时间有点久(去厕所钓会鱼)  
烧写完之后,把启动模式切换到FLASH启动,即可进入体系了,然后如果有网络可以通过网络把image.ub和rootfs.tar.gz 传到体系,参考我以前的文章进行分区和存放即可。
Linux下给emmc进行分区操纵总结-CSDN博客
二、配置从EMMC启动

        1、只需修改Root filesystem type 为 (EXT4 (SD/eMMC/SATA/USB)),并修改rootfs存放的mmc位置
      然后进行petalinux-build
      然后进行打包BOOT.bin (只有5Mb)(只需打包fsbl、u-boot、bit(可选))          
  1. petalinux-package --boot --fsbl ./zynq_fsbl.elf --fpga ./system.bit --u-boot ./u-boot.elf --force
复制代码
这样的BOOT.bin只有5M大小,烧写到FLASH用时很短
然后启动开辟板,进入到u-boot界面:(在执行到U-BOOT倒计时的时间按任意键停息)
在这里修改u-boot启动的指令:
查看当前的启动变量:
  1. print bootcmd
复制代码
如下所示,在bootcmd的下令中我们使用的默认的distro_bootcmd

查看iamge.ub文件
  1. ls emm 1:1
复制代码
如下所示,即我把image.ub存放到了emmc1的第一个分区

查看rootfs文件
  1. ls emm 1:2
复制代码
如下所示,即我把根文件体系放到了emmc1的第二个分区

挂载emmc1
  1. mmc dev 1
复制代码

修改启动内核环境变量
  1. setenv run_emmc_boot "mmc dev 1:1 && load mmc 1:1 0x10000000 /image.ub && bootm 0x10000000"
复制代码
将bootcmd的下令修改成run_emmc_boot
  1. setenv bootcmd "run run_emmc_boot"
复制代码
生存环境变量
  1. saveenv
复制代码
 重启开辟板即可查看到,从emmc中读取iamge.ub

然后就是进行读取根文件体系,直至进入到petalinux体系
 大功告成!!!(开香槟!!
更多关于zynq和zynqMP的标题,可以批评留言
如果感觉文章对您有用,麻烦三连支持一下,方便下次用到的时间,就可以快速找到我,非常感谢您的支持!!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表