当前位置: 首页 > news >正文

编写一个Buildroot 内核驱动

编写一个Buildroot 内核驱动

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

image-20260117082757215

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/

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

image-20260118171936747

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

#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

image-20260118172404378

编译成功

image-20260118172442489

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

image-20260118163216910

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

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

image-20260118172723586

运行

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

dmesg | grep -E hello

image-20260118173111518

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

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

git add .
git commit -m"修改说明"
git pull
git push
http://www.jsqmd.com/news/263470/

相关文章:

  • 基于深度学习的冰箱内食物检测系统(YOLOv10+YOLO数据集+UI界面+模型)
  • AI产品经理思维框架:从技术小白到商业落地的实战指南
  • 大模型技术全景图:从理论到应用,一篇全掌握!建议收藏
  • 课程论文别再凑字数!宏智树 AI 教你高效写出高分范文
  • 基于深度学习的苹果腐烂检测系统(YOLOv10+YOLO数据集+UI界面+模型)
  • 哈希表解决两数之和
  • 还在手动拼问卷?宏智树 AI:一键搞定实证研究的 “黄金调研工具”
  • 传统产品经理转型AI PM的完整指南,非常详细收藏我这一篇就够了
  • 基于深度学习的树上苹果检测系统(YOLOv10+YOLO数据集+UI界面+模型)
  • 基于深度学习的奶牛行为检测系统(YOLOv10+YOLO数据集+UI界面+模型)
  • 数据不会说话?宏智树 AI:论文数据分析的 “智能翻译官”
  • DeepSeek V4 vs Kimi K3:国产AI大模型技术对决,谁将引领春节前的新爆发?
  • ROS1 noetic 中将 Unitree G1 基于 Gazebo/RViz 关节联动【基于 ros_control】
  • AI 写论文哪个软件最好?实测揭秘!宏智树 AI 凭 “真研究” 实力领跑
  • 基于深度学习的食物检测系统(YOLOv10+YOLO数据集+UI界面+模型)
  • 救命神器!8款AI论文工具测评:本科生毕业论文全攻略
  • 零基础也能入门:AI产品经理高薪职业发展路径全解析,三步成为AI产品经理
  • 大模型产品经理工作全解析:从启动到衍生的评估体系方法论
  • AWS Machine Learning Specialty 证书备考经验
  • 2025年泳池除湿机口碑企业排名,这几家值得信赖,泳池除湿机企业哪里有普沃泰专注产品质量 - 品牌推荐师
  • AI大模型就业实战营:程序员必学,薪资涨幅超50%,职场竞争力飙升!
  • 智能体化AI实战:网络安全领域的新一代技术革命与必备技能
  • 企业级AI基础设施架构:应对大模型混战的模型无关设计指南
  • 企业闲置名酒变现!北京上门回收茅台五粮液,京城亚南专属服务 - 品牌排行榜单
  • 收藏必备!AI产品经理转型指南:从迷茫到高薪,3步搞定大模型时代最值得All in岗位
  • 2026必备!研究生论文写作TOP8一键生成论文工具测评
  • 三色球问题
  • 写论文软件哪个好?实测揭秘!宏智树 AI 凭硬核实力成学术人首选
  • 方法兰定制新风向:2026年注重口碑与工艺的推荐,SAE法兰/内螺纹法兰/分体法兰/扩口法兰,方法兰推荐排行有哪些 - 品牌推荐师
  • 计算机专业为什么一定要学大模型,以及如何学?2026最新AI大模型学习路线