Linux 内核目录结构一 u-boot 目录结构
一 Linux 内核目录结构
(1)arch 目录 :存放架构相关的代码
arch/arm/boot/compressed 存放的是内核的自解压代码
arch/arm/kernel/head.S Linux 内核的开始代码
-----------------------------
|解压代码|压缩的Linux 内核|
-----------------------------
arch/arm/boot/dts(device tree source) 存放的是开发板相关的设备树文件(硬件信息)
arch/arm/configs 存放的SOC芯片相关的内核配置文件
make exynos_defconfig(导入默认配置)或Kconfig文件,决定了配置菜单里有那些内容
(2)driver 目录: 设备驱动代码
(3)net 目录: 网络协议栈的实现代码
(4)Makefile 文件 (指定平台信息和交叉开发工具链)
(5).config文件里的内容是宏开关,决定了用Makefile进行编译时有那些驱动会编译进内核
开发平台:
[1]CPU 核
ARM cortex-A9 armv7指令集
[2]SOC
Samsung exynos4412 4个cortex-a9核
[3]board
fs4412 -------->参照三星的母板(bootloader linux android)进行设计
一 u-boot 目录结构
1.uboot源码中board 存放是特定开发板相关的代码,一般以芯片厂家的名字命名
origen是三星基于exynos4412做一块开发板
board/samsung/origen/lowlevel_init.S 系统时钟初始化代码(就是将原始的晶振进行倍频)
board/samsung/origen/mem_setup.S 内存初始化代码
2.arch 都是跟cpu架构相关的代码,例如:arm ,x86 ,mips ,ppc
arch/arm/cpu/armv7/start.S 这个是uboot首先执行的代码
arch/arm/cpu/u-boot.lds 这个是连接脚本文件(告诉编译在连接生成可执行文件的时候,一些段存放位置) ,
Linux一个可执行文件
objcopy
| |
|elf 头 | ----------> 给Linux使用
|-------|
|.data |
|-------|
|.bss |
|-------|
|.ro |
|-------|
|.txt |
.data :
已经初始化的全局变量和static修饰的局部变量
.bss :
未初始化的全局变量和static修饰的局部变量
.ro :
字符串常量
.txt :
机器码
注意:
.data , .ro , .txt 会影响最终文件的大小
3.include 存放的是uboot相关代码需要头文件
include/configs/origen.h
origen开发板对应的头文件,它决定了origen所需要的一些代码的宏开关
它也是开发板配置头文件,开发板所需要的代码宏开关和相关的宏定义的
参数都应该在此文件中定义
在makefile文件中
#ifdef SAMSUNG_XXXX
.......
#endif
#ifdef TI_XXX
.....
#endif
....
4.net uboot支持的一些网络协议
ping(icmp) tftp arp(根据ip地址获取目标主机mark地址(网卡地址)) rarp
5.lib 多有平台通用的代码
string.c 实现了字符串相关操作的代码
6.common uboot支持的命令实现代码
7.driver uboot支持的一些硬件驱动代码 ,有网卡驱动
8.boards.cfg
u-boot 支持的板子的配置信息,u-boot编译系统就是根据此配置文件,来识别当前板子的信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异