linux嵌入式—Uboot移植

1、uboot

(1)uboot的Makefile

   过于复杂,目前不搞。

 (2)uboot的启动流程

  复杂。

 可从uboot.lds文件入手,参考博客:https://www.cnblogs.com/niezhongle/p/11088687.html

具体总结如下:

阶段一:

       第一步,肯定是定义入口在哪里,于是u­boot 的 stage1 代码通常放在 start.s 文件中,它用汇编语言写成

      该工作可通过修改连接器脚本来完成。

     第二步, 先要想到异常,于是设置异常向量,(与中断相关)

     第三步, 设置 CPU 的模式为 SVC 模式

     第四步,  关闭看门狗

     第五步,  禁掉所有中断

     第六步,  设置以 CPU 的频率

    第七步,  关闭看门狗

     第八步,  禁掉所有中断

     第九步,  设置 CP15, 失效指令(I)Cache 和数据(D)Cache 后, 禁止 MMU 与 Cache。

     第十步, 配置内存区控制寄存器

     第十一步, 安装 U-BOOT 使的栈空间

     第十二步,  BSS 段清 0

    第十三步,  搬移 Nand Flash 代码

阶段二:

   进入C代码:

  第一步,指定初始函数表:

  第二步. 配置可用的 Flash 区

 第三步. 初始化内存分配函数

 第四步. nand flash 初始化

第五步, 初始化环境变量

第六步,  外围设备初始化

第七步,I2C 总线初始化 i2c_init();,

第八步,LCD 初始化 drv_lcd_init();

第九步,VIDEO 初始化 drv_video_init();

第十步, 键盘初始化 drv_keyboard_init();

第十一步,系统初始化 drv_system_init();

第十二步,初始化网络设备

初始化相关网络设备,填写 IP、MAC 地址等。 

 

第十三步, 进入主 UBOOT 命令行

进入命令循环(即整个 boot 的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

for (;;) {

main_loop (); /* 在 common/main.c */

}

还需要再学习这方面

2、uboot的移植

uboot的移植一般只能对芯片厂家提供的uboot进行修改移植,我使用的是nxp的im6ull

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值