Bootloader简介
开发板在系统上电时,需要一段程序来进行初始化:关闭看门狗(WATCHDOG)、改变系统时钟、初始化存储控制器、将后续的代码复制到内存中等。像这样一段代码,它能将操作系统内核从本地或者远端复制到内存中运行,我们称之为Bootloader.
简而言之,Bootloader的目标,在系统上电时开始执行,初始化硬件设备、准备好软件环境,最后启动内核。
如何编写Bootloader
一、 搭建系统框架
1. 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH
2. 如果bootloader比较大,要把它重定位到SDRAM
3. 把内核从NAND FLASH读到SDRAM
4. 设置”要传给内核的参数”
5. 跳转执行内核
完善代码
1.新建source insight 工程,新建start.s文件参考芯片手册
根据芯片手册中看门狗和系统时钟寄存器的值设置如下代码
#define WTCON 0x53000000
#define CLKDIVN 0x4c000014
#define MPLLCON 0x4c000004
#define CLKDIVN 0x4c000014
.text
.global _start
_start:
/* 1. 关看门狗 */
ldr r0, =WTCON
mov r1,