U-Boot的启动过程源码分析(只有思路)

U-Boot属于两个阶段的Bootloader,第一阶段的文件为cpu/arm920t/start.S和 board/smdk2410/lowlevel_init.S,前者平台相关,后者开发板相关。

U-Boot第一阶段代码分析
1、硬件设备初始化
cpu的工作模式,关闭WATCHDOG,设置FCLK、HCLK、PCLK的比例,关闭MMU、CACHE。
2、为加载Bootloader的第二阶段代码准备RAM空间
指初始化芯片
3、复制Bootloader的第二阶段代码到RAM空间中
将U-Boot的代码都复制到SDARM中
4、设置好栈
留出一段内存供后面使用
5、跳转到第二阶段代码的C入口点
在跳转之前,还要清除BSS段

U-Boot第二阶段代码分析
第二阶段从start_armboot函数开始
移植u-boot的主要工作在于对硬件的初始化、驱动。
1、初始化本阶段要使用到的硬件设备
最主要的是设置系统时钟、初始化串口。

2、检测系统内存映射
设置内存起始地址
我使用的优龙板sdram的起始地址:0x30000000
3、U-boot命令的格式
即使是内核的启动,也是通过U-Boot命令来实现的。
U-Boot中每一个命令都通过U_BOOT_CMD来宏定义。

4、为内核设置启动参数
通过标记列表向内核传递参数

补充:内核的复制和启动,可以通过如下命令来完成:bootm从内存、ROM、NOR Flash中启动内核,bootp则通过网络来启动,而nboot从NAND Flash启动内核。

参考:韦东山的《嵌入式linux应用开发完全手册》


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值