专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
嵌入式
TQ2440 学习笔记—— 31、移植U-Boot【U-Boot 的启动过程第二阶段源码分析】
2019-07-13 03:46
发布
生成海报
站内文章
/
嵌入式Linux
11326
0
1460
(韦东山——嵌入式Linux 应用开发完全手册)
二、U-Boot第二阶段代码分析
U-Boot 第二阶段流程图
移植U-Boot 的主要工作在于对硬件的初始化、驱动,所以下面的重点放在硬件的操作上。
(1)初始化本阶段要使用到的硬件设备
最主要的是
设置系统时钟、初始化串口
,只要这两个设置好了就可以从串口看到打印信息。
board_init 函数设置MPLL、改变系统时钟,它是开发板相关的函数,在board/EmbedSky/EmbedSky.c 中实现。
board_init 函数还保存了机器类型ID,这将在调用内核时传给内核代码如下:
串口的初始化函数主要是 serial_init,它设置 UART 控制器,是CPU 相关的函数,在cpuarm920ts3c24x0serial.c 中实现。
(2)检测系统内存映射
对于特定的开发板,其内存的分布是明确的,所以可以直接设置。
board/EmbedSky/
EmbedSky.c 中的dram_init 函数指定了本开发板的内存起始地址为0x30000000,大小为4000000(在对应的头文件中可找到)。代码如下:
这些设置的参数,将在后面向内核传递参数时用到。
(3)U-Boot 命令的格式
U-Boot 中的每个命令都通过U_BOOT_CMD 宏来定义,格式如下:
宏
U_BOOT_CMD 在 include/command.h 中定义,如下图:
Struct_Section 也是
在 include/command.h 中定义,如下图:
(4)为内核设置启动参数
U-Boot 也是通过标记列表向内核传递参数。
Ta的文章
更多
>>
TQ2440 学习笔记—— 31、移植U-Boot【U-Boot 的启动过程第二阶段源码分析】
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