基本流程
1、使用petalinux工具生成u-boot.bin文件以及根文件,u-boot.bin下载到QSPI,内核,设备树以及根文件下载到EMMC(使用petalinux生成image.ub我感觉有点麻烦,我用的是根据正点原子手册移植的内核)。
2,u-boot.bin烧录到qspi。
2、通过tftpboot以及nfs的方式启动linux。
3、在linux下格式化emmc。
4、修改linux启动方式。
5、启动linux。
一 u-boot以及根文件生成
1.1 配置petalinux工程
petalinux安装以及工程创建,均参考正点原子手册就可。
因为要从QSPI Flash启动系统,所以需要把BOOT.BIN放到QSPI Flash里。把Subsystem AUTO Hardware Settings➡Advanced bootable images➡storage Settings boot image settings的image storage media改成primary flash。串口记得改成串口0。
Linux内核和根文件系统要放在eMMC里,eMMC接在ZYNQ的SD1接口上,把Subsystem AUTO Hardware Settings➡SD/SDIO Settings的Primary SD/SDIO设置成ps7_sd_1(这里有Bug,后面改)。此时,根文件系统类型配置成INITRAMFS,因为后面需要先从内存启动Linux系统。其他保持默认设置。(这一段参考了其他博主的教程,我后续没有使用petalinux生成的image.ub 这步设置不需要)。
1.2 配置Linux根文件系统
执行以下命令配置根文件系统 petalinux-config -c rootfs
需要新增mkfs.ext4命令,后续用于格式化eMMC分区。Filesystem Packages➡base➡e2fsprogs的e2fsprogs和e2fsprogs-mke2fs使能。其他保持默认设置。
1.3 编译petalinux工程
petalinux-build
1.4 制作BOOT.BIN
1.5 解压根文件
将petalinux生成的根文件压缩包解压到nfs文件夹内,第一次加载linux,使用nfs挂载根文件的方式启动。
二 内核及设备数生成
根据正点原子内核移植篇进行操作即可。
注意:按照正点原子手册操作时,需要在设备树里面添加sd1的信息,否则进linux后找不到emmc。
添加后重新生成设备树即可。
三 初次启动Linux
3.1 修改参数
首先修改uboot的ip地址,这一步根据正点原子手册指导的步骤即可
以下参数可以做参考,我防止遗忘,把配置贴在这里
setenv bootargs ‘console=ttyPS0,115200 root=/dev/nfs rw nfsroot=192.168.3.30:/home/fury/zynq/linux/nfs/rootfs ip=192.168.3.31:192.168. 3.30:192.168.1.1:255.255.255.0::eth0:off’
setenv bootcmd 'tftpboot 8000 zImage; tftpboot 103cdda8 zynq-alientek.dtb;bootz 8000 - 103cdda8'
saveenv
3.2 格式化emmc
参考了正点原子手册操作流程,在嵌入式开发v1.5.2的6.2.10章节
3.3 拷贝根文件
cd /run/media/mmcblk1p2 (使用df -h指令,看一下自己的挂载路径)
tftp -r /rootfs.tar.gz -l ./rootfs.tar.gz -g 192.168.3.30:69
tar -zxvpf rootfs.tar.gz
rm -rf rootfs.tar.gz
四 内核以及设备树加载到emmc
依然参考正点原子手册uboot篇
举个栗子
五 修改启动参数
setenv bootcmd 'fatload mmc 1:1 8000 zImage; fatload mmc 1:1 103cdda8 zynq-alientek.dtb;bootz 8000 - 103cdda8'
setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk1p2 rootwait rw'
saveenv
步骤其实很简单,由于本人也是刚刚开始学习linux遂将zynq linux使用EMMC启动的操作流程记录下来,参考了好几位博主的文章,再次感谢。