前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >展讯平台uboot启动流程

展讯平台uboot启动流程

作者头像
233333
发布2020-02-12 23:41:55
1.1K0
发布2020-02-12 23:41:55
举报

启动流程

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

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的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

代码语言:javascript
复制
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

一、初始化硬件

代码语言:javascript
复制
board_init_r() (u-boot15/arch/arm/board.c)
————>board_init()(sl8541e_1h10.c)
————>stdio_init()  
————>drv_lcd_init()  (common/lcd.c)
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 启动流程
  • 1、 Stage1
  • 2、Stage2
    • 一、初始化硬件
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com