news 2026/4/16 11:02:55

编写一个Buildroot 内核驱动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
编写一个Buildroot 内核驱动

编写一个Buildroot 内核驱动

PS:内核驱动只能在/kernel/drivers/目录下

Makefile文件的编写

主要注意Makefile文件的编写(路径,包含)

在该路径下先新建一个用户内核驱动文件夹,用于存放用户编写的驱动

user_rk3566_-kernel-driver

进入该文件夹,新建一个02序号用户驱动文件夹,用于存放02驱动

02_kernel_helloworld

编写kernel/drivers/user_rk3566_-kernel-driver/02_kernel_helloworld路径下的Makefile(添加驱动源文件02_kernel_helloworld.c进编译)

vim Makefile

Makefile:

#obj-y :内核驱动 #obj-m :模块驱动 obj-y += 02_hello_world.o

返回到kernel/drivers/user_rk3566_-kernel-driver路径,添加Makefile(添加驱动源文件的文件夹02_kernel_helloworld/进编译)

Makefile:

#添加驱动文件所在文件夹进编译,需要带“/”符号,表示目录(文件夹) obj-y += 02_kernel_helloworld/

返回到kernel/drivers路径,添加Makefile(添加驱动源文件的文件夹user_rk3566_-kernel-driver/进编译)

Makefile:

obj-y +=/user_rk3566_-kernel-driver/

随便找个地方,把文件夹路径丢进去

OK,由于SDK路径的Makefile文件已经将kernel/drivers路径添加,我们就不需要自己手动添加

以上就是所需要添加的Makefile文件。

主要目的是告诉make工具在kernel/drivers/user_rk3566_-kernel-driver/02_kernel_helloworld路径下是我们的驱动源代码02_kernel_helloworld.c,需要添加进编译

驱动文件编写

进入该02_kernel_helloworld,开始驱动编写

vim 02_hello_world.c

02_hello_world.c

/* by yours.tools - online tools website : yours.tools/zh/tiaoseban.html */ #include <linux/module.h> /* 模块相关宏和函数 */ #include <linux/kernel.h> /* printk日志函数 */ /* 加载函数(驱动入口),当驱动被 insmod 加载时自动执行 */ static int __init helloworld_init(void) { printk("02_helloworld_init\r\n"); // 内核日志打印 return 0; // 返回0代表加载成功 } /* 卸载函数(驱动出口),当驱动被 rmmod 卸载时自动执行 */ static void __exit helloworld_exit(void) { printk("02_helloworld_exit\r\n"); } /* 下面这两行,告诉内核入口和出口分别是哪两个函数 */ module_init(helloworld_init); module_exit(helloworld_exit); /* 这3个是模块信息声明 */ MODULE_LICENSE("GPL v2"); /* 模块许可证 */

编译

我们需要返回到kernel内核文件夹的上一个路径

在我这是SDK/,这里包含了编译脚本,须在这里运行编译命令

./build.sh kernel

编译成功

返回源代码路径查看编译文件(可选)

可以看到,内核驱动编译后,不会像模块驱动那样生成.ko文件

实际,驱动相关的内容已经编译进内核镜像中(root.img)

运行

将该镜像烧录,等板子运行后查看日志

dmesg | grep -E hello

可以看到驱动上电后自动运行,这就是和模块驱动的一个显著区别,不需要手动挂载

修改完后,git提交一下代码更改(可选)

git add . git commit -m"修改说明" git pull git push
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:40:50

Python+django的基于学生行为的在线教育 学习选课成绩分析系统可视化统计图没有

目录基于学生行为的在线教育学习选课成绩分析系统可视化统计图摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于学生行为的在线教育学习选课成绩分析系统可视化统计图摘要 该系统采用…

作者头像 李华
网站建设 2026/4/15 20:31:58

智能学术写作:AI平台评测与文本润色服务优化

AI论文工具对比分析 工具名称 处理速度 降重幅度 独特优势 aicheck 极快 高&#xff08;40%→7%&#xff09; 精准保留专业术语 askpaper 快 中高&#xff08;45%→8%&#xff09; 上下文逻辑完整 秒篇 较快 高&#xff08;38%→6%&#xff09; 简化操作界面 a…

作者头像 李华
网站建设 2026/4/7 12:30:50

RK3588 上手 YOLOv11:一步步教你完成高性能目标检测部署

文章目录 数据集根目录(根据实际情况修改) 划分比例 创建目标文件夹 获取所有图像文件 计算各数据集的文件数量 复制文件到对应文件夹 训练集、验证集、测试集路径 类别数量 类别名称 若使用自定义数据集,需修改 “train”“val”“test” 的路径为你划分后的数据集路径,“…

作者头像 李华
网站建设 2026/4/15 5:10:18

YOLOv8模型压缩终极方案:LAMP剪枝实战,速度提升不掉点

YOLOv8模型瘦身术:深度解析与实战LAMP剪枝 (2021) 文章目录 YOLOv8模型瘦身术:深度解析与实战LAMP剪枝 (2021) 引言:为何模型剪枝至关重要? 1. 理论深潜:LAMP剪枝的核心思想与创新 1.1 幅度剪枝 (MP) 的“简单与粗暴” 1.2 LAMP 的核心创新点:最小化L2失真 1.3 巧妙化简:…

作者头像 李华
网站建设 2026/4/5 22:04:51

基于深度学习的食物检测系统(YOLOv10+YOLO数据集+UI界面+模型)

一、项目介绍 YOLOv10过敏原食品检测系统 是一个基于YOLOv10&#xff08;You Only Look Once version 10&#xff09;目标检测算法的智能系统&#xff0c;专门用于检测和识别含有常见过敏原的食品。该系统能够自动识别30种常见过敏原食品&#xff0c;包括坚果、乳制品、蛋类、特…

作者头像 李华
网站建设 2026/4/15 18:39:57

还在手动拼问卷?宏智树 AI:一键搞定实证研究的 “黄金调研工具”

作为深耕论文写作科普的教育博主&#xff0c;后台每天都被粉丝的问卷难题刷屏&#xff1a;“翻遍文献凑量表&#xff0c;设计的问卷却被导师说‘逻辑不通’”“回收的问卷数据一半无效&#xff0c;根本没法用于分析”“好不容易做完调研&#xff0c;却不知道怎么把数据转化为论…

作者头像 李华