【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 这个也是

相关推荐
2401_8920709815 小时前
【Linux C++ 日志系统实战】LogFile 日志文件管理核心:滚动策略、线程安全与方法全解析
linux·c++·日志系统·日志滚动
雪可问春风15 小时前
docker环境部署
运维·docker·容器
lwx91485216 小时前
Linux-Shell算术运算
linux·运维·服务器
翻斗包菜16 小时前
PostgreSQL 日常维护完全指南:从基础操作到高级运维
运维·数据库·postgresql
somi716 小时前
ARM-驱动-02-Linux 内核开发环境搭建与编译
linux·运维·arm开发
双份浓缩馥芮白16 小时前
【Docker】Linux 迁移 docker 目录(软链接)
linux·docker
海的透彻16 小时前
nginx启动进程对文件的权限掌控
运维·chrome·nginx
黄昏晓x16 小时前
Linux ---- UDP和TCP
linux·tcp/ip·udp
路溪非溪16 小时前
Linux驱动开发中的常用接口总结(一)
linux·运维·驱动开发
此刻觐神17 小时前
IMX6ULL开发板学习-01(Linux文件目录和目录相关命令)
linux·服务器·学习