1、经过几天的努力看懂了zedboard的部分启动过程
	陆书与何宾老师的书上都说到了BootRom , 这个是被称为第0阶段启动引导,这阶段的代码在上电或者热复位时执行,启动代码不可更改,这是比我们所说的u-boot还要领先启动一部分代码。然后这部分第一阶段启动,也就是FSBL,这个文件在zedboar中也就是我们固化是需要生成.fsbl文件。第三阶段是我们的SSBL(second stage boot loder),也就是u-boot,如果是裸机程序那么就是在SDK中写的应用程序的对应的.elf文件。有了这三部分的启动过程才能完整的启动zedboard。

BootRom

BootRom 只包含了初始化NOR ,NAND,SD,Quad-SPI,SD等的初始化,其他外设的初始化放在FSBL中。 BOOTRom通过物理IO-MIO[2-8]确定我们的启动模式,也就是zedboard上的JP7、9、9、10,官方给的linux是从SD卡中启动的。所以MIO4-5要短接到3.3V上。


FSBL

FSBL就是我们在固化是要新建的一个.ELF文件,不是我们写裸跑程序的那个.elf文件。在FSBL中我们可以看到对许多外设的初始化,其中还有一个很重要的就是寻找BOOT.BIN文件,在main函数中我们可以找到这段话,在读取BOOT.BIN后才是真正开始FSBL,我猜测之前操作是BOOTROM与FSBL交接的工作,不知道对不对,欢迎大家指正。至于我们可不可以修改这个fsbl,怎么修改,我还在验证中。
if (BootModeRegister == SD_MODE) {

fsbl_printf(DEBUG_GENERAL,"Boot mode is SD\r\n");

/*

* SD initialization returns file open error or success

*/

Status = InitSD("BOOT.BIN");

if (Status != XST_SUCCESS) {

fsbl_printf(DEBUG_GENERAL,"SD_INIT_FAIL\r\n");

OutputStatus(SD_INIT_FAIL);

FsblFallback();

}

MoveImage = SDAccess;

fsbl_printf(DEBUG_INFO,"SD Init Done \r\n");

} else

SSBL

    SSBL就是我们的u-boot这部分是完全可以根据我们需要修改的,可以在digilent官网上下载相关的源码,后面启动的事和纯arm的启动我认为是一样的 ,由于没有arm开发经验,不能乱说。当然SSBL与FSBL还有我们PL端的system.bit是一起通过SDK合并生成BOOT.BIN。所以在这里我就有一个疑问,既然BOOT.BIN是一个文件,那么FSBL里的程序为什么还会去读BOOT.BIN呢,难道是BootRom做的。

zedboard启动过程分析的更多相关文章

  1. ASP.Net Core MVC6 RC2 启动过程分析[偏源码分析]

    入口程序 如果做过Web之外开发的人,应该记得这个是标准的Console或者Winform的入口.为什么会这样呢? .NET Web Development and Tools Blog ASP.NE ...

  2. 开机SystemServer到ActivityManagerService启动过程分析

    开机SystemServer到ActivityManagerService启动过程 一 从Systemserver到AMS zygote-> systemserver:java入层口: /** ...

  3. Neutron分析(2)——neutron-server启动过程分析

    neutron-server启动过程分析 1. /etc/init.d/neutron-server DAEMON=/usr/bin/neutron-server DAEMON_ARGS=" ...

  4. linux视频学习7(ssh, linux启动过程分析,加解压缩,java网络编程)

    回顾数据库mysql的备份和恢复: show databases; user spdb1; show tables; 在mysql/bin目录下 执行备份: ./mysqldump -u root - ...

  5. Activity启动过程分析

    Android的四大组件中除了BroadCastReceiver以外,其他三种组件都必须在AndroidManifest中注册,对于BroadCastReceiver来说,它既可以在AndroidMa ...

  6. Spark Streaming应用启动过程分析

    本文为SparkStreaming源码剖析的第三篇,主要分析SparkStreaming启动过程. 在调用StreamingContext.start方法后,进入JobScheduler.start方 ...

  7. ActivityManagerService启动过程分析

    之前讲Android的View的绘制原理和流程的时候,讲到过在Android调用setContentView之后,Android调用了一个prepreTravle的方法,这里面就提到了Activity ...

  8. Disconf源码分析之启动过程分析下(2)

    接上文,下面是第二次扫描的XML配置. <bean id="disconfMgrBean2" class="com.baidu.disconf.client.Dis ...

  9. Service启动过程分析

    Service是一种计算型组件,用于在后台执行一系列的计算任务.由于工作在后台,因此用户是无法直接感知到它的存在.Service组件和Activity组件略有不同,Activity组件只有一种运行模式 ...

随机推荐

  1. sql中的or的用法说明

    数据库里a  c 0  10  20  31  41  51  6这样执行完这语句之后查出来有几条语句? 答案是3条 而我想要的是a为0或1并且c为3的数据显示 应该只有1条的 所以应该这样写 Sql ...

  2. linux文件操作命令--转

    引用地址:http://bbsunchen.iteye.com/blog/1010993 想自己一开始处理文件的时候,看文件有多少行,都要写个perl脚本,好不麻烦啊...以此文纪念自己傻逼的科研生活 ...

  3. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 4.全局防护Bypass之二次注入

    0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.二次注入也是 ...

  4. 关于Android LayoutInflater的解释

    LayoutInflater的作用就是动态加载xml布局好的界面,类似于findViewById()来获取已经定义好的控件一样.不同点是LayoutInflater是用来找res/layout/下的x ...

  5. js中数组操作

    var selectedCodeArray = []; var num = $.inArray(值, selectedCodeArray)  //值在数组中的位置 selectedCodeArray. ...

  6. tachyon 集群安装

    tachyon的集群安装和单机安装差别不大 http://www.cnblogs.com/admln/p/tachyon-local-install.html 不同的地方 1.修改slaves时填入所 ...

  7. MySql 5.7安装配置

    最新的MySql免安装版配置: 1,解压缩: 2,添加系统环境变量,PATH=.......;C:\Program Files\MySQL\MySQL Server 5.7\bin 3,修改MySql ...

  8. jsp包含的讲解

    <%@page language="java" import="java.util.*" pageEncoding="UTF-8"%& ...

  9. Android(java)学习笔记61:多线程程序的引入

  10. UITabbar的简单操作和实际应用

     简易编辑Tabbar //**标签栏控制器的初始化 UITabBarController * tabbarC = [[UITabBarController alloc] init]; //设置tab ...