(7)ok6410学习之bootloader工作流程

原理:

1.模仿u-boot
   u-boot分为自助模式和开发模式

2arm启动流程
IROM Internal ROM 包括nabd和sd启动方式 开始0x0800_0000
DRAM 地址开始0x5000_0000
镜像区域 0x0000_0000


启动 :irom》bl1(8k)》steppingstone
                 剩余的丢掉sram


工作流程:

{2440}
1.程序入口start。s
 _start
2.第一阶段代码bl1
 1.设置中断向量表
 2.设置处理器 set the cpu to SVC32 mode
 3.刷新flush v4 I/D caches
 4. disable MMU stuff and caches
 
   5.初始化系统时钟 关闭看门狗和中断
   6.初始化串口
   7.简单初始化nand flash
   8.内存初始化
 9.复制nand flsh到内存中
 10.设置堆栈
 11.清楚bss段
12.跳转到是内存地址

3.第二阶段(硬件和软件的初始化)
   1.初始化串口
  2.lcd初始化
   3.初始化网卡
   4.初始化led
   5.执行用户输入的命令

{6410}
1.程序入口start。s
 _start
2.第一阶段代码bl1
 1.设置中断向量表
 2.设置处理器 set the cpu to SVC32 mode
 3.刷新flush v4 I/D caches
 4. disable MMU stuff and caches
 5.外设基地址初始化
 6.点亮led
 7.关闭看门狗
 8.关闭所有中断
   9.初始化系统时钟
   10.初始化串口
   11.简单初始化nand flash
   12.内存初始化
 13.复制nand flsh到内存中
 14.设置堆栈
 15.清楚bss段
  16.跳转到是内存地址ldr pc, _start_armboot

3.第二阶段(硬件和软件的初始化) _start_armboot
   1.初始化串口
  2.lcd初始化
   3.初始化网卡
   4.初始化led
   5.执行用户输入的命令
{210}
210  bl1和bl2被划分为两个bin文件
1.程序入口start。s
 _start
2.第一阶段代码bl1
 1.设置中断向量表
 2.设置处理器 set the cpu to SVC32 mode
 3.关闭L1/D caches
 4. disable MMU stuff and caches
 5. 检查rest状态
 6.恢复i、o引脚为默认值
 7.关闭看门
 8.sram,srom初始化
   9.初始化系统时钟
   10.初始化串口
   11.取消存储保护区
   12.简单初始化nand flash
      内存初始化
   13.关闭ABB
   14.设置堆栈
   15.复制nand flsh bl2到内存中23e0000
   16.跳转到是内存地址ldr

3.第二阶段(硬件和软件的初始化)
   1.初始化串口
  2.lcd初始化
   3.初始化网卡
   4.初始化led
   5.执行用户输入的命令



你可能感兴趣的:(工作流程,bootloader,OK6410)