文章目录
硬件配置及代码存放说明
- QSPI连接一个16MB的Flash
- SD1接口接emmc
- 将zynq_fsbl.elf+fpga.bit +u-boot.elf组成的BOOT.BIN放在QSPI flash中
- 将emmc分成两个区,第一个区FAT32格式,用来存放iamge.ub。第二个区ext4格式,用来存放文件系统。
操作步骤
-
创建工程
petalinux-create --type project --template zynq --name emmc_prj
-
添加硬件平台描述信息
petalinux-config --get-hw-description ./xsa
-
配置从emmc加载image
petalinux-config -> sybsystem AUTO Hardware Settings -> Advanced bootable images storage Settings
boot image settings ---> image storage media (primary flash) //uboot放在QSPI Flash中
u-boot env partition settings ---> image storage media (primary flash) //环境变量放在QSPI Flash中
kernel image settings ---> image storage media (primary sd) //image放在emmc中
jffs2 rootfs image settings ---> image storage media (primary flash)
dtb image settings ---> image storage media (from boot image)
-
先配置一个initramfs的系统,用来给emmc分区。
petalinux-config -> Image Packaging Configuration -> Root filesystem type (INITRAMFS)
-
编译
petalinux-build
-
生成BOOT.BIN
petalinux-package --boot --fsbl --u-boot --fpga --force
-
将BOOT.BIN下载到QSPI Flash中
我是利用vitis软件新建一个工程,然后xillinx -> program flash时将BOOT.BIN替换成我们上面一步生成的。
-
进入uboot,使用tftpboot命令加载initramfs格式的文件系统到内存中,然后从内存启动。
-
删除emmc里的所有分区,然后重新创建两个分区。
第一个分区是primary分区,FAT32格式。
第二个分区也是primary分区,EXT4格式。
/* 查看emmc设备 */
root@2-emmc:~# ls /dev
...
mmcblk0 ram13 tty2 tty47 vcsu1
mmcblk0boot0 ram14 tty20 tty48 vga_arbiter
mmcblk0boot1 ram15 tty21 tty49 watchdog
mmcblk0p1 ram2 tty22 tty5 watchdog0
mmcblk0p2 ram3 tty23 tty50 zero
/* 查看emmc当前的分区是否有挂载点 */
root@2-emmc:~# mount
rootfs on / type rootfs (rw,size=503156k,nr_inodes=125789)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs