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. RedHat Linux 安装oracle11g

    1.准备oracle安装文件Oracle11gR2包含两个文件linux_11gR2_database_1of2.zip和linux_11gR2_database_2of2.zip,将这两个文件通过S ...

  2. LINUX ping 指定网卡

    计算机上有多块网卡(例如笔记本电脑的无线网卡和以太网卡)连接至网络,使用ping命令想指定使用哪块网卡怎么办? ping -I eth0 10.10.10.1ping -I eth1 10.10.10 ...

  3. 如何利用log4Net自定义属性配置功能记录完整的日志信息

    log4Net作为专业的log记录控件,对于它的强大功能大家一定不陌生.下面我将详细介绍如何利用其自定义属性,让日志信息更完整. 一,创建测试工程,log4Net组件可以自己从网上下载,也可通过Nug ...

  4. J2SE J2EE J2ME的区别

    J2SE J2EE J2ME的区别 J2SE J2EE J2ME的区别多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供不 ...

  5. JavaSE——面向对象与面向过程、类与对象、(属性、方法、构造器)等

    一:面向对象与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的. 面向过程: 1.面向过程思想强调的是过程(动作). 2.在面向过程的开发中,其实就是面向着具体的每一个步骤和过程,把每一个步 ...

  6. 1.6.5 Updating Parts of Documents

    1. Updating Parts of Documents 有时候你想要直接改变solr文档中的部分内容,solr有两种合适的方法来改变. 第一种:自动更新,这个方法允许仅仅改变文档的一个或者几个字 ...

  7. Android之旅:梦想、学习、坚持、自信、淡定

    前段时间参加了2012年度IT博客大赛,进了前十强,写了一篇获奖感言,不过还没正式在CSDN发表出来.眼看2012年就要结束了,刚好借这个机会将2012年度IT博客大十强获奖感言发表出来,也算是对20 ...

  8. iOS - 导航控制器

    1.导航控制器 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.window.bac ...

  9. linux_cpu信息查询

    查看cpu信息: [root@css-management ~]# cat /proc/cpuinfo processor : 0vendor_id : GenuineIntelcpu family ...

  10. Oracle 约束类型

    在Oracle中的约束类型:NOT NULLUNIQUE KeyPRIMARY KEYFOREIGN KEYCHECK create table emp--创建表格 ,注意约束( empno numb ...