单片机
返回首页

3-Uboot源码目录分析

2025-02-18 来源:cnblogs

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 结尾的,这些配置文件对于不同的板子,编译时要先编译一遍对于的板子的配置文件。


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章