1.以board_init_f为函数的CPU级别的硬件初始化
GPIO gpio_init();
使能UART的CLK,为控制台打印信息做提前准备
初始化各种时钟,PLL,Timer
关闭看门狗
初始化DDR的CPU端的控制
转入下一阶段
2.以board_init_r为函数的板级别外设的硬件初始化
串口的初始化
Flash初始化(nor,nand)
MMC
PCI
标准的IO初始化(串口,LCD....)
SPI
I2C
USB
NET
......
添加外设初始化可以接着继续
main_loop()
至此硬件的初始化基本结束
3.main_loop 是业务相关的代码
如果需要引导系统进入引导内核,不需要的话进入命令行模式,根据用户输入的命令
将kernel从flash读到内存
读取kernel的4K头,分析系统类型(Linux,其他系统),运行的入口,kernel相关信息
l R0: 0x0
l R1: 机器号
l R2: 参数地址
三个参数传递给内核。
引导kernel
把使用权交给kernel