编译替换内核_设备树_驱动_IMX6ULL

简介: 编译替换内核_设备树_驱动_IMX6ULL

前言:

使用的开发板为韦东山老师的 IMX6ULL


为什么编译驱动程序之前要先编译内核?

1.驱动程序要用到内核文件:

比如驱动程序中这样包含头文件:#include ,其中的 asm 是 一个链接文件,指向 asm-arm 或 asm-mips,这需要先配置、编译内核才会生成 asm 这个链接文件。


2.编译驱动时用的内核、开发板上运行到内核,要一致:

开发板上运行到内核是出厂时烧录的,你编译驱动时用的内核是你自己编译的,这两个内核不一致时会导致一些问题。所以我们编译驱动程序前,要把自己 编译出来到内核放到板子上去,替代原来的内核。


3.更换板子上的内核后,板子上的其他驱动也要更换:

板子使用新编译出来的内核时,板子上原来的其他驱动也要更换为新编译出来的。所以在编译我们自己的第 1 个驱动程序之前,要先编译内核、模块,并且放到板子上去。


编译内核步骤

不同 的 开 发 板 对 应 不 同 的 配 置 文 件 , 配 置 文 件 位 于 内 核 源 码 arch/arm/configs/目录。

内核(kernel) 的编译过程如下(按顺序):

  • make mrproper: Linux下面去编译项目之前,一般常会用make mrproper去先删除之前编译所生成的文件和配置文件,备份文件等
  • make 100ask_imx6ull_defconfig:配置给哪个板子编译
  • make zImage -j4: 编译内核 -j4加快编译速度
  • make dtbs: 编译设备树文件


编译完成后生成的文件如下图:


32a546de1e8f215eb30071bdacb58120_1133697440f342ad8c8edbc2a0d6716a.png


在 arch/arm/boot 目录下生成 zImage 内核文件, 在 arch/arm/boot/dts 目录下生成设备树的二进制文件 100ask_imx6ull-14x14.dtb。


把这 2 个文件复制到/home/book/nfs_rootfs 目录下备用,

4aa8910fe8226d586789927e47164860_a5fb561dfc5f4e6db931d952ee806b7d.png

编译内核模块

进入内核源码目录后,就可以编译内核模块了:

内核模块编译完成后如图:

安装内核模块到 Ubuntu 某个目录下备用

可以先把内核模块安装到 nfs 目录(/home/book/nfs_rootfs)

安装好驱动后的/home/book/nfs_rootfs/目录结构如图 5.6 所示:

安装内核和模块到开发板上

1.先在开发板挂载 Ubuntu 的 NFS 目录

不知道如何挂载可以看 :开发板挂载 Ubuntu 的 NFS 目录

2.输入命令 uname -a 显示内核版本修改时间 2020

3.复制文件到开发板上

在上面 Ubuntu 的/home/book/nfs_rootfs 目录下,已经有了 zImage、 dtb 文件,并且有 lib/modules 子目录(里面含有各种模块)。


接下来要把这些文件复制到开发板上


假设 Ubuntu IP 为 192.168.5.11, 在开发板上执行以下命令(按顺序)

4.reboot重启后再输入命令 uname -a 显示内核版本修改时间 2023

相关文章
|
Ubuntu Linux 虚拟化
Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)
Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)
1116 0
Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)
|
搜索推荐 Linux Android开发
如何根据自己的开发板型号下载和配置交叉编译链
【8月更文挑战第24天】本指南详细介绍了为特定开发板下载及配置交叉编译链的过程。首先,需明确开发板型号与架构,通过查阅文档了解其处理器架构和支持的操作系统。其次,根据开发板架构及目标操作系统确定所需的交叉编译链类型。下载环节推荐三种途径:在线搜索、访问官方站点以及开源社区。安装阶段涉及解压文件并设置环境变量,以确保能在终端直接调用交叉编译工具。最后,通过检查版本信息及编译测试程序验证交叉编译链是否安装正确。整个过程中应注意选择合适的版本、遵循安装指导并妥善处理遇到的问题。
506 3
|
存储 缓存 网络协议
深入理解Linux网络——内核是如何发送网络包的
一、相关实际问题 1. 查看内核发送数据消耗的CPU时应该看sy还是si 2. 在服务器上查看/proc/softirqs,为什么NET_RX要比NET_TX大得多 3. 发送网络数据的时候都涉及那些内存拷贝操作 4. 零拷贝到底是怎么回事 5. 为什么Kafka的网络性能很突出
|
移动开发
USB-TTL连接ESP8266不识别串口/串口助手回复乱码
【11月更文挑战第14天】当USB-TTL连接ESP8266出现不识别串口或乱码问题时,应检查硬件连接(线路、电源)、串口设置(驱动、串口选择、数据位等)及软件固件(AT指令、固件版本、串口助手)。确保所有设置正确无误。
2521 0
|
存储 Ubuntu Linux
linux系统中固化和更新uboot、zImage和dtb方法(经典)
linux系统中固化和更新uboot、zImage和dtb方法(经典)
2445 0
|
iOS开发 MacOS Windows
电脑怎么截图?截屏电脑快捷键ctrl加什么?
截图是我们日常使用电脑过程中非常常见的操作之一。无论是想保存有用的信息、分享有趣的内容,还是记录某个错误信息,截图都是一个简单而有效的方式。但是,不同的操作系统和需求会决定使用不同的方法来截图。接下来,我们将详细介绍几种在Windows和Mac电脑上常见的截图方法,帮助您快速掌握这一技能。
电脑怎么截图?截屏电脑快捷键ctrl加什么?
|
缓存 Linux 芯片
Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核)(中)
Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核)(中)
2353 0
Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核)(中)
|
传感器 芯片
嵌入式通信协议全解析:SPI、I²C、UART详解(附带面试题)
通信是指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。从广义上来说,通信是指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法、任意媒质,将信息从某方准确安全地传送到另方。在出现电波传递通信后,通信被单一解释为信息的传递,是指由一地向另一地进行信息的传输与交换,其目的是传输消息。通信方式包括利用“电”来传递消息的电信,这种通信具有迅速、准确、可靠等特点,且几乎不受时间、地点、空间、距离的限制,因而得到了飞速发展和广泛应用。
7184 0
|
Ubuntu Linux 开发工具
Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)
Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)
699 0
Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)

热门文章

最新文章