zynq7000从emmc启动,使用ext4文件系统

文章目录硬件配置及代码存放说明操作步骤硬件配置及代码存放说明QSPI连接一个16MB的FlashSD1接口接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
摘要由CSDN通过智能技术生成

硬件配置及代码存放说明

  • QSPI连接一个16MB的Flash
  • SD1接口接emmc
  • 将zynq_fsbl.elf+fpga.bit +u-boot.elf组成的BOOT.BIN放在QSPI flash中
  • 将emmc分成两个区,第一个区FAT32格式,用来存放iamge.ub。第二个区ext4格式,用来存放文件系统。

操作步骤

  1. 创建工程

    petalinux-create --type project --template zynq --name emmc_prj

  2. 添加硬件平台描述信息
    petalinux-config --get-hw-description ./xsa

  3. 配置从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) 
  1. 先配置一个initramfs的系统,用来给emmc分区。
    petalinux-config -> Image Packaging Configuration -> Root filesystem type (INITRAMFS)
    在这里插入图片描述

  2. 编译
    petalinux-build

  3. 生成BOOT.BIN
    petalinux-package --boot --fsbl --u-boot --fpga --force

  4. 将BOOT.BIN下载到QSPI Flash中
    我是利用vitis软件新建一个工程,然后xillinx -> program flash时将BOOT.BIN替换成我们上面一步生成的。
    在这里插入图片描述

  5. 进入uboot,使用tftpboot命令加载initramfs格式的文件系统到内存中,然后从内存启动。
    在这里插入图片描述

  6. 删除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 
  • 4
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Zynq是一款由Xilinx公司推出的高度集成的可编程系统芯片,它融合了双核ARM Cortex-A9处理器和FPGA可编程逻辑单元。在使用Zynq进行系统开发时,我们可以选择将系统引导(启动)方式设置为从EMMC(嵌入式多媒体卡)启动EMMC是一种高集成度的存储设备,类似于SD卡,通常用于嵌入式系统中。在Zynq中,EMMC可以作为启动设备,用于存储和加载引导镜像(Boot Image)。 首先,我们需要将引导镜像生成为可以在EMMC上加载的格式,通常为BOOT.BIN文件。BOOT.BIN文件包含了FSBL(First Stage Boot Loader)和bitstream文件。FSBL是Zynq启动过程中的第一阶段引导加载程序,它负责初始化硬件、加载FPGA bitstream以及启动处理器核心。 然后,通过将该BOOT.BIN文件写入EMMC存储设备中,可以利用Zynq启动ROM程序来从EMMC引导系统启动ROM程序会首先加载FSBL到处理器的内存中运行,并由FSBL继续完成引导过程。 在FSBL的引导过程中,它会首先加载FPGA的bitstream,通过配置FPGA可编程逻辑。接着,FSBL会初始化处理器并加载U-Boot引导加载程序。U-Boot负责加载Linux内核映像和根文件系统到内存中,并将控制权转交给Linux内核。 通过这种方式,ZynqEMMC启动系统能够快速、稳定地加载并运行复杂的嵌入式应用程序。同时,通过调整引导镜像的配置,还可以轻松实现其他启动方式,如从SD卡、网络等启动

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jimbo_Zhang

有钱的捧个钱场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值