u-boot分析 一

学习u-boot难吗? 不难!

不知你是否和我一样

  1. 不懂gcc编译链接原理
  2. 不熟悉常用ARM指令集
  3. 没有ARM汇编编程经验
    ……

没有关系,这一切的困难都是纸老虎,即便如此,我们一样可以搞清u-boot启动原理。

欲善其事,必先利其器。

此博文为u-boot学习计划之启动篇,暂不涉及u-boot相关的任何知识,但有两点必须要达到:

  1. 安抚民心。
    结合博主自己的学习历程,个人认为, 对新手而言,学习u-boot是一个痛苦的过程。现在细想,让人痛苦的原因主要是咱们没有一个合理的学习顺序和可以借鉴的学习方法。就如无头苍蝇,东看看,西学学。学习过程中肯定会有很多的疑问和不明白,我的建议是不要死扣细节,把握大体思路,弄清u-boot大体原理为优先前提。给自己一点消化吸收的时间,不可急功近利,妄自菲薄。博主只有业余时间学习之,我给自己的时间是一星期。你给自己准备了多少时间呢?也就是自己给自己多长时间的痛苦呢?
    这里写图片描述

  2. 资料分享。
    安抚民心后,如果你的心态已经OK,那就请在开始之前收下鄙人的“恩情”,百度网盘中share了基于UT4418开发板的u-boot source code以及ARM常用指令集。学习u-boot就靠它了。
    http://pan.baidu.com/s/1kUhYmEj
    这里写图片描述

最后,请自备Source Insight看code软件。

完!

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
U-boot是一个开放源代码的引导加载程序,它是嵌入式Linux系统中非常重要的一部分。它主要负责完成硬件初始化、文件系统加载、内核启动、DTB传递等工作。下面是U-boot启动过程的详细分析: 1. 通电启动 当开关通电时,处理器会执行引导ROM中的启动代码。 2. 初始化寄存器 在进入U-boot之前,系统所有的寄存器都是未初始化的。U-boot要负责初始化CPU的所有寄存器,以确保所有设备都能正常工作。 3. 读取U-boot U-boot位于NOR或NAND闪存器中。为了读取U-boot,首先必须确定闪存器的类型和接口。当读取闪存器中的第一个块(一般是U-boot头)时,U-boot校验它的合法性,包括校验和、magic number、版本号等。如果校验失败,U-boot将停止执行。 4. 解压缩U-boot 如果U-boot被压缩了,那么需要用解压缩算法对其进行解压缩。在这个过程中,需要注意解压缩的起始地址和大小。 5. 设置环境变量 U-boot提供了一些环境变量,可以用来配置系统参数,例如:IP地址、MAC地址等。在这一步骤中,U-boot会将环境变量加载到DRAM中进行管理。同时,也可以通过TFTP、NFS等方式从外部存储设备中加载环境变量。 6. 初始化硬件 在U-boot启动过程中,需要对各种设备进行初始化。这些设备包括:串口、网络接口、SD卡、USB设备、SPI设备等。初始化完成后,U-boot才能正常使用这些设备。 7. 加载内核 U-boot负责加载内核到指定的内存地址。这个过程可以通过很多方式来完成:串口、SD卡、网络等。在加载内核之前,U-boot还会加载设备树文件(DTB)。 8. 启动内核 U-boot会将内核启动参数(包括设备树的地址)传递给内核,并通过软件跳转实现内核启动。此时,U-boot的使命就完成了,内核将接管系统的控制权。 总之,U-boot启动过程非常复杂,但是也非常重要。因为U-boot提供了系统启动所需的所有基础设施,从而保证了Linux系统的正常运行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值