前言
板子上使用的是8G的emmc连接到sd1,首先要对emmc格式化,然后在修改petalinux kernel的保存位置,之后在生成boot.bin然后修改环境变量就可以了。
Step1: 格式化emmc
查看是否识别到当前的emmc,可以看到mmcblk1说明识别到了emmc
ls /dev
格式化emmc
mkdosfs -F 32 /dev/mmcblk1
查看所有磁盘的状态
df -h
查看所有磁盘的状态
Step2:导入内核
将在petalinux工程中生成的image.ub拷贝到U盘中
将USB插入到USB口,之后看到加载U盘,将image.ub拷贝到emmc中:
cp /run/media/sda1/image.ub /run/media/mmcblk1
注:如果在media中没有挂载sda1或者mmcblk1,就执行手动挂载
Step3:修改boot环境变量
重启,在执行到U-BOOT倒计时的时候按任意键暂停
reboot
查看当前的环境变量
printenv
如下所示,在bootcmd的命令中我们使用的默认的default_bootcmd,接下来我们修改这个默认的启动方式,修改成我们需要的emmc的启动方式。
执行mmc dev 0:如果显示没有设备在0的接口上,就执行mmc dev 1,显示如下:
mmc dev 0
在mmc的1(part0)的端口上有device,确定了在哪个端口上有emmc之后,就可以修改环境变量了。
setenv my_emmc_boot "mmc dev 1:0 && load mmc 1:0 0x10000000 /image.ub && bootm 0x10000000"
再执行printenv,查看时候多了我们设置的这个my_emmc_boot这一条
这里注意几点,首先mmc dev 这个值是之前确定的那个端口,如果是0就应该是0,如果是1就应该是1。后面的load mmc 1:0 0x10000000 /image.ub这个语句表示从mmc设备1的0分区中将image.ub拷贝到ddr空间的0x10000000的位置。最后的bootm 0x10000000就是在这个位置启动内核。
修改完成后将bootcmd的命令修改成my_emmc_boot
setenv bootcmd "run my_emmc_boot"
保存环境变量
saveenv
然后重启机器就可以通过emmc中的image.ub运行内核程序了。
重启之后看到打印:
说明正在从emmc中读取内核,修改成功。
联系方式:839089604@qq.com