(正点原子)正点原子Linux内核编译

一、Linux内核来源

        1、官网www.kernel.org.com

                官网提供各个版本的Linux内核,可以下载一个版本的Linux内核,根据自己的需求对内核进行修改,但是难度很大,一般不推荐。

        2、SOC厂商提供的Liunx内核

                SOC厂商也是从官网下载一个版本的Linux内核,根据自己的情况对这个版本的Linux内核进行修改,并且自己维护,一般推荐使用SOC厂商提供的Linux内核在根据自己的开发板进行编译和修改。

        3、开发板厂商提供的Linux内核

                开发板厂商从SOC厂商获取到SOC自己修改后的Linux内核,根据自己开发板的情况对其再次修改。

二、正点原子提供的Linux内核编译

        1、对Linux内核进行解压

        2、创建shell脚本,对Linux内核进行编译

#!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 -j12

        distclean:清理工程。

        imx_v7_defconfig:配置工程。

        menuconfig:打开图形配置界面,对Linux进行配置,图形配置后要进行保存,不然再次编译后清理工程会把你配置好的图形配置给清除掉

        按两次esc退出图形化配置界面。

        all:编译所有文件。

注:编译内核之前需要先在 ubuntu 上安装 lzop 库,否则内核编译会失败!

sudo apt-get install lzop

        修改的dtc-parser.tab.c 文件在编译过程中被还原,修改后的部分又被变回原来的。所以编译出错。

找到文件这两个文件将YYLTYPE yylloc 外部申明

        再次编译,编译完成以后就会在 arch/arm/boot 这个目录下生成一个叫做 zImage 的文件, zImage 就是我们要用的 Linux 镜像文件。另外也会在 arch/arm/boot/dts 下生成很多.dtb 文件,这些.dtb 就是设备树文件。我们需要的设备数文件是imx6ull-14x14-emmc-7-1024x600-c.dtb

三、使用网络将zImage和设备树下载到开发板验证

        1、将zImage和需要的设备树文件拷贝到tftp文件夹下

        2、serialCRT中Uoot命令下载zImage和设备数

 

        3、启动Linux内核

        

        内核启动成功,屏幕出现正点原子的loge。说明Linux内核的移植成功。

四、Linux内核文件分析

        

1、 arch 目录

        这个目录是和架构有关的目录,比如 arm、 arm64、avr32、 x8等等架构。每种架构都对应一个目录。

2、block 目录

        block 是 Linux 下块设备目录,像 SD 卡、 EMMC、 NAND、硬盘等存储设备就属于块设备,block 目录中存放着管理块设备的相关文件。

3、crypto 目录

        crypto 目录里面存放着加密文件,比如常见的 crc、 crc32、 md4、 md5、 hash 等加密算法。

4、 Documentation 目录

        此目录里面存放着 Linux 相关的文档,如果要想了解 Linux 某个功能模块或驱动架构的功
能,就可以在 Documentation 目录中查找有没有对应的文档。
5、 drivers 目录

        驱动目录文件,此目录根据驱动类型的不同,分门别类进行整理,比如 drivers/i2c 就是 I2C
相关驱动目录, drivers/gpio 就是 GPIO 相关的驱动目录,这是我们学习的重点。
6、 firmware 目录

        此目录用于存放固件。
7、 fs 目录

        此目录存放文件系统,比如 fs/ext2、 fs/ext4、 fs/f2fs 等,分别是 ext2、 ext4 和 f2fs 等文件系统。

8、include 目录

        头文件目录

9、 init 目录

        此目录存放 Linux 内核启动的时候初始化代码。
10、 ipc 目录

        IPC 为进程间通信, ipc 目录是进程间通信的具体实现代码。
11、 kernel 目录
Linux 内核代码。
12、 lib 目录

        lib 是库的意思, lib 目录都是一些公用的库函。
13、 mm 目录

        此目录存放内存管理相关代码。
14、 net 目录
        此目录存放网络相关代码。
15、 samples 目录
        此目录存放一些示例代码文件。
16、 scripts 目录
        脚本目录, Linux 编译的时候会用到很多脚本文件,这些脚本文件就保存在此目录中。
17、 security 目录
        此目录存放安全相关的文件。
18、 sound 目录
        此目录存放音频相关驱动文件,音频驱动文件并没有存放到 drivers 目录中,而是单独的目
录。
19、 tools 目录
        此目录存放一些编译的时候使用到的工具。
20、 usr 目录
        此目录存放与 initramfs 有关的代码。
21、 virt 目录
        此目录存放虚拟机相关文件。
22、 .config 文件
        跟 uboot 一样, .config 保存着 Linux 最终的配置信息,编译 Linux 的时候会读取此文件中
的配置信息。最终根据配置信息来选择编译 Linux 哪些模块,哪些功能。
23、 Kbuild 文件
        有些 Makefile 会读取此文件。

24、 Kconfig 文件
        图形化配置文件。

25、Makefile文件

        Linux 顶层 Makefile 文件,建议好好阅读一下此文件。
26、 README 文件
        此文件详细讲解了如何编译 Linux 源码,以及 Linux 源码的目录信息,建议仔细阅读一下
此文件。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tofu_Cabbage

你的打赏是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值