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

编写一个Buildroot 驱动

编写一个Buildroot 驱动模块

由于Buildroot 不支持ssh

故采用adb调试

adb连接

列出设备

adb devices

image-20260116202202616

连接设备

adb shell

image-20260116202213317

驱动模块编译(交叉编译)

驱动模块源码

#include <linux/module.h>     /* 模块相关宏和函数 */
#include <linux/kernel.h>     /* printk日志函数 *//* 加载函数(驱动入口),当驱动被 insmod 加载时自动执行 */
static int __init helloworld_init(void)
{printk("helloworld_init\r\n"); // 内核日志打印return 0; // 返回0代表加载成功
}/* 卸载函数(驱动出口),当驱动被 rmmod 卸载时自动执行 */
static void __exit helloworld_exit(void)
{printk("helloworld_exit\r\n");
}/* 下面这两行,告诉内核入口和出口分别是哪两个函数 */
module_init(helloworld_init);
module_exit(helloworld_exit);/* 这3个是模块信息声明 */
MODULE_LICENSE("GPL v2");               /* 模块许可证 */
MODULE_VERSION("1.0");                  /* 模块版本,可选 */
MODULE_DESCRIPTION("helloworld Driver");/* 模块描述,可选,一般用于 lsmod 时显示 */

功能简单解释就是

加载驱动:打印helloworld_init

卸载驱动:打印helloworld_exit

找到交叉编译工具路径

find prebuilts -name "*gcc" -type f

image-20260116221419705

一般在SDK路径下找

配置Makefile

# 目标架构
# RK3566 是 ARM64 架构
ARCH ?= arm64# 交叉编译工具链前缀
# 最终会使用:aarch64-linux-gnu-gcc / ld / objcopy 等
CROSS_COMPILE ?= aarch64-linux-gnu-# Linux 内核源码目录
# 必须是已经配置并且执行过 prepare/modules_prepare 的内核
#作用:告诉 Makefile 用哪个内核版本的源码和头文件进行编译链接。
KDIR := $(HOME)/Desktop/SDK/kernel# 当前外部模块源码所在目录
# 内核会在这个目录下查找 obj-m 指定的模块源码
PWD  := $(shell pwd)# 要编译的外部内核模块
# hello_world.c  →  hello_world.ko
obj-m += hello_world.o# 默认目标:编译内核模块
all:# 调用内核源码目录下的 Makefile# M=$(PWD) 表示这是一个“外部模块”# ARCH / CROSS_COMPILE 指定目标架构和交叉编译器$(MAKE) -C $(KDIR) M=$(PWD) \ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules# 清理编译生成的中间文件
clean:$(MAKE) -C $(KDIR) M=$(PWD) clean

PS:主要寻找配置

交叉编译工具链前缀:aarch64-linux-gnu-

Linux 内核源码目录路径:$(HOME)/Desktop/SDK/kernel

编译

make

模块输出路径

image-20260116222818781

驱动测试

将驱动复制进rk3566板卡

使用ADB

如果ADB已经连上板卡,则先断开连接

exit

寻找板卡设备

adb devices

image-20260116223436138

将本地的驱动模块文件发送到板卡

adb -s 6c392aca38ad7c4b push F:\Desktop\SSH_Ubuntu18\hello_world.ko /data/local/tmp/hello_world.ko

image-20260116223652779

加载驱动模块:

insmod hello_world.ko	

查看 驱动 相关日志

dmesg | grep -E 'hello'	

image-20260116223813105

卸载模块驱动

rmmod hello_world.ko

查看 驱动 相关日志

dmesg | grep -E 'hello'	

image-20260116223939679

http://www.jsqmd.com/news/254949/

相关文章:

  • 20260115紫题训练总结 - Link
  • JavaOOP
  • 《欲罢不能:刷屏时代如何摆脱行为上瘾》
  • 家用照片打印天花板!佳能 PIXMA iP3500 驱动让色彩还原度拉满
  • Redis 事务(MULTI/EXEC)与 Lua 脚本的核心区别 - 详解
  • 办公党狂喜!惠普 Deskjet F4180 一体机驱动稳定版,打印扫描复印全在线
  • 2026年嘉应学院寒假算法冬令营结训赛
  • STM32上进行卡尔曼滤波
  • 上海团队与华盛顿大学联手:AI实现医学图像精准识别突破
  • SEO救星上线!Google Search Console新功能手把手教你秒提收录
  • 多模一体破局:金仓数据库引领文档数据库国产化新征程
  • 微信立减金回收,2026年最聪明的省钱新姿势你真的知道吗 - 京顺回收
  • 跨平台虚拟机网络故障排查
  • 金仓数据库如何以“多模融合”重塑文档数据库新范式:技术实战与代码示例
  • 新加坡科技设计大学:AI音乐生成终于学会“听懂“人类喜好了
  • 《企业元宇宙架构设计,AI应用架构师如何打造经典》
  • Meta团队首次发现:AI研究助手的成功竟然靠“不断试错“?
  • 基于 Flutter × OpenHarmony 构建应用选择主题部分实现
  • 激发集体好奇心的团队活动设计
  • Doris数据导入方案大全:从Kafka到HDFS的完整链路实现
  • 实用指南:React Native学习路径与资源推荐
  • 导师推荐8个AI论文工具,专科生轻松搞定毕业论文!
  • 数据持久化——PlayerPrefs
  • 100个实用小工具8-deepCFD二维流场神经网络 - 详解
  • 2026国内最新针织高弹面料品牌top10推荐!广东广州等地优质面料供应商权威榜单发布,品质与创新双优助力服饰产业升级 - 品牌推荐2026
  • RHCSE--ansible2--剧本
  • 亲测好用9个AI论文平台,专科生毕业论文必备!
  • 林雪平大学团队让电脑配对图片速度提升70%
  • 蒙特利尔大学破解AI检索答题难题:让机器学会“挑三拣四“读文档
  • STM32WB55串口蓝牙模块