您的位置:首页 > 其它

嵌入式学习-uboot-lesson3-6410uboot启动流程分析

2016-06-24 11:47 429 查看
主要分为:

一.6410启动方式

二.6410地址布局

三.6410启动流程

四.uboot分析

一.6410启动方式

根据下图可以看到支持的启动方式有:

1.SROM(NORFLASH)

2.oneNAND 一种特殊的NANDFlash(既具有norflash特性也具有nandFlash的特性)

3.MODEN

4.IROM(intern rom)下分为SD和NANDFlash启动

通过配置引脚,从而选择不同的启动方式



二.6410地址布局



从上图可以看到6410的iROM 和 Stepping Stone的地址,6410的内存是从0x50000000开始的

众所周知,启动的时候都是从0地址开始的,但是看上面的图,MIRRORED REGION 镜像区域,也就是,如果选择irom启动方式,则启动的时候,则将irom地址空间里面的内容映射到0地址去,根据不同的选择,镜像区域映射不同的设备。

三.6410启动流程

在S3C6410_Internal_ROM_Booting.pdf中,



上电之后,整个启动流程分为三个部分:

第一部分:irom被映射到0地址处,然后运行iROM里面的数据,

irom里面存放着芯片厂商相关的程序(包括把设备device里面的BL1拷贝到垫脚石中)和信息,称之为BL0,即bootloader0

第二部分:把bootloader放到垫脚石去运行,称为BL1

第三部分:若bootloader大于8KB,则BL1会把大于8KB部分的bootloader(BL2)放入内存中

四.uboot分析

uboot的主要分为 第一阶段程序 和 第二阶段程序 ,第一阶段程序主要是采用汇编指令编写的,第二阶段程序主要是采用C编写的

1.程序入口

通过查Makefile看相对应的开发板的硬件平台,

如下:



smdk6410代表了相关文件存放的目录的名字,

2.然后进入/uboot/board/samsung/smdk6410目录

如下:



3.然后打开链接器脚本 uboot.lds查看来观察:



在代码段最前的是 cpu/s3c64xx/start.o这个目标文件,也就是cpu/s3c64xx/目录下start.s这个文件会最先运行

在链接器脚本中上方有ENTRY(_start) 这句话,代表_start为整个程序的入口

也就是在start.s中 _start是最先被运行的

4.打开start.s



5.第1阶段程序分析

5.1设置中断向量表

在start.s开始的位置,看其描述部分可知其功能是中断向量表



然后查看代码



可以知道,第一步是跳转到reset部分去,然后转到reset部分,可以看到其第一部分为 set the CPU to SVC32 模式



5.2 设置处理器为SVC模式

继续往下查看



5.3刷新IDcache

继续查看



5.4关闭MMU和cache



5.5外设基地址的初始化



继续查看,下一步是ONENAND的初始化,但是6410并没有选择onenand,因此跳过

继续往下查看



上图说明要跳转到lowlevel_init去



打开smdk6410目录里面的lowlevel_init.s



5.6点亮led



5.7关闭看门狗

5.8关闭所有中断

5.9初始化时钟

5.10初始化串口



5.11nand flash简单的初始化



5.12初始化内存

然后返回start.s继续往下查看



6410是从NAND falsh启动的

copy_from_nand 把bootloader复制到内存中去

5.13 复制nand flash中的bootloader到内存中



没有用MMU,因此不用



5.14设置堆栈



5.15清除bss段

然后ldr pc, _start_armboot代表绝对跳转到_start_armboot地方去

6.第2阶段程序分析

start_armboot 在/lib_arm/board.c中

打开board.c



可以看到init_sequence这个指针,并且指针循环进行调用,跳转到指针处



可以看到,进行了一系列的初始化,而关于硬件方面的初始化时串口的初始化

6.1串口初始化



6.2lcd初始化



6.3网卡初始化

6.4led初始化

最后进入循环 main_loop 其主要作用是,在控制台上对用户输入的命令进行解析



关于start.S更详细的分析,请参考:

uboot start.s分析

菜鸟一枚,如有错误,多多指教。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: