1、什么是bootloader
如果说系统内核是航天飞机的话,那么bootloader就是助推器,它带动了内核。在内核启动之前它要做许多硬件的初始化操作,来适合系统的安全启动。
2、bootloader设计方法-模仿
90%的设计从模仿开始,模仿加入自己的想法就是设计。bootloader的模仿我们一般会参照行业老大uboot。
3、uboot简介
uboot可以支持多种嵌入式cpu,例如X86、ARM、MIPS
还可以支持多种嵌入式操作系统,例如wince、linux、vxworks、QNX
uboot分为自主模式和开发模式:自主模式下,uboot的运行不需要人的参与,这往往也是产品模式。
开发模式是供开发人员使用,对uboot进行修改,来适应自己的需要。
4、uboot的查看
我们一般会使用sourceinsight来查看相对比较大的程序,它可以自动定位函数位置。这方便了我们的查找。
二、ARM的启动流程
为什么要关心ARM的启动流程
这是因为软件的设计要遵循硬件的要求。满足硬件的一些要求。
主要从三个方面进行介绍:1、启动方式 2、地址布局 3、启动流程
几点说明:一上电,处理器会从0地址开始读取指令并执行。 Nandflash不参与统一编址。
2440:
1、启动方式:Norflash Nandflash
2、内存地址从00x30000000开始
3、启动流程(来自手册):s3c2440A boot code can be executed on an external NAND flash memory. In order to support nand flash bootloader, the s3c2440A is equipped with an internal SRAM buffer called "steppingstone". When booting, the first 4 KBytes of the NAND flash memory will be loaded into steppingstone and the boot code loaded into stippingstone will be executed.
Generally, the boot code will copy NAND flash content to SDRAM. the main program will be executed on the SDRAM.
6410:
1、启动方式:SROM、OneNAND、MODEM、IROM(NAND、SD)
2、bootloader的起始地址0x0C000000, 之前的为internal ROM。0地址处为映像区。DRAM起始地址为0x50000000.
3、a、iROM supports initial boot up : initialize system clock, D-TCM, device specific controller and booting device.
b、iROM boot codes can load 4KB of bootloader tostepping stone. The8 KBbootloader is called BL1.
c、BL1:BL1 can initialize system clock, UART, and SDRAM for user. After initializing, BL1 will load remaining boot loader which is calledBL2on theSDRAM
d、Finally, jump to start address of BL2. That will make good environment to use system.
210:
1、启动方式:同6410
2、地址布局:0地址处为Boot area,内存地址从0x20000000开始。
3、启动流程:a、iROM can do initial boot up : initialize system clock, device specific controller and booting device.
b、b、iROM boot codes can load boot-loader to SRAM. The boot-loader is called BL1. then iROM verify integrity of BL1 in case of secure boot mode.
c、BL1 will be executed: BL1 will load remained boot loader which is called BL2 on the SRAM then BL1 verify integrity of BL2 in case of secure boot mode.
d、BL2 will be executed: BL2 initialize DRAM controller then load OS data to SDRAM
e、finally, jump to start address of OS. that will make good environment to use system.
三、Uboot 工作流程分析
1、程序入口
2、第一阶段程序分析
3、第二阶段程序分析
也就是上面谈到的BL1和BL2,这两部分也是要我们自己来编写的部分。BL0厂家已固化在硬件中,就不需要我们自己编写了。
2440
1、查看两个文件
1、uboot下的Makefile
2、uboot/board/samsung/smdk2440/uboot.lds下查看代码段首文件,ENTRY标明程序入口(链接器脚本),start.S(cup/s3c24XX/start.o(.text))。
2、BL1分析(入口start.S 中 _start)
使用source Insight
分析/cpu/s3c24XX/start.S
提示:start.S中设置堆栈为c语言做铺垫。
1、设置中断向量表
2、设置处理器为SVC模式
3、刷新I/D cache
4、关闭mmu和cache
5、初始化系统时钟
6、初始化串口
7、简单初始化nand flash
8、进行内存初始化
9、nand flash中的bl到内存
10、设置堆栈
11、清除bss段
3、BL2分析(入口start_armboot)
1、初始化串口
2、LCD初始化
3、初始化网卡
4、初始化LED
5、执行用户输入命令(死循环,一直等待用户的使用)
6410同2440几乎有同样的工作,不过执行的先后顺序和方式不同。而210是新版本的U-boot,它的BL1、BL2分别产生了两个.bin文件。它有厂家固化的irom,BL1被到iram中,BL2被到内存中。
三、Bootloader架构设计
在进行设计之前,我们遵循的原则:尽量归类整理,分阶段去完成。还就是要尽早的使用c语言这样编程比较简单些。下面是思维导图:
上一篇:ARM裸机开发bootloader内存初始化
下一篇:ARM裸机开发bootloader—点亮LED灯
推荐阅读最新更新时间:2024-03-16 14:56
设计资源 培训 开发板 精华推荐
- 睿瀚医疗万斌:“脑机接口+AI+机器人”是康复赛道的未来
- 希润医疗孟铭强:手功能软体机器人,让脑卒中患者重获新生
- 柔灵科技陈涵:将小型、柔性的脑机接口睡眠设备,做到千家万户
- 微灵医疗李骁健:脑机接口技术正在开启意识与AI融合的新纪元
- USB Type-C® 和 USB Power Delivery:专为扩展功率范围和电池供电型系统而设计
- 景昱医疗耿东:脑机接口DBS治疗技术已实现国产替代
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度