转自:http://blog.csdn.net/blueoceanindream/article/details/6851787

闲来无事,总结一下linux bootrom的启动流程:

环境:MIPS+linux+交换机

nor flash和nand flash

nor flash:引脚多;支持片内执行;

nand flash:引脚通过IO串行实现,不支持片内执行;

一.基本概念

对于linux的bootloader主要可以分为四个层次:

1.firmware+bootloader

采用固件和bootloader两部分的bootrom方式,在Marvell平台中,CPU中集成了bootrom芯片,实质上是nand flash,CPU上电启动过程中,先执行固件中的程序,然后再执行boot代码。由于固件中代码已经初始化了串口,因此我们开发boot中不需要顾及串口初始化。

2.linux内核参数传递

不止是linux,vxworks也一样,image参数主要通过bootloader进行传递,或者是系统默认的,在我们系统中,都是采用bootloader把参数设置好,向image传递固定数据结构的地址,image启动时就能够获取参数,并按照预定的方式启动。

3.文件系统

主要是基于Flash等内存设备上,包含linux运行时所用的应用程序、库等,比如说给开发提供的Shell、动态链接程序。

4.用户应用程序

存储在文件系统中,例如会在文件系统和内核总放置一个图形化界面,例如minigui。

linux 常见分区:

bootloader + boot parameter + linux kernel + boot filesystem

二.boot常见的启动阶段

在我们产品中,首先设置CPU status寄存器KX,SX,UX;然后读取是哪个CORE,决定走不同的分支;然后读取不同的芯片版本,决定走不同分支;并区分是软复位和硬复位;区分不同的CORE,初始化相应的TLB映射,并根据不同的CORE,计算每个CORE需要执行的代码段。

函数board_init_f()是在flash中执行的,是重要函数。

board_init_f()中调用lib_mips/board.c文件中定义的 init_sequence[]函数指针数组中的函数
init_fnc_t *init_sequence[] = {
octeon_boot_bus_init,
----> lib_mips/lib_octeon.c/octeon_boot_bus_init()
timer_init,  ----> lib_mips/time.c/timer_init()
env_init,  ----> common/env_flash.c/env_init() /*CFG_ENV_IS_IN_FLASH*/
early_board_init,
----> board/octeon_ebt3000/octeon_ebt3000_board.c
init_baudrate,
----> lib_mips/board.c/init_baudrate()
serial_init,  ----> 无
console_init_f,
----> common/console.c/console_init_f()
display_banner,
----> lib_mips/board.c/display_banner()
init_dram,  ----> lib_mips/board.c/init_dram()
checkboard,  ----> board/octeon_ebt3000/octeon_ebt3000_board.c
init_func_ram,
NULL,
};

bootrom启动流程【转】的更多相关文章

  1. Zynq启动流程

    前言 Zynq启动流程和ARM处理器类似,PS部分是启动和配置过程的主设备,芯片引导必须由处理器驱动,系统上电复位后会读取设备模式引脚来决定从什么设备启动芯片.如下表Boot Devices条目所示, ...

  2. MyCat源码分析系列之——配置信息和启动流程

    更多MyCat源码分析,请戳MyCat源码分析系列 MyCat配置信息 除了一些默认的配置参数,大多数的MyCat配置信息是通过读取若干.xml/.properties文件获取的,主要包括: 1)se ...

  3. Android进阶系列之源码分析Activity的启动流程

    美女镇楼,辟邪! 源码,是一个程序猿前进路上一个大的而又不得不去翻越障碍,我讨厌源码,看着一大堆.5000多行,要看完得啥时候去了啊.不过做安卓的总有这一天,自从踏上这条不归路,我就认命了.好吧,我慢 ...

  4. Spring Boot启动流程详解(一)

    环境 本文基于Spring Boot版本1.3.3, 使用了spring-boot-starter-web. 配置完成后,编写了代码如下: @SpringBootApplication public ...

  5. linux启动流程及自定义gurb

    linux 启动流程 POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----> MBR(bootloader) 提供内核列表 -------& ...

  6. linux启动流程

    看了深入理解linux内核一书的最后对linux启动流程的介绍,下面就把我能理解的写一下吧: bios(硬件加电自检POST,寻找第一个启动设备) the boot loader(可以从硬盘启动也可以 ...

  7. webapp启动流程

    webapp启动流程 看了这个教程,其实所有的webapp大致都是这个流程了.

  8. Tomcat源码分析之—具体启动流程分析

    从Tomcat启动调用栈可知,Bootstrap类的main方法为整个Tomcat的入口,在init初始化Bootstrap类的时候为设置Catalina的工作路径也就是Catalina_HOME信息 ...

  9. 嵌入式Linux驱动学习之路(五)u-boot启动流程分析

    这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加 ...

随机推荐

  1. web开发--文档下载

    GOOGLE在线文档下载地址分享(GOOGLE的文档地址暂不能用了,会放在其它位置..) GOOGLE的在线文档功能好象挂掉了...等找个其它存放的位置把这些文档再上传上去... 存在GOOGLE里面 ...

  2. boost之thread

    1.boost里的thread创建之后会立即启动. 代码示例: #include <iostream> #include <string> #include <vecto ...

  3. RVA与Offset的换算函数

    function RVAToFileOffset(FileName:string; RVA: Cardinal): Cardinal; var   MemPE: TFileStream;   PEDo ...

  4. .NET设计模式(8):适配器模式(Adapter Pattern)(转)

    概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就 ...

  5. Telnet、FTP、SSH、SFTP、SCP

    [Telnet]著名的终端访问协议,传统的网络服务程序,如FTP.POP和Telnet,其本质上都是不安全的:因为它们在网络上用明文传送数据.用户帐号和用户口令. [telnet命令]telnet h ...

  6. JAVA非空条件三元运算符

    //非空情况处理: // Integer holidayPrice = order.get("holidayPrice")!=null?Integer.valueOf(String ...

  7. HDU 4597 Play Game(记忆化搜索,深搜)

    题目 //传说中的记忆化搜索,好吧,就是用深搜//多做题吧,,这个解法是搜来的,蛮好理解的 //题目大意:给出两堆牌,只能从最上和最下取,然后两个人轮流取,都按照自己最优的策略,//问说第一个人对多的 ...

  8. poj 3686

    The Windy's Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3791   Accepted: 1631 Descr ...

  9. MetInfo安装

    安装MetInfo企业网站管理系统需要经历三个步骤:安装准备.上传文件.安装系统. 第一步:安装前的准备 环境要求:需要支持PHP并提供Mysql数据库的空间(虚拟主机),详细要求: 下载MetInf ...

  10. .htaccess的基本作用及相关语法介绍

    .htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令. .htaccess主要的作用有:URL重写.自定义错误页面.MIME类型配置以及访问权限控制等.主要体现在伪静态的应 ...