uboot启动流程如下:
第一条指令如何执行
从FLASH执行,cpu不需要初始化,从固定内存读代码;
初始化硬件,先后顺序如何
1)关看门狗
2)关中断
3)关mmu,初始化各个bank
4)设置时钟频率
5)进入board_init_f()函数 (初始化定时器,GPIO,串口等,划分内存区域)
如何加载内核
先将flash的代码拷到内存(自搬移uboot到内存)
性能提升
汇编语言和C语言开发的;
汇编阶段:
设置为SVC模式,关闭中断、mmu、看门狗
基本硬件设备初始化 // 时钟、串口、flash 内存
自搬移内存
设置好栈
跳转到第二阶段代码入口 //ldr pc _start_armboot
C语言
大部分硬件初始化
搬移内核到内存
运行内核