首页
下载应用
提交文章
关于我们
🔥 热搜 🔥
1
上海
2
习近平
3
新疆
4
鄂州父女瓜
5
乌鲁木齐
6
疫情
7
H工口小学生赛高
8
习明泽
9
芊川一笑图包
10
印尼排华
分类
社会
娱乐
国际
人权
科技
经济
其它
首页
下载应用
提交文章
关于我们
🔥
热搜
🔥
1
上海
2
习近平
3
新疆
4
鄂州父女瓜
5
乌鲁木齐
6
疫情
7
H工口小学生赛高
8
习明泽
9
芊川一笑图包
10
印尼排华
分类
社会
娱乐
国际
人权
科技
经济
其它
付鹏 —— 《2024年年终回顾和2025年展望——对冲风险VS软着陆》
套牢是个好事,没被套牢的玩家容易跑
湖南60岁富婆沉迷打牌,输掉1个多亿,丈夫还清后离婚,她却说:你这是阴谋
广东女子不想上班坐街边乞讨,因长相好看被路人投喂,知情人:又懒又馋!!
炸裂大瓜!九比童“厉害”,女网红再嘲童锦程!哲家财团豪刷柚柚CC!
生成图片,分享到微信朋友圈
查看原文
其他
一文搞懂Zynq的两种启动模式!好文收藏
嵌入式ARM
2021-01-31
Zynq-7000AP SOC器件有效利用了片上CPU来帮忙配置,
在没有外部JTAG的情况下,处理系统(PS)与可编程逻辑(PL)都必须依靠PS来完成芯片的初始化配置。
ZYNQ的两种启动模式:
从BootROM主动启动,从JTAG被动启动。
ZYNQ的启动配置分多级进行的。
配置至少需要两步,但通常按如下三个阶段进行:
阶段0:
该阶段简称为BootROM,控制着整个芯片的初始化过程。
放在BootROM中的代码是固化的,不可修改的,处理器核在上电或者热启动时自动执行这部分代码。
阶段1:
该阶段的启动加载器(FSBL)也可以由用户代码控制。
阶段2:
这阶段通常可以是用户的PS端的设计代码,当然也可以是第二阶段的启动加载器(SSBL),这个阶段可以完全由用户控制,是可选的。
ZYNQ外部启动条件:
1、 电源要求:
在阶段0 BootROM状态时,PS与PL的电源要求如表所示:
在阶段1 FSBL时,PS与PL都是必须上电的,因为PL将在这个阶段进行配置,而PS将负责配置的过程。
2、 时钟要求:
必须满足时钟 .
3、 复位要求:
主要有两个外部复位源将影响BootROM的执行。
(电源复位信号,系统复位信号)
4、 启动引脚设置:
需要配置好引脚才能正确启动平台。
BootROM
1、 BootROM的作用:
上电复位以后,PS端即开始进行配置。
在不使用JTAG的情况下,ARM将在片上的BootROM中开始执行代码。
BootROM中的代码对NAND、NOR、Quad-SPI、SD与PCAP的基本外设控制器进行初始化,使得ARM核可以访问、使用这些外设。
而DDR等其他外设将在阶段1或者之后进行初始化。
BootROM中的代码还负责加载阶段1的启动镜像。
PS的启动源是由外部模式引脚的高低电平来选择的,也就是指BootROM将根据外部配置引脚的设置来从不同的外部存储中加载阶段1的启动镜像,当然也支持在线性Flash上直接运行。
需要注意的是PL的配置并不在BootROM中完成,BootROM只为配置PL做好准备。
FSBL
1、 FSBL是在BootROM之后启动的引导程序。
由BootROM加载到OCM或者直接在线性Flash上运行。
FSBL主要完成以下工作:
1) 根据XPS中的配置,完成PS端的初始化。
2) 使用比特流文件对PL进行配置 .
3) 加载第二阶段引导程序(SSBL)或者裸跑程序(直接在ARM上运行无操作系统程序)到内存空间。
4) 跳转执行SSBL或者裸跑程序。
注意:
FSBL在跳转到SSBL或者裸跑程序前,并不使能MMU。
这是因为许多操作系统,例如linux假设MMU在启动时是禁用的。
FSBL启动流程:
需要注意的是在FSBL阶段PL的配置不是必须的,可以将zynq平台当做两个ARM核使用。
另外需要注意的是:
PL的比特流文件、SSBL、裸跑的应用程序等都必须组织成Flash分区镜像。
FSBL将会遍历分区头表来寻找比特流文件、SSBL、裸跑程序所在的位置,然后进行加载或配置。
SDK提供了生成flash分区镜像的工具。
SSBL 第二阶段的启动加载(SSBL)是可选的。
SSBL的引导程序称为BootLoader。
对于运行在zynq平台的linux系统而言,U-Boot就是SSBL。
在zynq平台中,FSBL帮助我们加载U-Boot到ARM来运行。
U-Boot拥有非常强大的功能,提供了许多用户指令、读写内存、flash、USB设备。
U-Boot会帮助我们完成linux内核启动之前所必须的硬件初始化,例如串口、DDR控制器等。
Linux启动过程:
嵌入式linux从软件层面考虑可以分为以下四个部分:
引导程序(BootLoader)、linux内核、文件系统、应用程序。
Zynq平台中的嵌入式linux就是U-Boot,FSBL帮助我们引导U-Boot到内存中。
U-Boot将为linux内核初始化内存和必要的外设,设置好启动参数。在zynq平台中,
采用设备树来传递驱动部分的参数,所以U-Boot还将为内核拷贝设备树镜像文件到内存中。
由U-Boot传递给内核的启动参数中通常包含了设备树的地址,文件系统的类型、地址等信息。而后U-Boot将把系统控制权交给linux内核。
当linux内核拥有系统的控制权后,将先进行初始化,建议起内核的运行环境。
Linux内核在完成了虚拟地址到物理地址映射后,还有就是驱动设备初始化与挂载。
在zynq平台中,采用设备树的方式传递设备驱动的信息,如果有为PL中的IP核编写了驱动程序,也可以使用模块化的方式,待linux启动后再进行挂载。
Linux内核将根据U-Boot传递过来的参数信息选择挂载文件系统的格式与挂载点。
最后linux内核将运行init()函数,这是内核引导的终点,也是系统所有进程的起点。
应用程序都是放在文件系统中。
您可能也对以下帖子感兴趣
{{{title}}}
文章有问题?点此查看未经处理的缓存