硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1687|回复: 3
收起左侧

想写一个zynq BootLoader

[复制链接]

28

主题

274

回帖

358

积分

高级会员

积分
358
发表于 2021-12-29 10:32:12 | 显示全部楼层 |阅读模式
本帖最后由 suozhang 于 2021-12-29 11:21 编辑

想挖个坑,不知什么时候能完成!
实现功能类似 STM32的BootLoader, 运行 threadx SMP 系统,包含 fileX 文件系统,支持 从网络接口 更新 APP 文件,以及能正确加载 APP 到 DRAM 中运行。

UG585 ch.6 中描述, ZYNQ 启动流程如下:
zynq 启动流程图.png
Stage 0 : BootROM 程序启动,这段程序固化在芯片内部,无法修改,内部执行程序流程如下:
这段程序 有个博客写的非常好,FPGA - Zynq - 加载 - BootRom_老王的博客-CSDN博客_bootrom
zynq BootROM 程序运行流程图.png
大致总结 bootROM 程序干的事情, 先检测 IO 配置, 从 JTAG 或者 flash device 设备启动,例子 比如从 QSPI 启动 ,会 直接搜索 整个 QSPI flash 芯片 寻找 “BootROM Header” ,然后加载 “BootROM Header” 存储的“User code image”到 OCM (芯片自带的RAM,大小 256KB )。这里 的 “User code image”,就是我们要写的 BootLoader

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106840
QQ
发表于 2021-12-29 10:38:22 | 显示全部楼层
做个U盘拖拽升级,更方便些。
回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
 楼主| 发表于 2022-1-5 16:39:33 | 显示全部楼层


ZYNQ 程序 固化到 QSPI flash  流程

1、可以在 现有的 “hello word” 工程上, 创建一个  FSBL 工程, file → new → application project  , 选择 FSBL 模板 即可。
2、利用 xilinx SDK 的 create boot image 工具 ,把  fSBL 和 hello word  产生 的两个 .elf 文件 以及 bit 文件,添加 “BootROM Header” , 打包成一个 boot.bin 文件 ,
3、利用 xilinx SDK 的 program flash memory 工具, 把 boot,bin 文件 烧录到  SPI flash 中
4、重启设备,BootROM 程序启动,搜索到 含有 “BootROM Header”boot.bin 文件,加载启动

ZYNQ动态加载程序,方法主要参考UG821,常见的方法使用Multiboot。

上面这个链接,大概意思是,在 FSBL 工程里,根据 需要 更改 Multiboot寄存器(地址0xF800702C)写便偏移地址,这样 BootROM 程序 就会从不同的 偏移地址进行 搜索带有 “BootROM Header” 文件,加载运行, 即 你要准备 两个 boot.bin 文件,烧录到 QSPI 不同的位置, 实现 A/B 程序切换, 即实现 程序更新 。






回复

使用道具 举报

19

主题

62

回帖

119

积分

初级会员

积分
119
发表于 2022-1-5 20:01:17 | 显示全部楼层
直接拿官方的FSBL来修改就好了吧,大部分需要的功能其实里面都有,更复杂的功能还是加载uboot后处理比较方便
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-7 04:12 , Processed in 0.159667 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表