uboot启动流程

一、uboot 启动流程

启动入口 arch/arm/cpu/armv7/start.S

1.汇编阶段

(1)异常向量表

(2)初始化基本CPU 协处理器等  

cpu_init_cp15:  初始化 L1缓存 、 关闭mmu 、 关闭看门狗 、 单纯化,

执行完cpu_init_cp15后,跳转到cpu_init_crit执行。

(3)运行地址检查

1)如果运行在 flash上

初始化内存  初始化时钟  

b  relocate_code   代码自搬移

将 在 flash/SD卡 中的 uboot代码  复制到 RAM   重启uboot  在RAM中  

2)运行在RAM上 

板载设备初始化 进入  board_init_f

2.C阶段

arch/arm/lib/board.c:277  board_init_f

核心代码:

for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {

if ((*init_fnc_ptr)() != 0) {

    hang ();

    }

}

其他更多设备的初始化  定时器  串口 终端 ...

board_init_r:  中断初始化

for (;;) {

main_loop();    // 交互模式 主循环

}

二、uboot 命令了解

uboot常用命令:

1.help:      查看uboot支持的命令

2.printenv:  查看环境变量

3.set 环境变量名  参数值     // 设置环境变量

4.save  保存环境变量

5.bootargs : 引导Linux内核时 传递给内核的参数

6.bootcmd  : 自启动模式下  uboot 会自动执行该参数给定的 命令表

7.bootdelay=3 : 进入自启动模式的 延时时间 单位S

8.tftp 通过tftp客户端 向服务器下载数据

tftp 内存地址  文件名

9.boom 引导Linux内核

boom 内核的位置  根文件系统位置  设备树的位置

10.loadb   通过串口下载文件

11.go    跳转指定内存地址 执行程序  

12.系统固化到flash中 会用到的命令  

movi  read  u-boot/kernel  addr

movi  write u-boot/kernel  addr

movi  read  rootfs  addr   size

movi  write rootfs  addr   size

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春风从不入睡、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值