OMAP Boot Sequence

 http://www.omapedia.org/wiki/Bootloader_Project

两段式boot方式

First Stage Boot

两段式boot process,第一段由ROM代码load到内部static RAM(比较小,64K)

内部的ROM代码会尝试从不同外设启动,包括Serial(UART3),SD Card(MMC1,MMC2),Nand和USB。

启动顺序由一组GPIO配置,SYS_BOOT

配置可以从物理地址0x480022f0,透过JTAG或者如果运行linux,使用devmem2读取。

# devmem2 0x480022f0 b                          

/dev/mem opened.

Memory mapped at address 0x40020000.

Value at address 0x480022F0 (0x400202f0): 0x2F

Zoom2的启动配置顺序是:The default SYS_BOOT configuration for the Zoom2 appears to be: USB, Serial(UART3), SD Card(MM1), and NAND flash

Serial Boot

ROM代码往serial port写一个ID,如果host在一定时间内正确回应,那ROM代码可是从serial port读取数据,传输到内部sram里;如果没有错误,控制权随即转到sram。只有UART3才能用于uart启动。(这个simple ID是啥呢?)

SD Card Boot

查看第一个MMC控制器,找到Card后,扫描第一个分区,找到MLO『x-loader的二进制文件,加上头部信息――包含加载memory地址(指定文件将要加载的位置),以及文件的大小』,如果一切正常,MLO加载到内部sram,控制权随机转到sram,继续执行。MMC1和MMC2都可以用于booting。

Nand Boot

加载Nand的第一个sector,如果这个sector是bad或者corrupt或者blank,ROM代码继续尝试下一个sector(在退出前,会一直尝试4个sector)。找到好的sector,把内容传输到sram,转移控制权到sram,继续执行。

Second Stage Boot

For example, you could flash the serial x-loader into the nand. The rom will load from nand and transfer control to the x-loader which will wait for the 2nd stage to be downloaded from the serial port.

Serial Boot

使用Kermit协议传输大型文件到main memory。一旦传输完成,控制权转移

SD Card Boot

寻找第一个MMC上的第一个分区里的u-boot.bin

把u-boot.bin传输到main memory,然后把控制权转移到u-boot

NAND Boot

Nand x-loader会期望在第5sector(offset 0x00800000)找到u-boot.然后把u-boot传输到main memory,控制权转移过去。

Bootloader Overview

Uboot和xloader的build、flash过程

为什么要两个bootloader?

X-loader是简化版的u-boot,运行在on-chip的sram:它初始化系统的off-chip的内存以及其他必须的设备驱动,然后为linux加载较大型的bootloader,u-boot。

使用git,获取source code

CodeSourcery ARM Compiler

获取Uboot源代码

  • Clone Uboot

# mkdir bootloader

# cd bootloader

# git clone git://git.omapzoom.org/repo/u-boot.git

构建Uboot

# cd <path_to_u-boot>
# make distclean
# make CROSS_COMPILE=arm-none-linux-gnueabi- omap3430zoom2_config
# make CROSS_COMPILE=arm-none-linux-gnueabi-
各种配置文件

U-boot config files

Board

config file

4430SDP

omap4430sdp_config

3430SDP

omap3430sdp_config

3630SDP

omap3630sdp_config

3430LDP

omap3430labrador_config

Zoom2

omap3430zoom2_config

Zoom3

omap3630zoom3_config

2430sdp

omap2430sdp_config

2420h4

omap2420h4_config

获取X-loader源代码

  • Clone X-loader

# cd bootloader

# git clone  git://git.omapzoom.org/repo/x-loader.git

构建Xloader

Warning:必须在x-loader之前build u-boot

# cd <path_to_x-boot>
# make distclean
# make CROSS_COMPILE=arm-none-linux-gnueabi- omap3430zoom2_config
# make CROSS_COMPILE=arm-none-linux-gnueabi- ift

X-loader config files

Board

config file

4430SDP

omap4430sdp_config

3430SDP

omap3430sdp_config

3630SDP

omap3630sdp_config

3630SDP 1GB

omap3630sdp_1G_config

3430LDP

omap3430labrador_config

Zoom2

omap3430zoom2_config

Zoom3

omap3630zoom3_config

2430sdp

omap2430sdp_config

2420h4

omap2420h4_config

