x210开发板的三种启动方式(三星推荐的,分散加载,uboot采用的)
2017-06-05 20:47
429 查看
1、三星推荐的启动方式
(1)将bl1放在在SRAM中运行,将bl2也在SRAM中运行,就像datasheet中描述那样。
(2)bootloader必须小于96KB并大于16KB,假定bootloader为80KB。
(3)启动过程
先开机上电后BL0运行,BL0会加载外部启动设备中的bootloader的前16KB(BL1)到SRAM中去运行;
BL1运行时会加载BL2(bootloader中80-16=64KB)到SRAM中(从SRAM的16KB处开始用)去运行;
BL2运行时会初始化DDR并且将OS搬运到DDR去执行OS,启动完成。
2、分散加载(两个链接地址)
文件太大,将整体分割成两个独立的部分bl1和bl2。
(1)分别烧录到sd卡的不同扇区(其中bl1肯定位于第一扇区开始的地方;bl2放在适当的位置,可以由烧录脚本知道bl2放在哪里);
(2)其中bl1在SRAM中运行,把DDR初始化后,将bl2加载到DDR中。
(3)BL1和BL2其实是2个独立的程序,链接时也是独立分开链接的,因此不能使用ldr pc, =main这种方式来通过链接地址实现远跳转到BL2。
使用地址进行强制跳转。因为知道BL2在内存地址0x23E00000处,所以直接去执行这个地址即可。
实现例子见http://blog.csdn.net/oqqhutu12345678/article/details/78942667中第8点。
3、uboot的实现方式
(1)uboot大小随意,假定为200KB。
(2)启动过程
先开机上电后BL0运行,BL0会加载外部启动设备中的uboot的前16KB(BL1)到SRAM中去运行;
BL1运行时会初始化DDR,然后将整个uboot搬运到DDR中,然后用一句长跳转(从SRAM跳转到DDR)指令从SRAM中直接跳转到DDR中继续执行uboot直到uboot完全启动。
uboot启动后在uboot命令行中去启动OS。
(3)和分散加载的异同
程序代码仍然包括BL1和BL2两部分,但是uboot组织形式上不分为2部分而是作为一个整体来组织。
它的实现方式是:iROM启动然后从SD卡的扇区1开始读取16KB的BL1然后去执行BL1,BL1负责初始化DDR,然后从SD卡中读取整个程序(BL1+BL2)到DDR中,然后从DDR中执行(利用ldr pc, =main这种方式以远跳转从SRAM中运行的BL1跳转到DDR中运行的BL2)。
(1)将bl1放在在SRAM中运行,将bl2也在SRAM中运行,就像datasheet中描述那样。
(2)bootloader必须小于96KB并大于16KB,假定bootloader为80KB。
(3)启动过程
先开机上电后BL0运行,BL0会加载外部启动设备中的bootloader的前16KB(BL1)到SRAM中去运行;
BL1运行时会加载BL2(bootloader中80-16=64KB)到SRAM中(从SRAM的16KB处开始用)去运行;
BL2运行时会初始化DDR并且将OS搬运到DDR去执行OS,启动完成。
2、分散加载(两个链接地址)
文件太大,将整体分割成两个独立的部分bl1和bl2。
(1)分别烧录到sd卡的不同扇区(其中bl1肯定位于第一扇区开始的地方;bl2放在适当的位置,可以由烧录脚本知道bl2放在哪里);
(2)其中bl1在SRAM中运行,把DDR初始化后,将bl2加载到DDR中。
(3)BL1和BL2其实是2个独立的程序,链接时也是独立分开链接的,因此不能使用ldr pc, =main这种方式来通过链接地址实现远跳转到BL2。
使用地址进行强制跳转。因为知道BL2在内存地址0x23E00000处,所以直接去执行这个地址即可。
实现例子见http://blog.csdn.net/oqqhutu12345678/article/details/78942667中第8点。
3、uboot的实现方式
(1)uboot大小随意,假定为200KB。
(2)启动过程
先开机上电后BL0运行,BL0会加载外部启动设备中的uboot的前16KB(BL1)到SRAM中去运行;
BL1运行时会初始化DDR,然后将整个uboot搬运到DDR中,然后用一句长跳转(从SRAM跳转到DDR)指令从SRAM中直接跳转到DDR中继续执行uboot直到uboot完全启动。
uboot启动后在uboot命令行中去启动OS。
(3)和分散加载的异同
程序代码仍然包括BL1和BL2两部分,但是uboot组织形式上不分为2部分而是作为一个整体来组织。
它的实现方式是:iROM启动然后从SD卡的扇区1开始读取16KB的BL1然后去执行BL1,BL1负责初始化DDR,然后从SD卡中读取整个程序(BL1+BL2)到DDR中,然后从DDR中执行(利用ldr pc, =main这种方式以远跳转从SRAM中运行的BL1跳转到DDR中运行的BL2)。
相关文章推荐
- S5PV210的启动过程:三星推荐的启动方式和uboot的实现方式不同
- Cubietruck开发板SPL阶段加载uboot到SDRAM并启动
- 嵌入式启动之三:应用程序的三种存储和加载方式
- CentOS6.3采用server方式安装后网卡不能加载或启动时不能连接网卡的问题
- 嵌入式启动之三:应用程序的三种存储和加载方式
- qml在开发板上启动时,出现白屏(qml的两种加载方式)
- tomcat加载web应用虚拟目录三种方式(推荐第三种)
- AsyncTask、View.post(Runnable)、ViewTreeObserver三种方式总结frame animation自动启动
- wince下采用快捷方式启动自己的应用程序方法注意事项
- JDBC三种方式加载数据库驱动(源码)
- Velocity中加载vm文件的三种方式
- 加载spring配置文件的三种方式
- ASP.NET学习笔记七之CSS加载的三种方式
- Spring的ApplicationContext加载多个配置文件的三种方式
- 蛙蛙推荐:sqlserver三种分页方式性能比较
- Tocat加载资源的三种方式
- 【STM32 .Net MF开发板学习-28】中文显示(WPF方式) 推荐
- 详解MSDN上推荐的分步加载流驱动实现启动提速
- 『转』启动/关闭oracle服务有三种方式
- Blackfin537处理器的代码加载,启动模式和uboot引导的辨析