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

[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.xdnf.cn/news/15132.html

相关文章:

  • 【Linux】权限的概念及理解
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分 | 以太网传输实验例程
  • RabbitMQ 4.1.1-Local random exchange体验
  • 【linux】ssh使用-X参数后报错:X11 forwarding request failed on channel 0
  • 深度学习 最简单的神经网络 线性回归网络
  • Python-文件操作-StringIO和BytesIO-路径操作-shutil模块-csv,ini序列化和反序列化-argparse使用-学习笔记
  • 蛋白质序列-kappa参数计算算法解读
  • 苍穹外卖项目日记(day04)
  • qt-C++笔记之布局管理`space` 和 `margin`的区别
  • 基于pytorch.nn模块实现线性模型
  • c语言中的数组II
  • OpenCV图片操作100例:从入门到精通指南(4)
  • (C++)任务管理系统(正式版)(迭代器)(list列表基础教程)(STL基础知识)
  • Android-重学kotlin(协程源码第一阶段)新学习总结
  • STM32-看门狗
  • (5)机器学习小白入门 YOLOv:数据需求与图像不足应对策略
  • qml加载html以及交互
  • Qt去噪面板搭建
  • Flutter基础(前端教程⑦-Http和卡片)
  • 【EGSR2025】材质+扩散模型+神经网络相关论文整理随笔(二)
  • 图片的拍摄创建日期怎么改?保护好图片信息安全的好方法
  • 李宏毅NLP-9-语音转换
  • 全球发展币GDEV:从中国出发,走向全球的数字发展合作蓝图
  • 本地Qwen中医问诊小程序系统开发
  • kubernetes存储入门
  • Flutter编译安卓应用时遇到的compileDebugJavaWithJavac和compileDebugKotlin版本不匹配的问题
  • 【c++学习记录】状态模式,实现一个登陆功能
  • huggingface笔记:文本生成Text generation
  • WinUI3入门16:Order自定义排序
  • WouoUI-Page移植