• uboot基础知识一


    1、uboot启动的第一阶段----汇编代码start.S
            大部分都是Soc内部的初始化,可以理解成一些通用的初始化,只要使用该款Soc,第一阶段的初始化流程基本是一样的。不直接用C语言进行初始化是因为,C语言运行需要一定的环境,比如栈的设置,而汇编代码刚好可以为C语言的运行初始化环境。在汇编代码的结束阶段就是跳转到C语言实现的函数继续进行初始化。

    2、计算机的主要部件是CPU+Flash/硬盘 + 内部存储器DDR


    3、main_loop函数是u-boot最重要的功能实现---引导内核、功能交互,main_loop可以理解为u-boot的shell,通过该函数,程序员可以与u-boot进行交互,当然如果程序员无任何动作(串口无字符串输入),u-boot会自动的去做它最重要的工作---引导内核kernel。

    4、uboot必须进行和硬件相对应的代码级别的更改和移植
            arch:文件和CPU架构相关的源代码
            board:与开发板相关的源代码
            make _config

    5、uboot中事先给linux内核准备一些启动参数,放在内存中特定位置然后传给内核,内核启动后会到这个特定位置去取这些参数,然后在内核中解析这些参数,这些参数将被用来指导linux内核的启动过程。uboot到内核的参数传递几种办法
            ① 通过tag(bootargs)的方式传递:kernel_entry(r1,r2,r3)。r0=0,r1=machid,r2=启动参数
            ②uboot跳转内核的传参:theKernel(0, 362, 0x30000100)
                    r0 一般设置为0;
                    r1 一般设置为machine id (在使用设备树时该参数没有被使用); 
                    r2 一般设置ATAGS或DTB的开始地址
            最初在r2的位置,存放了uboot准备好的tags,传递给内核,当使用设备树时,r2不再存放tag首地址,而是uboot将设备树加载到内存中的地址
            ③将硬件配置和系统运行参数组成设备树文件,通过dts编译dtb,在系统启动过程中:
                     a:将dtb加载到内存,tftp 0x8000 zlmage ,tftpboot 0x100 test-ek.dtb将kernel和dtb下载到flash中,fdt addr 0x100将dtb载入内存,最终通过bootz 0x8000 – 0x100启动系统。
                     b:将dts和kernel打包成pImage,这种需要uboot实现读plmage头,uboot从plmage的头部去读取dtb的地址,然后传递给kernel
                     c:启动kernel选择“ARM_APPENDED_DTB”将dtb和kernel打包在一起,在kernel启动时会去紧挨的地方去寻找dtb,这样不需要uboot来传递dtb地址了。

    6、uboot的环境变量
            default_environment是字符数组,是一个全局变量,是默认的环境变量参数。在uboot启动的第二阶段系统会判断env分区的crc是否通过。如果正常的存储环境变量,则读取环境变量来覆盖default_environment字符数组。

    7、uboot的作用:
              ①启动操作系统内核
               ②负责部署整个计算机系统
               ③操作Flash等板子上的硬盘的驱动
               ④提供人机交互命令行

  • 相关阅读:
    【Python黑科技】cv2库实现证件照抠图替换背景(注释比代码多)
    【LeetCode刷题】--39.组合总和
    【毕设项目】 基于stm32的四轴飞行器设计 - 物联网 嵌入式 单片机
    活字格性能优化技巧(1)——如何利用数据库主键提升访问性能
    23种设计模式3
    关于什么是AndroidX(二)
    【笔试题】【day8】
    CSDN 编程竞赛第七期题解
    内在不足外需存疑,是谁给了波司登继续涨价的“勇气”?
    Webpack打包CSS文件,解决You may need an appropriate loader to handle this file type报错
  • 原文地址:https://blog.csdn.net/qq_37820135/article/details/127739844