当前位置: 首页 > news >正文

[IMX][UBoot] 13.Linux 内核源码目录分析

目录

1.架构 - /arch

2.块设备 - /block

3.加密文件 - /crypto

4.帮助文档 - /Documentation

5.驱动 - /drivers

6.固件 - /firmware

7.文件系统 - /fs

8.头文件 - /include

9.初始化文件 - /init

10.进程间通信 - /ipc

11.内核源码 - /kernel

12.库文件 - /lib

13.内存管理 - /mm

14.网络 - /net

15.示例 - /samples

16.脚本 - /scripts

17.安全 - /security

18.音频驱动 - /sound

19.工具 - /tools

20.initramfs - /usr

21.虚拟机 - /virt

22.帮助信息 - README

23.配置文件 - .config

24.编译配置文件 - Kbuild

25.图形化配置项 - Kconfig

26.Makefile


Linux 内核的官网为:The Linux Kernel Archives

NXP 基于标准的 Linux 内核进行修改,以适配自己的 SoC,并将其提供给开发者

在内核源码的根目录中新建编译脚本 mx6ull_alientek_emmc.sh,其内容如下:

#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j6
  • #!/bin/sh 指定脚本解释器的路径;

  • ARCH=arm 指定目标架构为 ARM;

  • CROSS_COMPILE=arm-linux-gnueabihf- 指定所使用的交叉编译器;

  • distclean 清理工程;

  • imx_v7_defconfig 指定配置文件;

  • menuconfig 打开图形配置界面;

  • all -j6 编译所有目标,使用 6 个线程进行编译;

执行脚本编译 Linux 内核:

./mx6ull_alientek_emmc.sh

编译时会弹出图形配置界面,暂时不进行配置,按两次 ESC 键退出,等待编译完成

编译完成后会在 /arch/arm/boot 目录下生成 zImage 文件,在 /arch/arm/boot/dts 目录下生成设备树文件

部分文件仅在编译后生成,此时 Linux 内核的源码目录如下图所示:

其中重要的目录及文件的含义如下:

1.架构 - /arch

/arch 目录中存放架构相关的文件或目录,如 arm、x86 等,每个架构均有一个对应的目录:

ARM 架构对应的目录为 /arch/arm,其中包含了各个平台的目录、库文件目录、头文件目录等:

各个平台的配置文件保存在 /arch/arm/configs 目录中 (配置文件的命名格式为 xxx_defconfig),其中 I.MX6U-ALPHA 开发板对应的配置文件为 imx_v7_defconfig:

/arch/arm/boot/dts 目录中存放各平台的设备树文件,其中 I.MX6U-ALPHA 开发板对应的设备树文件如下图所示:

Linux 内核编译后生成的 zImage 文件位于 /arch/arm/boot 目录中:

/arch/arm/mach-xxx 目录为对应平台的驱动和初始化文件,例如 /mach-imx 目录中存放着 IMX 系列 SoC 的驱动和初始化文件:

2.块设备 - /block

/block 目录中存放块设备相关的文件,如 SD 卡、EMMC、NAND、硬盘等:

3.加密文件 - /crypto

/crypto 目录中存放加密文件,如 CRC、MD4、HASH 等:

4.帮助文档 - /Documentation

/Documentation 目录中存放 Linux 的帮助文档,如果需要了解 Linux 的某个驱动或者模块,可以在该目录中查看是否存在对应的文档,文档中包含了该模块或驱动的帮助信息:

5.驱动 - /drivers

/drivers 目录中存放驱动相关的文件,每个驱动均有一个对应的子目录,例如 /drivers/i2c 中为 I2C 相关的驱动文件:

6.固件 - /firmware

/firmware 目录中存放各个平台的固件:

7.文件系统 - /fs

/fs 目录中存放文件系统相关的文件,如 EXT2、FAT32 等:

8.头文件 - /include

/include 目录中存放头文件:

9.初始化文件 - /init

/init 目录中存放 Linux 的初始化文件:

10.进程间通信 - /ipc

/ipc 目录中存放进程间通信的相关文件:

11.内核源码 - /kernel

/kernel 目录中存放 Linux 内核的源码文件:

12.库文件 - /lib

/lib 目录中存放公用的库文件:

13.内存管理 - /mm

/mm 目录中存放内存管理相关的文件:

14.网络 - /net

/net 目录中存放网络相关的文件:

15.示例 - /samples

/samples 目录中存放示例代码:

16.脚本 - /scripts

/scripts 目录中存放编译时使用的脚本文件:

17.安全 - /security

/security 目录中存放安全相关的文件:

18.音频驱动 - /sound

/sound 目录中存放音频驱动 (音频驱动并未放在 /drivers 目录中):

19.工具 - /tools

/tools 目录存放编译时使用的工具:

20.initramfs - /usr

/usr 目录中存放 initramfs 相关的文件:

21.虚拟机 - /virt

/virt 目录存放虚拟机相关的文件:

22.帮助信息 - README

README 文件中包含了如何编译 Linux 内核、Linux 内核的目录结构等帮助信息:

23.配置文件 - .config

配置文件 .config 保存 Linux 内核的配置信息,编译 Linux 时会读取该文件中的配置项,并依据这些配置项编译对应的模块或功能:

24.编译配置文件 - Kbuild

Kbuild 文件中包含了 Linux 内核的编译配置项:

25.图形化配置项 - Kconfig

Kconfig 文件中包含了 Linux 编译时的图形化配置项:

26.Makefile

Linux 内核的 Makefile 文件:

http://www.lryc.cn/news/583425.html

相关文章:

  • 脑电分析入门指南:信号处理、特征提取与机器学习
  • 【前端】异步任务风控验证与轮询机制技术方案(通用笔记版)
  • 暑假的挣扎与自我梳理
  • 【计算机三级网络】——IP校园网大题(第二道):路由代码填空
  • 【HarmonyOS6】获取华为用户信息
  • 【Linux】·C++缺陷和思考
  • 【05】MFC入门到精通——MFC 为对话框中的控件添加变量 和 数据交换和检验
  • Laravel 动态生成 PDF:基于 KnpSnappy 实现多公司页眉页脚差异化配置
  • Java零基础笔记08(Java编程核心:面向对象编程高级 {继承、多态})
  • uniapp小程序无感刷新token
  • Docker 高级管理--容器通信技术与数据持久化
  • [论文阅读] 软件工程 | 一篇关于开源许可证管理的深度综述
  • 图像处理中的模板匹配:原理与实现
  • LabVIEW前面板颜色修改
  • 利用编码ai工具cursor写单元测试
  • MCP快速入门—快速构建自己的服务器
  • 如何使用Pytest进行测试?
  • Android-重学kotlin(协程基础)新学习总结
  • MATLAB基于voronoi生成三维圆柱形
  • 2025年人工智能、虚拟现实与交互设计国际学术会议
  • Matlab-Simulink之步长
  • PlantUML 在 IDEA 中文版中的安装与使用指南
  • VR重现红军过雪山:一场穿越时空的精神洗礼​
  • VR/AR在HMI中的创新应用:远程协作与维修的沉浸式体验
  • 【图像处理基石】图像超分辨率有哪些研究进展值得关注?
  • 【SQL】使用UPDATE修改表字段的时候,遇到1054 或者1064的问题怎么办?
  • git上传大文件启用LFS git报错 the remote end hung up unexpectedly
  • ReactNative【实战系列教程】我的小红书 6 -- 购物(含商品搜索、商品分类、商品列表)
  • 【RidgeUI AI+系列】猜密码游戏
  • 2025快手创作者中心发布视频python实现