码迷,mamicode.com
首页 > 其他好文 > 详细

展讯平台uboot启动流程

时间:2020-01-13 19:45:31      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:arm   rom   boot1   时钟频率   stage   eset   显示   c 语言   boa   

启动流程

1、 Stage1

start.S代码结构 u-boot的stage1代码通常放在start.S文件中,用汇编语言,主要实现功能如下:?

(1) 定义入口: 该工作通过修改连接器脚本来完成。?

(2)设置异常向量(Exception Vector)。?

(3)设置CPU的速度、时钟频率及终端控制寄存器。

(4)初始化内存控制器。?

(5)将ROM中的程序复制到RAM中。?

(6)初始化堆栈。?

(7)转到RAM中执行,该工作可使用指令ldr pc来完成。

bl lowlevel_init跳转到arm926ejs里面的spl.c

2、Stage2

C语言代码部分 lib_arm/board.c中的start arm boot是C语言开始的函数也是整个启动代码中C语言的主函数,同时还是整个u-boot(armboot)的主函数,该函数只要完成如下操作:

(1)调用一系列的初始化函数。

(2)初始化Flash设备。?

(3)初始化系统内存分配函数。?

(4)如果目标系统拥有NAND设备,则初始化NAND设备。?

(5)如果目标系统有显示设备,则初始化该类设备。
//LCM?

(6)初始化相关网络设备,填写IP、MAC地址等。?

(7)进去命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

u-boot\arch\arm\cpu\armv7\start.S
.globl _start
_start: b reset
… …
jump_2_ram:
… …
_board_init_r_ofs:
.word board_init_r - _start ? ?//调用 uboot/arch/arm/lib/ board.c 是C 语言开始的函数也是整个启动代码中C语言的主函数,进入Stage2

u-boot\arch\arm\lib\board.c

一、初始化硬件

board_init_r() (u-boot15/arch/arm/board.c)
————>board_init()(sl8541e_1h10.c)
————>stdio_init()  
————>drv_lcd_init()  (common/lcd.c)

展讯平台uboot启动流程

标签:arm   rom   boot1   时钟频率   stage   eset   显示   c 语言   boa   

原文地址:https://www.cnblogs.com/linhaostudy/p/12188921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!