打印

[FPGA] 玩转Zynq连载1——Zynq的linux启动过程

[复制链接]
137|4
跳转到指定楼层
楼主

1概述
         简单的,以ug585中的一张图来看,从大的方面说,Zynq中liunx的启动可以分为硬件初始化和软件启动。而硬件初始化,分别是上电(POR)、所有寄存器复位和Zynq芯片的启动模式引脚采样、外设初始化禁能以及PLL的使能。而软件启动,分为3个阶段,分别是stage 0 - BootROM、stage 1 - FSBL和stage 2 - 操作系统启动。

         硬件初始化相对简单明了,不多费口舌。下面我们看看软件启动过程。


2 BootROM阶段
         BootROM是Zynq固化好的,换句话说,BootROM一定在Zynq芯片内部。虽然没有看到哪个xilinx官方文档很明确的提到BootROM存放在哪个位置,但没关系,这并不重要。从功能上看,BootROM所实现的功能,如图红色箭头所示,从SDIO外设所连接的外部SD卡(假设我们的FSBL和linux内核都在SD中)读取的FSBL代码,通过中央互联单元(Central Interconnect)和片内存储器互联单元(OCM Interconnect)送到256KByte的片内存储器中被处理器(Application Processor Unit)执行。


3 FSBL阶段
         如图所示,stage 1的FSBL所做的最重要的事情,就是将下一个阶段stage 2的代码(Liunx的uboot代码)从SD卡,经过SDIO外设接口、片内存储器互联单元(OCM Interconnect)和DDR3存储控制器(DDR3 Memory Interface),送到外部的DDR3芯片中运行起来。


4 SSBL阶段
         stage 2可以直接运行基于BSP的裸机程序(不带任何操作系统),也可以读取操作系统的启动引导程序(Second Stage Boot Loader, SSBL),对于linux操行系统而言,这个阶段运行的就是uboot。

5 SD卡启动文件解析
         接下来我们可以通过用于zynq运行linux的SD卡来理解接下来的stage1和stage 2的启动过程。
         在Ubuntu中,我们打开SD卡,可以看到part(BOOT)0和part1(ROOTFS)两个分区。如图所示,part1(ROOTFS)类似windows中的C盘,一些常见的软件工具可以存储在这里。

         而part0(BOOT)则通常最少有如下3个文件。

         这3个文件的基本功能如下所述。主要看BOOT.bin这个文件,它包含了启动过程stage 1的FSBL、stage 2的uboot和PL配置的bit流,而当linux的uboot起来以后,它随后就会去加载uImage,将linux内核在外部存储器如DDR3上运行起来。


参考文档:
         ug585-Zynq-7000-TRM.pdf的Chapter 6:Boot and Configuration
         ug821-zynq-7000-swdev.pdf的Chapter 3:Boot and Configuration
         《Xilinx Zynq Soc与嵌入式Linux设计实战指南》第3章


使用特权

评论回复
沙发
 楼主 | 2019-11-26 10:41 | 只看该作者
本帖最后由 ove学习使我快乐 于 2019-11-26 10:44 编辑

学习使我快乐,努力发帖,升级之后就可以放网盘链接啦~

使用特权

评论回复
板凳
| 2019-11-26 23:05 | 只看该作者
带着我吧  跟你一起学习

使用特权

评论回复
地板
| 2019-11-26 23:19 | 只看该作者
Xilinx Zynq Soc与嵌入式Linux设计实战指南  这个有电子版的吗

使用特权

评论回复
5
| 2019-11-27 18:01 | 只看该作者
挺好的。petalinux也是我一直想学的

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表
快3注册邀请码tt 巴林右旗| 贡嘎县| 南皮县| 永寿县| 齐河县| 海门市| 定南县| 府谷县| 南通市| 文登市| 盈江县| 新竹市| 丰城市| 余干县| 漳州市| 宿州市| 青阳县| 南涧| 凤山市| 田东县| 丰顺县| 无锡市| 通化县| 花莲市| 上饶县| 永平县| 集安市| 安化县| 永清县| 句容市| 武安市| 章丘市| 兴宁市| 荥经县| 侯马市| 武城县| 辉县市| 罗定市| 龙游县| 图们市| 青浦区|