OMAP Bootloader
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相关推荐
- TI OMAP Bootloader Project 关于启动过程
以下wiki详细讲解了启动过程 http://omappedia.org/wiki/Bootloader_Project http://omappedia.org/wiki/OMAP3_U-Boot_ ...
- Bootloader Project
Bootloader Project From OMAPpedia Jump to: navigation, search Contents [hide] 1 OMAP Bootloader Over ...
- omap移植systemtap
参考网站: http://omappedia.org/wiki/Systemtap http://blog.csdn.net/lzuzhp06/article/details/7778189 http ...
- ARM的位置无关程序设计在Bootloader中的应用
http://www.mcuol.com/tech/107/26052.htm 引言 基于位置无关代码PIC(PositionIndependent Code)的程序设计在嵌入式应用系统开发中具有重 ...
- BootLoader与MCU启动过程
STM32那点事(1)_STM32F40_41xx启动文件详解 STM32 官方为广大开发者提供一套统一开发固件,主要是屏蔽寄存器封装,提供初始化等功能,较少开发者负担.只需要调用相关模块封装,对相关 ...
- grub2引导linux内核,一种基于grub2的linux系统启动bootloader的制作方法与流程
技术领域 本发明涉及服务器应用技术领域,具体涉及一种基于grub2的linux系统启动bootloader的制作方法. 背景技术: 当前linux系统的内核版本已经升级至4.0以上,最新的linux系 ...
- Bootloader
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境.在嵌入 ...
- 利用Arduino Nano 对于另外的Arduino控制板下载Bootloader
简 介: 测试了利用Nano板对于基于MEGA328的Arduino的Bootloader下载,在此基础之上,利用了FT232TL的USB-TTL UART模块对测试MEGA328下载执行程序. 关键 ...
- bootloader烧写
http://blog.chinaunix.net/space.php?uid=7313069&do=blog&id=1676091 关于bootloader,先简要地总结一下.经过了 ...
最新文章
- 修改Nginx默认80端口指向目录
- AFNetworking 3.0 断点续传 使用记录
- SpringBoot的注解:@SpringBootApplication注解 vs @EnableAutoConfiguration+@ComponentScan+@Configuration...
- CentOS6 vsftpd 安装及优化方法
- 【数据竞赛】百赛百试,十试九灵的特征筛选策略-Pearson Correlation
- keras从入门到放弃(三)逻辑回归 softmax
- 数据段、代码段、堆栈段、BSS段的区别
- “互联网+”下的制造业供应链新挑战
- Qt配置VS2017
- 如何用python“优雅的”调用有道翻译?
- 深入理解CSS中的line-height的使用
- ACL'22 | 一文解读复旦黄萱菁、邱锡鹏等老师NLP实验室的12篇长文
- NLP语义匹配 | 经典前沿方案整理
- 为何不让AI做更正确的抉择?人类要逐渐交出控制权
- css打印如何去掉空白页,vue打印会多出一页空白页的坑
- 基于Springboot的个人博客网站系统——可用于毕业设计(课程设计)
- Excel技巧 - 长数字串如何筛选重复项
- 常见的电脑运行卡顿原因及解决方法
- RK3568的红外遥控
- Matlab TRL校准(简易版)