uboot启动源码分析

开发板smdk2410的uboot为例。
第一阶段文件为cpu/arm920t/start.S和board/smdk2410/lowlevel_init.S。

一、第一阶段
1、设置cpu为svc模式
2、关看门狗、关中断
3、cpu初始化
4、设置栈
5、时钟初始化
6、拷贝uboot到ram
7、清除bss段
8、set PreLoadedONRAM
9、执行start_armboot,进入第二阶段入口

问题:
1、汇编中标号的实质?
2、内存控制参数拷贝过程中,源地址的计算问题?

3、时钟参数的计算问题?

 

二、第二阶段
start_armboot()函数分析:
1、设置指针gd、gd->bd,存储的是与内核交互的参数。
2、执行init_sequence数组中的函数。cpu、板子、中断、波特率、串口、控制台、dram等初始化操作。
3、内存中malloc段初始化。
4、设置uboot环境变量
5、设置bd中网卡参数
6、串口设备初始化
7、设置gd->jt
8、初始化控制为一个设备
9、初始化GPIO
10、以太网初始化
11、进入循环main_loop()

第2步中:
board_init()://1、IO初始化;2、板子识别码;3、设置bi_boot_params,gd->bd->bi_boot_params = 0x30000100;
serial_setbrg()://设置串口寄存器参数

uboot命令实现:
#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \
cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage, help}

其中Struct_Section定义如下:
#define Struct_Section __attribute__ ((unused,section (".u_boot_cmd"))) //

 

转载于:https://www.cnblogs.com/mofei004/p/10413861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值