【Linux驱动】环境搭建和开发板操作 下篇

一,编译的需要和流程

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

  1. 驱动程序要用到内核文件:
    比如驱动程序中这样包含头文件:#include <asm/io.h>,其中的 asm 是
    一个链接文件,指向 asm-arm 或 asm-mips,这需要先配置、编译内核才会生成
    asm 这个链接文件。
    编译驱动时用的内核、开发板上运行到内核,要一致:
    开发板上运行到内核是出厂时烧录的,你编译驱动时用的内核是你自己编译
    的,这两个内核不一致时会导致一些问题。所以我们编译驱动程序前,要把自己
    编译出来到内核放到板子上去,替代原来的内核。
  2. 更换板子上的内核后,板子上的其他驱动也要更换:
    板子使用新编译出来的内核时,板子上原来的其他驱动也要更换为新编译出
    来的。所以在编译我们自己的第 1 个驱动程序之前,要先编译内核、模块,并且
    放到板子上去。
    配置编译的流程:
  3. 内核,设备树,驱动
  4. 将三者放到板子上
    3 . 编译测试第一个驱动程序

二, 编译内核与设备树

第一行命令:

进入到内核源码的目录

第二行命令:mrproper 是内核源码的清理目标

彻底清理源码目录中之前编译生成的所有文件、配置文件和临时文件,把源码恢复到 "干净" 的初始状态,避免旧的编译产物干扰新的编译。

第三行命令:

作用:加载针对 100ask_imx6ull 开发板 的默认配置文件,生成内核编译的核心配置文件 .config

第四行命令:
zImage 是生成压缩格式的 ARM 内核镜像 ,是嵌入式设备常用的内核镜像格式。
-j4 表示用 4 个线程并行编译,利用多核 CPU 加快编译速度

第五行命令:
dtbs 是编译 Device Tree Blob(设备树文件)的目标 。

作用:编译描述开发板硬件信息的设备树文件,生成 .dtb 文件。设备树会告诉内核开发板的硬件布局、外设信息等,是内核识别硬件的关键。

第六行:

把弄好的文件放到~/nfs_rootfs目录下进行保存

这里只展示了一个拷贝,另外一个设备树也要进行拷贝

然后编译这个驱动程序模块

然后安装模块


5.4****安装内核和模块到开发板上
假设:在 Ubuntu 的/home/book/nfs_rootfs 目录下,已经有了 zImage、
dtb 文件,并且有 lib/modules 子目录(里面含有各种模块)。
接下来要把这些文件复制到开发板上,在 Ubuntu 上使用 adb 命令:

复制代码
cd /home/book/nfs_rootfs
adb push zImage /boot
adb push 100ask_imx6ull-14x14.dtb /boot
adb push lib/modules /lib

最后,在开发板上执行"sync"命令,再重启开发板,它就使用新的 zImage、 dtb、模块了

三,开发板的第一个驱动程序

首 先 , 进入100ask_imx6ull_src_bin目录,修改Makefile文件 "KERN_DIR"为自己的内核所在路径。如图5.7红框所示,如果你的内核源码 不在此目录则根据你的实际情况进行修改:

然后我们把对应的文件进行编译,然后扔到开发板子上使用对应的功能就好了
ls dev/----- 这个是用来检查是否生成设备节点的
cat proc/devices 这个也是

相关推荐
便利店10241 分钟前
系统活动一抓留存!深入 Linux C/C++ 调试工具之 sysdig
linux·运维·服务器·sysdig
g3voip34 分钟前
工业防水电话到底怎么选?隧道、管廊与码头的需求差异
服务器·网络·信息与通信·ip
qetfw43 分钟前
Bash 变量:export、位置参数与默认值展开验证
linux·开发语言·chrome·bash
智能运维指南1 小时前
企业 IT 运维自动化平台怎么选?从场景匹配到 POC 验证的完整评估框架
运维·自动化·自动化运维·嘉为蓝鲸
其实防守也摸鱼1 小时前
Cylab在线靶场——CTF中的通用技能
linux·数据库·学习·算法·靶场·ctf·学习网络安全
.Bryce.1 小时前
从强化学习到Agentic RL:让Agent在“干活“中自己变聪明
服务器·网络·agent·rag·agentic rl
ZYH_06011 小时前
rhcsa课程复习题
服务器·bash
用户565190394492 小时前
高危 编号99999漏洞情报(26年8-10月) 多个严重漏洞:PHP执行远程控制代码 / Linux虚拟机-宿主越界(CVE-2026-99999...
服务器
toooooop82 小时前
CentOS 7 内核 3.10.0-1160.119.1 升级指南
linux·运维·centos
云飞云共享云桌面2 小时前
广东东莞制造工厂10人共享一台三维设计服务器
运维·服务器·3d·自动化·制造