香橙派5pro驱动开发(一)

news/2025/9/30 12:01:42/文章来源:https://www.cnblogs.com/ajream/p/19120668

前言

前段时间买了一个orangepi5pro开发板,准备学习驱动开发,但是网上教程基本都需要在自己电脑安装虚拟机,下载内核源码,编译内核后才能进行驱动开发,但我想直接在【开发板】上进行开发,不采用虚拟机!!!

环境准备与编译

主要参考【腾讯元宝】和【通义千问】AI模型的回答。

(1)工具链安装

# 安装基础编译工具
sudo apt update
sudo apt install build-essential flex bison libelf-dev bc openssl libssl-dev# 安装ARM64专用编译工具(可选,用于特定场景)
sudo apt install gcc-arm-linux-gnueabihf

(2)安装linux-headers-xxx(重要)

去官方仓库下载:https://github.com/orangepi-xunlong/orangepi-build

1、使用git方法:git clone https://github.com/orangepi-xunlong/orangepi-build (代理加速的话,参考 https://gh-proxy.com

2、下载zip后解压也行

解压后进入文件夹,运行build.sh脚本

cd orangepi-build-next
./build.sh

弹出界面,依次选择【Kernel package】【Show a kernel configuration menu before compilation】【(选自己开发板的版本)】【current Recommended. Come with best support】

等待1小时左右,期间会自动去下载内核源码(下载失败的话重复几次),然后编译

编译输出在【/home/orangepi/orangepi-build-next/output】,linux-headers-xxx就在debs目录下

安装:

sudo dpkg -i linux-headers-current-rockchip-rk3588_1.0.6_arm64.deb
# 该 .deb 会被安装到类似 /usr/src/linux-headers-6.1.43-rockchip-rk3588/ 的路径

创建符号链接

sudo ln -sf /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/build
# -sf表示强制创建链接,如果已有损坏的会被自动覆盖
# 使用命令 ls -l /lib/modules/$(uname -r)/build验证是否成功

创建第一个驱动

创建驱动有2种方法:

  1. 在内核源码中添加驱动代码,然后编译进内核源码中,再烧写到板子上
  2. 编写内核模块,然后在已经安装了系统的开发板中加载内核模块就行

下面使用的是第2个方法

cd ~
mkdir ~/mydriver
cd ~/mydriver
mkdir hello
cd hello

在"/home/orangepi/mydriver/hello"路径下,按照以下步骤操作

创建代码:命令 【nano hello.c】,写入以下内容

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>MODULE_LICENSE("GPL");
MODULE_AUTHOR("YourName");
MODULE_DESCRIPTION("A simple Hello World module");
MODULE_VERSION("0.1");static int __init hello_init(void)
{pr_info("Hello, Orange Pi 5 Pro! This is my first driver!\n");return 0;
}static void __exit hello_exit(void)
{pr_info("Goodbye, Orange Pi 5 Pro! Module removed.\n");
}module_init(hello_init);
module_exit(hello_exit);

创建makefile,【nano Makefile】,写入以下内容

obj-m += hello.oKDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)default:$(MAKE) -C $(KDIR) M=$(PWD) modulesclean:$(MAKE) -C $(KDIR) M=$(PWD) cleaninstall:sudo insmod hello.koremove:sudo rmmod hello

编译:make

安装(会加载内核模块):sudo make install

查看输出(内核模块加载时会执行代码__init函数):dmesg | tail -5

删除:sudo make remove

再查看输出(卸载内核模块会执行代码__exit函数):dmesg | tail -5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站西安哪家好wordpress获取文章第一张图片

3.3.2vector容器 vector的数据安排及操作方式&#xff0c;与array非常相似&#xff0c;两者唯一差别在于空间的运用的灵活性。Array是静态控件&#xff0c;一旦配置了就不能改变&#xff0c;要换大一点或者小一点的空间&#xff0c;可以&#xff0c;一切琐碎得由自己来&#x…

网站开发用什么编程语言网站说服力营销型网站策划 pdf

毋庸置疑&#xff0c;Python越来越被认可为程序员新时代的风口语言。无论是刚入门的程序员&#xff0c;还是年薪百万的 BATJ 的大牛都无可否认&#xff1a;Python的应用能力是成为一名码农大神的必要项。 所以&#xff0c;很多程序员把Python当做第一语言来学习。 但对于Python…

Python 脚本遇到 SSL 证书问题

调用 deepseek api,遇到 SSL 证书问题,应该是 SSL 不认公司 firewall 的证书。 出错内容:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:10…

构建用户-物品-场景的“关系宇宙 - 教程

构建用户-物品-场景的“关系宇宙 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

商城类的网站怎么做wordpress畅言插件

