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

相关推荐
lzx_0027 小时前
Linux 进程(三) 从进程状态到僵尸进程、孤儿进程
linux·服务器
FlightYe8 小时前
音视频修炼之容器与协议(四):RTSP详解
android·linux·ffmpeg·音视频·dash
刘马想放假9 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
kloc10 小时前
聊天室项目入口网关子服务的实现
linux·c++
GeW11 小时前
深圳APEC峰会倒计时:数据库与Linux运维的"隐形考场"
linux
梦到啥说啥12 小时前
Linux网络编程:UDP网络协议
linux·网络协议·udp
无足鸟ICT13 小时前
【RHCA+】ipcrm命令(删除IPC资源)
linux
星恒随风14 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
Z21-X15 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生
陈希12317 小时前
Linux 网络诊断工具实战:ping、curl、tcpdump、mtr、dig 用法详解
linux·网络·tcpdump