尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

开发板驱动环境配置(ROCK 5C为例)

开发板驱动环境配置(ROCK 5C为例)
📅 发布时间:2026/7/5 3:38:56

一、获取对应的包文件

具体要的 3 个包:

linux-image-rock-5c_6.1.84-1_all.deb(内核与驱动包)/linux-image-xxx.deb

  • 作用:这是最重要的核心包。它包含了官方打包好的内核本体(zImage/Image),以及让硬件正常工作的大量官方驱动文件(即各种.ko文件,比如屏幕和蓝牙的驱动)。没有它,系统和底层硬件无法正常通信。

linux-headers-rock-5c_6.1.84-1_all.deb(内核头文件包)/linux-headers-xxx.deb

  • 作用:对驱动开发者极其关键。安装了这个包,你就不需要在开发板上存放几 GB 大的完整内核 C 源码。只需依赖这些头文件,你就可以直接在板子上编译自己写的外部内核模块(也就是 out-of-tree 编译,比如图片中提到的mipi.ko)。

linux-libc-dev-rock-5c_6.1.84-1_all.deb(系统开发包)/linux-libc-dev-xxx.deb

  • 作用:主要服务于上层应用开发。如果你的上层 C 语言应用程序需要调用到底层的类型结构,就会依赖这个开发包。图片建议一并安装以防后续开发中报错。

总结来说:Image 包负责让系统和基础硬件跑起来;Headers 包为你自己写底层驱动提供环境;Libc-dev 包则为你写上层 C 应用程序提供底层结构支持。

二、对齐板端环境

Linux 驱动有一种极其变态的安全机制叫vermagic(版本魔法)。也就是说:如果你的驱动是用 6.1.84 内核代码编译出来的,但在版本号为 5.10 甚至 6.1.43 的板端内核上,是死活加载不进去的(强行insmod会直接报 Invalid module format)。

这就是为什么你需要把上面这三个包拷贝到板子上进行安装更新的原因。

请连通网络进入 ROCK 5C 开发板(使用 SSH 登录板子或者接显示器进入板端终端),执行以下操作:

  1. 将刚才选出名字带rock-5c的那 3 个.deb文件存放到板子的某个目录(比如~/pkg/)。

在该目录下运行统一安装命令:

sudo dpkg -i *rock-5c*.deb

等它安装刷新完了(大概两三分钟),重启你的板子:

sudo reboot

重新进入系统,运行下面这条命令查看系统现在实际运行的内核:

uname -r

然写着:6.1.84-xxxxx(版本数字对应上你的文件名即可),那么你的目标运行环境就算对齐、搭建完毕了!

三、该"本地编译"还是"交叉编译"?(这决定你的效率)

推荐使用【本地板端编译(Native Compile)】来渡过入门期!因为我们往 ROCK 5C 里安装了linux-headers.deb,此时你的板子本身就已经成为了一台可以直接开发、直接出驱动.ko并立即装载运行的 ARM 开发机了。不需要碰你的 PC 宿主环境配置了。

你可以把这个作为将来的优化项:先把简单的 hello.c 写成能在板子里跑起来后,之后周末如果有大片时间,再去自己的 Windows/Ubuntu 电脑上研究挂起交叉编译系统

四、测试

新建并打开驱动文件hello.c:

#include <linux/init.h> #include <linux/module.h> static int __init my_first_driver_init(void) { printk("=============Hello Kernel, RK3588 Driver Module Inserted!!========\n"); return 0; // 返回 0 说明加载成功 } static void __exit my_first_driver_exit(void) { printk("=============Bye Bye! Module Removed===========\n"); } module_init(my_first_driver_init); module_exit(my_first_driver_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Dong"); // 开发者名字,随便 MODULE_DESCRIPTION("My first module on Rock5c");

Makefile(注意第二行千万不能打空格,必须是Tab键出来的留白):

obj-m := hello.o # 把上面装进系统里的 header 核心挂在进来 KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) all: $(MAKE) -C $(KDIR) M=$(PWD) modules clean: $(MAKE) -C $(KDIR) M=$(PWD) clean

make编译:

make

如果没有报错,运行ls命令,你就会看到新生成的名为hello.ko的二进制文件。

驱动注入 Linux:

# 清空过去的系统内核乱七八糟信息 sudo dmesg -c sudo insmod hello.ko sudo dmesg

此时你将清楚地看到在你的屏幕内核回显里面赫然挂着绿字的=============Hello Kernel, RK3588 Driver Module Inserted!!========

相关新闻

  • 当我们在谈论“开源低科技”时,我们在谈论什么?
  • Plone开发环境搭建:pip install的正确用法与边界
  • 本地代码编辑器集成DeepSeek模型:从原理到实践的完整指南

最新新闻

  • AI智能体开发指南:从入门到实战应用
  • 第三方平台信息不一致,企业说明材料该怎么写才稳?
  • OpenCV+YOLO实战:快速搭建机器人视觉感知系统
  • Cypress vs Playwright:端到端测试框架实战选型与迁移指南
  • Yale OpenHand:重新定义机器人抓取的开源硬件革命
  • 开题写作告别反复改稿,okbiye 一站式 AI 开题功能打通科研起步全流程

日新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号