0
点赞
收藏
分享

微信扫一扫

linux系统移植篇(三)——Linux 的介绍

书写经典 2022-05-01 阅读 24

linux系列目录:
linux基础篇(一)——GCC和Makefile编译过程
linux基础篇(二)——静态和动态链接
ARM裸机篇(一)——i.MX6ULL介绍
ARM裸机篇(二)——i.MX6ULL启动过程
ARM裸机篇(三)——i.MX6ULL第一个裸机程序
ARM裸机篇(四)——重定位和地址无关码
ARM裸机篇(五)——异常和中断
linux系统移植篇(一)—— linux系统组成
linux系统移植篇(二)—— Uboot使用介绍
linux系统移植篇(三)——Linux 的介绍

文章目录


一、Linux 介绍

Linux 由 Linux 基金会管理与发布, Linux 官网为 https://www.kernel.org,NXP 会从 https://www.kernel.org 下载某个版本的 Linux 内核,然后将其移植到自己的 CPU上,测试成功以后就会将其开放给 NXP 的 CPU 开发者。开发者下载 NXP 提供的 Linux 内核,然后将其移植到自己的产品上。

Linux 内核采用宏内核架构,即 Linux 大部分功能都会在内核中实现,如进程管理、内存管理、设备管理、文件管理以及网络管理等功能,Linux 在发展的过程中,引入了内核模块(Loadable Kernel Module, LKM)机制,内核模块全称为动态可加载内核模块,就是在内核运行时可以动态加载一组目标代码来实现某些特定的功能,在这过程中不需要重新编译内核就可以实现动态扩展。
在这里插入图片描述

二、Linux 内核的编译与烧录

1. 获取Linux kernel

野火提供的内核源码下载链接: https://e.coding.net/embedfire/lubancat/ebf_linux_kernel.git
获取所使用的ebf_4.19.35_imx6ul分支:

git clone  -b   ebf_4.19.35_imx6ul https://e.coding.net/embedfire/lubancat/ebf_linux_kernel.git

2.Linux 内核目录分析

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. arch 目录
    这个目录是和架构有关的目录,比如 arm、 arm64、 avr32、 x86 等等架构。每种架构都对应一个目录,在这些目录中又有很多子目录,比如 boot、 common、 configs 等等.这些子目录用于控制系统引导、系统调用、动态调频、主频设置等。 arch/arm/configs 目录是不同平台的默认配置文件: xxx_defconfig,例如arch/arm/configs/npi_v7_defconfig就是我们所使用的配置文件。
    arch/arm/boot/dts 目录里面是对应开发平台的设备树文件。
    arch/arm/boot 目录下会保存编译出来的 Image 和 zImage 镜像文件,而 zImage 就是我们要用的 linux 镜像文件。
    arch/arm/mach-xxx 目录分别为相应平台的驱动和初始化文件,比如 mach-imx 目录里面就是 I.MX 系列 CPU 的驱动和初始化文件。

3. 编译内核

编译 Kernel 有两种方法,一种是编译较为通用的 zImage,常用于构建成镜像固件。另一种则是编译成 deb 安装包,将其下载到板子上安装即可更新 Kernel。
编译内核 zImage:

# 清除之前编译环境
make mrproper
# 编译内核
make ARCH=arm npi_v7_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8

编译得到的 zImage 内核在 arch/arm/boot 目录下,设备树在 arch/arm/boot/dts 目录下设备树分为emmc 版本 imx6ull-mmc-npi.dtb 以及 nand 版本 imx6ull-nand-npi.dtb 。

4.内核的烧写

使用上一章u-boot已经构建好的TFTP 烧写 Linux 内核:

tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk-emmc.dtb
bootz 80800000 - 83000000
举报

相关推荐

0 条评论