前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zynq中程序存储位置和设置方法

Zynq中程序存储位置和设置方法

作者头像
用户9736681
发布2023-09-01 13:27:46
6620
发布2023-09-01 13:27:46
举报
文章被收录于专栏:嵌入式随笔

Zynq中存储程序的地方有QSPI Flash,SD卡,EMMC。

Zynq的程序分为三部分,上电启动的引导程序(fsbl),FPGA的程序,arm程序。这里以arm程序存储位置为主进行讨论。

1 ARM为裸机程序

裸机程序比较小,可以将全部程序(fsbl,FPGA的程序,arm程序)一起存储在QSPI Flash,SD卡,EMMC中的任何一个位置。

1.1 固化在QSPI FLASH

使用JTAG和sdk固化。

或者先运行程序,然后通过程序将可执行文件写入到QSPI Flash中,然后将启动方式设置为QSPI Flash启动,下次启动就可以从QSPI Flash启动了。

1.2 固化在SD卡

通过读卡器将可执行文件复制进SD卡,将启动方式设置为SD卡启动,下次启动就可以从SD卡启动了。

1.3 固化在EMMC中

先运行sd卡中的程序(或者通过jtag运行程序),然后通过程序将可执行文件写入到emmc中,然后将启动方式设置为emmc启动,下次启动就可以从emmc启动了。

2 ARM为运行linux的程序

linux跟文件系统一般比较大,全部固化在QSPI Flash中装不下。可以在QSPI Flash中固化一部分。

2.1 部分固化在QSPI FLASH中

可以在QSPI Flash中固化 fsbl+uboot+FPGA的程序+linux内核+设备树,将根文件系统存储在emmc中。

fsbl+uboot本身已经可以运行,uboot运行后会将其余部分拷贝到内存继续运行。以下是uboot中的zynq-common.h中的一部分程序。

代码语言:javascript
复制
 "qspiboot=echo Copying Linux from QSPI flash to RAM... && " \
 "sf probe 0 0 0 && " \
 "sf read ${bitstream_load_address} 0x120000 ${bitstream_size} && " \
 "fpga loadb 0 ${bitstream_load_address} ${bitstream_size} && " \
 "sf read ${kernel_load_address} 0x540000 ${kernel_size} && " \
 "sf read ${devicetree_load_address} 0x520000 ${devicetree_size} && " \
 "bootz ${kernel_load_address} - ${devicetree_load_address}\0" \

第三行是将fpga文件拷贝到内存中,第四行是处理内存中的fpga程序,第五行是将linux内核文件拷贝到内存中,第六行是将设备树文件拷贝到内存中。然后开始运行内核。内核运行后会去运行emmc中的根文件系统。

可以看出 fsbl+uboot+FPGA的程序和裸机程序是一样的,剩下的就是uboot执行程序的一部分。如果linux内核+设备树存储在别的地方,只需要将上述程序修改为从相应地方拷贝到内存就可以。

固化的话,可以在sd卡中先运行程序,然后按照设定将QSPI Flash分区并将对应的执行程序复制进QSPI Flash中,将emmc格式化为ext4文件系统在将跟文件系统复制进emmc中。再将启动方式设置为QSPI Flash启动,下次启动就可以从qspi启动了。

Qspi存储程序的分区大小可以自定义但是要能存的下程序,比如fpga程序3Mb不能只给个2Mb的分区。

2.2 固化在SD卡

通过读卡器将可执行文件复制进SD卡,将启动方式设置为SD卡启动,下次启动就可以从SD卡启动了。

2.3 固化在EMMC中

先运行sd卡中的程序,然后通过程序将可执行文件写入到emmc中,然后将启动方式设置为emmc启动,下次启动就可以从emmc启动了。

3 区别与联系

可以看出带Linux的就是多了一段跳转,固化在QSPI Flash中的时候由于全部程序比较大需要分散放。fsbl+第一段ARM程序需要在一起并且名字是固定的为BOOT.BIN(这是芯片内部预置程序决定的)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 ARM为裸机程序
    • 1.1 固化在QSPI FLASH
      • 1.2 固化在SD卡
        • 1.3 固化在EMMC中
        • 2 ARM为运行linux的程序
          • 2.1 部分固化在QSPI FLASH中
            • 2.2 固化在SD卡
              • 2.3 固化在EMMC中
              • 3 区别与联系
              相关产品与服务
              对象存储
              对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档