论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
运维.售后
›
运维.售后
›
zynq/zynqMP启动模式总结:FLASH+emmc启动/petalinux烧 ...
zynq/zynqMP启动模式总结:FLASH+emmc启动/petalinux烧写速度最快的启动方 ...
三尺非寒
论坛元老
|
2024-12-12 20:39:29
|
显示全部楼层
|
阅读模式
楼主
主题
1990
|
帖子
1990
|
积分
5970
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
因客户要求
zynq开辟板只有FLASH和emmc
,然而还得在petalinux进行开辟体系,因FLASH大小有限,所以没办法把内核和根文件地址全部存储到FLASH中,于是想配合emmc进行启动,但是在网上搜索的大多都是
只把根文件体系放到了emmc
,然后把内核和BOOT.bin放到了FLASH,但是烧写FLASH真的很费时间,所以就想出了一个新的办法(被逼的):
启动文件分配:
存储地区
分区
存储文件
FLASH
-
BOOT【fsbl、u-boot、bit(可选)】
EMMC
FAT32
image.ub【Image】
Ext4
rootfs.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
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(可选))
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启动的指令:
查看当前的启动变量:
print bootcmd
复制代码
如下所示,在bootcmd的下令中我们使用的默认的distro_bootcmd
查看iamge.ub文件
ls emm 1:1
复制代码
如下所示,即我把image.ub存放到了emmc1的第一个分区
查看rootfs文件
ls emm 1:2
复制代码
如下所示,即我把根文件体系放到了emmc1的第二个分区
挂载emmc1
mmc dev 1
复制代码
修改启动内核环境变量
setenv run_emmc_boot "mmc dev 1:1 && load mmc 1:1 0x10000000 /image.ub && bootm 0x10000000"
复制代码
将bootcmd的下令修改成run_emmc_boot
setenv bootcmd "run run_emmc_boot"
复制代码
生存环境变量
saveenv
复制代码
重启开辟板即可查看到,从emmc中读取iamge.ub
然后就是进行读取根文件体系,直至进入到petalinux体系
大功告成!!!(
开香槟!!
)
更多关于zynq和zynqMP的标题,可以批评留言
如果感觉文章对您有用,麻烦三连支持一下,方便下次用到的时间,就可以快速找到我,非常感谢您的支持!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
三尺非寒
论坛元老
这个人很懒什么都没写!
楼主热帖
Centos7安装Mysql5.7(超详细版) ...
可观测性之两大误区
微信小程序--点餐系统(本地服务器+源 ...
小白也可以轻松破解被加密的ZIP口令啦 ...
Java多线程超级详解(只看这篇就够了) ...
GPRS与4G网络:技术差异与应用选择 ...
如何获取Class对象呢?
Docker 基础 - 1
快速入门python看过的一些资料 ...
Spark简单介绍,Windows下安装Scala+Ha ...
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
Oracle
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表