用build 透过serial boot的x-loader:

To build X-loader to boot over a serial connection, use "omap3430labradordownload_config"

BTW:该codebase是u-boot 1.1.4,在omapedia wiki网站有另一个项目u-boot upstreaming,在最新的u-boot mainline中加入omap支持

OMAP Bootloader相关推荐

  1. TI OMAP Bootloader Project 关于启动过程

    以下wiki详细讲解了启动过程 http://omappedia.org/wiki/Bootloader_Project http://omappedia.org/wiki/OMAP3_U-Boot_ ...

  2. Bootloader Project

    Bootloader Project From OMAPpedia Jump to: navigation, search Contents [hide] 1 OMAP Bootloader Over ...

  3. omap移植systemtap

    参考网站: http://omappedia.org/wiki/Systemtap http://blog.csdn.net/lzuzhp06/article/details/7778189 http ...

  4. ARM的位置无关程序设计在Bootloader中的应用

    http://www.mcuol.com/tech/107/26052.htm 引言 基于位置无关代码PIC(PositionIndependent Code)的程序设计在嵌入式应用系统开发中具有重 ...

  5. BootLoader与MCU启动过程

    STM32那点事(1)_STM32F40_41xx启动文件详解 STM32 官方为广大开发者提供一套统一开发固件,主要是屏蔽寄存器封装,提供初始化等功能,较少开发者负担.只需要调用相关模块封装,对相关 ...

  6. grub2引导linux内核,一种基于grub2的linux系统启动bootloader的制作方法与流程

    技术领域 本发明涉及服务器应用技术领域,具体涉及一种基于grub2的linux系统启动bootloader的制作方法. 背景技术: 当前linux系统的内核版本已经升级至4.0以上,最新的linux系 ...

  7. Bootloader

    在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境.在嵌入 ...

  8. 利用Arduino Nano 对于另外的Arduino控制板下载Bootloader

    简 介: 测试了利用Nano板对于基于MEGA328的Arduino的Bootloader下载,在此基础之上,利用了FT232TL的USB-TTL UART模块对测试MEGA328下载执行程序. 关键 ...

  9. bootloader烧写

    http://blog.chinaunix.net/space.php?uid=7313069&do=blog&id=1676091 关于bootloader,先简要地总结一下.经过了 ...

最新文章

  1. 修改Nginx默认80端口指向目录
  2. AFNetworking 3.0 断点续传 使用记录
  3. SpringBoot的注解:@SpringBootApplication注解 vs @EnableAutoConfiguration+@ComponentScan+@Configuration...
  4. CentOS6 vsftpd 安装及优化方法
  5. 【数据竞赛】百赛百试,十试九灵的特征筛选策略-Pearson Correlation
  6. keras从入门到放弃(三)逻辑回归 softmax
  7. 数据段、代码段、堆栈段、BSS段的区别
  8. “互联网+”下的制造业供应链新挑战
  9. Qt配置VS2017
  10. 如何用python“优雅的”调用有道翻译?
  11. 深入理解CSS中的line-height的使用
  12. ACL'22 | 一文解读复旦黄萱菁、邱锡鹏等老师NLP实验室的12篇长文
  13. NLP语义匹配 | 经典前沿方案整理
  14. 为何不让AI做更正确的抉择?人类要逐渐交出控制权
  15. css打印如何去掉空白页,vue打印会多出一页空白页的坑
  16. 基于Springboot的个人博客网站系统——可用于毕业设计(课程设计)
  17. Excel技巧 - 长数字串如何筛选重复项
  18. 常见的电脑运行卡顿原因及解决方法
  19. RK3568的红外遥控
  20. Matlab TRL校准(简易版)

热门文章

  1. 陆奇说自动驾驶会帮百度打翻身仗,凭什么如此霸气?
  2. android wifi 广播吗,Android WIFI开发之广播监听
  3. pr剪辑打开多个项目_pr入门实用教程之——mp4格式导出
  4. linux下如何让脚本在后台运行
  5. CSS3快速入门:五、浮动
  6. 诛仙php 角色,诛仙人物角色包裹默认模板clsconfig
  7. asp租用和saas租用_租用专用游戏服务器
  8. 方块游戏 (银河英雄传说)(并查集)
  9. 如何使用Movavi Picverse为照片添加字幕?
  10. linux 格式化硬盘