• 3Uboot源码目录分析


    1、cpu
    
        本文件夹下的子文件与处理器相关,每个文件夹代表一种CPU系列。每个子目录中都包括cpu.c、interrupts.c、start.S文件。
    
        cpu.c主要用于初始化CPU、设置指令Cache和数据Cache等
    
        interrupt.c主要用于设置系统的各种中断和异常
    
        start.S是U-boot启动时执行的第一个文件,主要做最早期的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础。
    
        S5PV210芯片对应的文件夹是s5pc11x。
        cpu
    /s5pc11x/s5pc110/cpu_init.S主要用于SDRAM内存的初始化设置。 
    2、board 本文件下的子文件与开发板相关,每一个子文件代表一个芯片厂家,芯片厂家文件夹下存放的每一个子文件夹是一种开发板,

    由于历史原因,board目录下尚保留有大量的开发板文件夹没有归档到芯片厂家文件夹内,保持兼容性,因此整体显得比较混乱。

    如samsung的smdk2400、smdk2410开发板就位于samsung文件夹外。
        S5PV210芯片对应的文件夹位于board
    /samsung/smdkc110,文件夹内的lowlevel_init.S文件主要用于时钟、串口、MMU、Flash底层驱动、板级初始化,

    u-boot.lds文件是链接脚本文件,对于工程项目编译后期的链接阶段非常重要,决定了程序的组装。 3、common     本文件夹下存放与处理器体系结构无关的通用代码,uboot的命令解析代码/common/command.c、

    所有命令的上层代码cmd_*.c、uboot环境变量处理代码env_*.c、CRC校验等都位于本目录下。  4、drivers     本目录下存放所有外围芯片的驱动,网卡、USB、串口、LCD、Nand Flash等。 5、disk     本目录存放于磁盘驱动的分区处理代码 6、fs     本目录下存放文件系统相关的代码,每一个子文件夹代表一种文件系统。  7、net     本目录下存放于网络协议相关的代码  8、doc     本目录下存放uboot的说明文档。 9、api、api_examples、examples     外部扩展程序的API和示例  10、include     头文件,包括各种CPU的寄存器定义,文件系统、网络等等     configs子目录下的文件是与目标板相关的配置头文件 11、lib_xxx     lib_arm、lib_avr32、lib_blackfin、lib_generic、lib_i386、lib_m68k、lib_microblaze、

    lib_mips、lib_nios、lib_nios2、lib_ppc、lib_sh、lib_sparc 每一个文件夹代表一种CPU体系架构。与S5PV210相关的文件夹有lib_arm、lib_generic,lib_generic目录,

       存放的是各CPU体系架构通用的加密算法、压缩算法、字符处理相关代码。

    在每一种CPU体系架构文件夹内都存在board.c,是uboot启动第二阶段代码入口函数和相关初始化函数存放的地方。
    12、libfdt     本目录下存放的是设备数相关的代码。 13、tools     编译S-Record或uboot映像等相关工具,如制作bootm引导的内核映像文件工具mkimage源码。  14、post     上电自检相关代码  15、nand_spl、onenand_bl1、onenand_ipl     Nand、onenand启动相关的代码。  16、sd_fusing 本目录下存放的是烧录相关的工具代码  17、工程编译配置文件     Makefile、MAKEALL、config.mk、rules.mk、mkconfig     控制工程编译过程的主Makefile文件和规则文件     config.mk文件内的TEXT_BASE指定了代码在内存中的地址。 18、版本、版权说明文件         CHANGELOG、CHANGELOG-before-U-Boot-1.1.5、COPYING、CREDITS、MAINTAINERS、README、Changelog_Samsung。

     关于uboot源码部分修改的时候有几点需要注意的:

      1、uboot会使用一些编译后才生成的文件,修改使用uboot时,先编译一遍再使用;

      2、arch/arm/cpu/u-boot是整个uboot的链接脚本;

      3、board 记录一些不同板子的板载文件,是重要的;

      4、移植uboot时重点关注board/freescale与config配置,不同板子是不同的;

      5、当执行 make xxx_defconfig 后会生成 .config 文件,该文件保存着详细的配置信息,后面编译uboot 时会根据该文件的配置编译;

      6、顶层的 README 文件主要是介绍 uboot 的,建议有空阅读;

      7、u-boot 文件是编译出来的 ELF 格式的uboot镜像文件,

        u-boot.bin 文件是编译出来的二进制的 uboot 可执行文件,

        u-boot.cfg 文件是uboot的另一种配置文件,

        u-boot.map 是映射文件。

    一些主要的要主要的文件夹说明:

      1、arch:与架构有关的代码;

      2、board:板载信息;

      3、config:Uboot的默认配置文件目录,都是以 *_defconfig 结尾的,这些配置文件对于不同的板子,编译时要先编译一遍对于的板子的配置文件。

  • 相关阅读:
    性能测试流程
    N种自动化测试框架(包含自动化和性能,总有一款适合你)
    自动化测试框架:jmeter + maven+ jenkins
    oracle中删除表:drop、delete、truncate
    SpringBoot开发mockserver及生成swagger接口文档
    五步法颈椎病自我按摩图解
    自动化必备:自动化持续集成环境搭建(上):git + maven + jenkins
    玩转jmeter:beanshell必备技能
    EFK-2:ElasticSearch高性能高可用架构
    MySQL5.7之在线DDL不会锁表
  • 原文地址:https://www.cnblogs.com/xingboy/p/16292207.html
Copyright © 2020-2023  润新知