uboot移植(二)uboot源码目录分析

简介:

uboot移植(一)——uboot源码目录分析

   本文分析的uboot是九鼎官方提供的,是对应s5pv210开发板x210bv3的uboot 
一:uboot的概念及移植的原理。

uboot就是在内核运行前的一段小程序,用来初始化硬件设备,建立内存空间映射图。从而将系统的软硬件带到合适的状态,主要功能就是为了启动内核,它将内核从flash中拷贝到ddr中,然后跳转到内核入口中,交由内核控制权,uboot严重依赖硬件,因此一个通用的uboot不太可能。

移植原理:uboot中有很多平行代码,各自属于各自不同的架构/CPU/开发板,当我们具体到某一款开发板的时,编译的时候通过创建符号链接的方法来选择具体的哪一个文件夹/文件进行编译,这样就可以在配置的时候通过不同的配置来使用不同的文件,就可以实现可移植性。


二:uboot中个文件介绍

1:.gitignore:git工具文件,这个文件和git工具有关和我们的uboot本身无关。

2:arm_config.mk:一个Makefile文件,后面会有某个Makefile会调用它。

3:CHANGELOG  Changelog_Samsung  CHANGELOG-before-U-Boot-1.1.5  三个Changelog文件,这几个文件用来记录uboot的版本变迁和版本的修改

4:config.mk:一个Makefile文件,等待被调用,该文件里面的TEXT_BASE指定了代码在内存中的地址

5:COPYING:版权声明

6:CREDITS:鸣谢

7:image_split:一个脚本,用于分割uboot.bin到BL1

8:MAINTAINERS:维护者

9:MAKEALL:一个脚本,是帮助编译uboot的

10:Makefile:是uboot源代码的主Makefile,将来整个uboot被编译时就是用这个
Makefile管理编译的。后面会单独分析

11:mk:快速编译的脚本,里面的内容是 make  distclean  make x210_sd_config make -j4,也就是清理->配置->编译

12:mkconfig:是uboot配置阶段的主要配置脚本,这个脚本根据传入的不同SOC/开发板的参数来创建对应的符号链接,是uboot实现可移植性的关键。后面会单独分析

13:mkmovi:一个和iNand/SD卡启动有关的脚本
14:README:读我,一个简单的说明文档(纯英文)
15:rules.mk:uboot的Makefile使用规则文件

三:uboot的源码目录分析

1:api:

硬件无关的功能函数的API。uboot移植时基本不用管,这些函数是uboot本身使用的。

2:api_examples:

API相关的测试事例代码。

3:board

本文件下的子文件与开发板相关,每一个子文件代表一个芯片厂家,芯片厂家文件夹下存放的每一个子文件夹是一种开发板,由于历史原因,board目录下尚保留有大量的开发板文件夹没有归档到芯片厂家文件夹内,保持兼容性,因此整体显得比较混乱。如samsung的smdk2400、smdk2410开发板就位于samsung文件夹外。

  S5PV210芯片对应的文件夹位于board/samsung/x210,文件夹内的lowlevel_init.S文件主要用于时钟、串口、MMU、Flash底层驱动、板级初始化,u-boot.lds文件是链接脚本文件,对于工程项目编译后期的链接阶段非常重要,决定了程序的组装


4:common

    本文件夹下存放与处理器体系结构无关的通用代码,uboot的命令解析代码/common/command.c、所有命令的上层代码cmd_*.c、uboot环境变量处理代码env_*.c、CRC校验等都位于本目录下。


5:drivers

    本目录下存放所有外围芯片的驱动,网卡、USB、串口、LCDNand Flash等。


6:disk

    本目录存放于磁盘驱动的分区处理代码

7:fs

    本目录下存放文件系统相关的代码,每一个子文件夹代表一种文件系统。


8:net

    本目录下存放于网络协议相关的代码。

9:doc

    本目录下存放uboot的说明文档。


10:include

    头文件,包括各种CPU的寄存器定义,文件系统、网络等等

         configs子目录下的文件是与目标板相关的配置头文件,后面mkconfig文件中创建的符号链接都在该目录下面。


11:lib_xxx

    lib_arm、lib_avr32lib_blackfin、lib_generic、lib_i386lib_m68klib_microblazelib_mipslib_nioslib_nios2lib_ppclib_shlib_sparc

每一个文件夹代表一种CPU体系架构。与S5PV210相关的文件夹有lib_armlib_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

本目录下存放的是烧录相关的工具代码



本文转自 菜鸟养成记 51CTO博客,原文链接:http://blog.51cto.com/11674570/1825527

相关文章
|
小程序 前端开发
解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。
解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。
|
机器学习/深度学习 人工智能 自然语言处理
利用 Coze 搭建专属 AI 厨师助手
利用 Coze 搭建专属 AI 厨师助手
902 125
|
运维 监控 持续交付
自动化运维在现代数据中心的应用与实践####
本文探讨了自动化运维技术在现代数据中心中的应用现状与实践案例,分析了其如何提升运维效率、降低成本并增强系统稳定性。通过具体实例,展示了自动化工具如Ansible、Puppet及Docker在环境配置、软件部署、故障恢复等方面的实际应用效果,为读者提供了一套可参考的实施框架。 ####
|
安全 关系型数据库 MySQL
MySQL8 中文参考(二十七)(1)
MySQL8 中文参考(二十七)
237 1
|
Linux 网络安全 芯片
linux系统中详解u-boot之网络移植与调试
linux系统中详解u-boot之网络移植与调试
3053 0
|
存储 Unix Linux
哪些工具可以烧录树莓派的操作系统镜像
除了常见的烧录工具,树莓派操作系统镜像还可以通过以下工具烧录: 1. **Etcher**:树莓派官方推荐的图形界面工具,支持多操作系统,使用简单,具备严格的设备验证和校验机制。 2. **dd 命令**:适用于 Linux 和类 Unix 系统,功能强大但需谨慎使用,适合熟悉命令行的用户。 3. **BalenaEtcher**:与 Etcher 类似,跨平台且操作简单,确保烧录过程的准确性和安全性。 初学者建议使用 Etcher 或 BalenaEtcher,熟悉命令行的用户可以选择 dd 命令。
1548 6
|
小程序
仿qq音乐播放微信小程序模板源码
手机qq音乐应用小程序,在线音乐播放器微信小程序网页模板。包含:音乐歌曲主页、推荐、排行榜、搜索、音乐播放器、歌单详情等。
340 1
|
Oracle 关系型数据库 MySQL
实时计算 Flink版产品使用合集之Flink CDC 2.3.0和Flink 1.17,无法从MySQL数据库中抽取数据,是什么原因导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
540 1
|
SQL 关系型数据库 分布式数据库
citus实战系列之一入门篇
citus是一款基于PostgreSQL的开源分布式数据库,自动继承了PostgreSQL强大的SQL支持能力和应用生态(不仅仅是客户端协议的兼容还包括服务端扩展和管理工具的完全兼容)。 和其他类似的基于PostgreSQL的分布式方案,比如GreenPlum,PostgreSQL-XL,PostgreSQL-XC相比,citus最大的不同在于citus是一个PostgreSQL扩展而不是一个独立的代码分支。
9505 0

热门文章

最新文章

下一篇
开通oss服务