本人并不精通易语言&#xff0c;只是对其进行一定了解后做一个简单的总结。直接新建一个易语言模块&#xff0c;然后添加子程序即可。子程序当然可以随意命名&#xff0c;实际上&#xff0c;易语言的子程序就和c语言的函数&#xff0c;java中的方法一样(实际上&#xff0c;java…

sa-token开发时遇到的问题

背景 我的项目的登录接口在登录时会去获取用户的菜单,但是我在获取菜单的方法里逻辑写错了(登录接口不是我负责的,我写的是菜单), 我使用UserUtils.getCurrentTenantId()去获取用户的信息(它会从session里获取用…

HR如何摆脱入离职事务性内耗?组织管理系统助力聚焦人才价值挖掘

摘要:HR常深陷入离职手续、数据核对等事务性泥潭,战略规划等核心价值工作被挤占。流程繁杂、数据孤岛、沟通低效及合规风险加剧其负担。红海云eHR等组织管理系统通过流程自动化、数据一体化、自助协同与合规风控破局…

US$140 Yanhua Mini ACDP PCF Key Adapter for VW MQB IMMO Key Programming

Yanhua Mini ACDP PCF Key Adapter for VW MQB IMMO Key ProgrammingThis PCF-key Apdater is necessary when update your ACDP Module6 to gain the IMMO function.Support IMMO List:A3: MQB 2014.06-Q2: MQB 2014.…

社区网站免费制作怎么做网络直播卖衣服的网站

Pectra很可能是最后几个会直接影响用户和ETH持有者的升级之一。 原文&#xff1a;Galaxy Research&#xff1b;编译&#xff1a;Golem&#xff1b;编辑&#xff1a;郝方舟 出品 | Odaily星球日报&#xff08;ID&#xff1a;o-daily&#xff09; 编者按&#xff1a;以太坊 Pectr…

恩施市网站建设wordpress博客无法显示

可导入软件的矢量图格式如图&#xff0c;是shp文件&#xff0c;由6个文件构成&#xff1a; 而从Mapgis中导出的shp格式缺少文件&#xff0c;需要将其导入ArcGIS再次导出&#xff0c;补充相关文件。 另外&#xff0c;软件默认的坐标系是WGS-84&#xff0c;不过其他坐标系也可以…

网站开发合同是否是技术合同中文企业网站模板免费下载

SQL Server 中经常需要写一些查询&#xff0c;关联好多张表&#xff0c;显示无数个列。如果使用视图设计器&#xff0c;可以大大提高效率&#xff0c;同是减少差错。1. 启动视图设计器为数据库“新建视图”&#xff0c;将启用视图设计器。2. 添加表在起始界面&#xff0c;将出现…

里克尔梅张 重庆最好的古典前腰

里克尔梅张 重庆最好的古典前腰 第一次见到里克尔梅是在十年前,更准确的说是十年六个月又几天之前。那个时候的里克尔梅还不能叫里克尔梅,最多只能叫小梅。 小梅的工位在我后面,有四五米左右的距离。小梅姓张,个不…

基于SpringAI构建大模型应用

1. 背景 在这里,我主要分享的是在应用层面大模型相关的技术,假如你已有一个现成的大模型接口,无论是符合OpenAI规范的,还是各家公司一些自己的接口,例如Gemini,Deepseek,通义千问,问心一言等,让用这些大模型来…

C# TCP - 串口转发 - 实践

C# TCP - 串口转发 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &…

Java EE初阶启程记04---线程的状态 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

外贸先做网站还是开公司网站备案信息注销

电脑是一部百科全书&#xff0c;有它相伴能滋润人生、丰富人生&#xff0c;能使人和世界零距离接触。以下是小编给大家提供的关于学电脑作文&#xff0c;欢迎大家阅读参考!学电脑作文1我这个人哪&#xff0c;什么都想试一试&#xff0c;什么都想学一学。看到妈妈用缝纫机做衣服…

US$44 YH Remote Key Tester Frequency/Infrared IR

YH Remote Key Tester Frequency/Infrared IRIt can work alone and work together with Yanhua Mini ACDP, both ok.YH Remote Key Tester Frequency/Infrared IR can detect frequency of car remote control as wel…

【星海出品】RabbitMQ 死信 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【研发规范】Git 提交(commit)、CodeReview规范

本文将分为三个部分:为什么需要提交规范? 提交规范详解(核心内容) 与 Code Review 流程的结合1. 为什么需要提交规范? 在 Code Review 前,如果提交的代码杂乱无章,审查者会非常痛苦:理解成本高:审查者需要花费…

PCIE 各个管脚的作用是什么?

REQ-CLK PCIe REQ-CLK GPIO(Request Clock GPIO) 是在某些 SoC 或平台上用于 控制 PCIe 参考时钟(REFCLK)请求/使能 的信号,通常与 CLKREQ#(Clock Request) 功能相关。它的作用主要体现在 低功耗管理 和 链路唤…