ZYNQ上电程序自启动

ZYNQ配置时默认为将内核镜像image,设备树dtb,rootfs打包到image.ub文件中,启动时先读取BOOT.BIN启动uboot,再读取image.ub到0x2000000地址,并bootm 0x2000000启动内核挂载根文件系统。

fatload mmc 0:1 0x2000000 image.ub
bootm 0x2000000

重新配置编译

这些指令可以通过bootcmd设置。
此时挂载的根文件系统无法直接修改,只能重新配置修改源程序重新生成rootfs并打包到image.ub中。

如果想要设置程序自启动,就需要在rootfs系统中修改启动文件,而不是打包在一起。
对工程重新配置 petalinux-config
Subsystem AUTO Hardware Settings —>
Advanced bootable images storage Settings —>
dtb image settings —>
image storage media (primary sd) —> //选择sd或者ext4

Image Packaging Configuration —>
Root filesystem type (SD card) //选择sd
(/dev/mmcblk0p2) Device node of SD device //device node mmcblk0p2

DTG Settings —>
[·]generate boot args automatically //使能
[·] enable kernel earlyprintk //使能
console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait //bootargs
重新编译 petalinux-build
生成的image.ub 不包括rootfs,
可以将rootfs单独解压到SD卡的EXT4 分区

sudo tar -xzf /opt/pkg/petalinux/2018.2/plnx/images/linux/rootfs.tar.gz -C /media/xxx/ROOTFS/

sd卡分区方法

配置u-boot指令

将BOOT.BIN和zimage 、system.dtb 或 将BOOT.BIN 和 image.ub拷贝到SD卡fat32分区,
此时bootargs默认从mmcblk0p2挂载rootfs,
启动:

fatload mmc 0:1 2000000 zImage
fatload mmc 0:1 4000000 system.dtb
bootz 2000000 - 4000000

或者

fatload mmc 0:1 2000000 image.ub
bootm 2000000

也可以设置bootcmd和default_bootcmd

setenv default_bootcmd 'if mmcinfo; then run uenvboot; echo Copying Linux from SD to RAM...&& fatload mmc 0:1 2000000 zImage && fatload mmc 0:1 4000000 system.dtb && bootz 2000000 - 4000000; fi'

setenv default_bootcmd 'if mmcinfo; then run uenvboot; echo Copying Linux from SD to RAM...&& fatload mmc 0:1 2000000 image.ub && bootm 2000000; fi'

修改rootfs

成功启动后,编写自己的可执行文件,可以自己选定位置。
cd /home
touch mytest
vi mytest

#!/bin/sh
echo "Hello petalinux"

给可执行权限,chmod 777 mytest
cd /etc/rc5.d
ln -s /home/mytest S90mytest 创立软链接,S90是启动顺序,重新上电后将自动执行mytest。

ZYNQ MPSOC

当选用ZYNQ MPSOC时,配置过程一样,只是内核镜像为Image,启动用booti

fatload mmc 0:1 2000000 Image
fatload mmc 0:1 4000000 system.dtb
booti 2000000 - 4000000

如果挂载rootfs时报错,SD卡为(ro)只读
mmcblk0: mmc0:0001 SD 58.2 GiB (ro)

VFS: Cannot open root device “mmcblk0p2” or unknown-block(179,2): error -30

VFS: Unable to mount root fs on unknown-block(179,2)
此时可能是硬件问题,可以修改bootargs,去掉 rw ,修改根文件系统可以在虚拟机上进行。
setenv bootargs ‘earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rootwait’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值