就是塔塔的个人空间 https://www.eechina.com/space-uid-136863.html [收藏] [复制] [RSS]

博客

RK3568驱动指南|第一篇 驱动基础-第3章 helloworld 驱动实验

已有 302 次阅读2024-2-18 11:02 |个人分类:RK3568

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。

第3章 ADC使用
在学习C语言或者其他语言的时候,我们通常是打印一句“helloworld”来开启编程世界的大门。学习驱动程序编程亦可以如此,使用helloworld作为我们的第一个驱动程序。

接下来开始编写第一个驱动程序—helloworld。3.1 驱动编写
本小节来编写一个最简单的驱动——helloworld驱动。helloworld.c如下(图3-1)所示代码:

看似非常简单的helloworld驱动代码,却五脏俱全。一个简单的helloworld驱动包含驱动的基本框架。我们继续往下看。
3.2 驱动的基本框架
Linux驱动的基本框架主要由模块加载函数,模块卸载函数,模块许可证声明,模块参数,模块导出符号,模块作者信息等几部分组成,其中模块参数,模块导出符号,模块作者信息是可选的部分,也就是可要可不要。剩余部分是必须有的。我们来看一下这几个部分的作用:
1 模块加载函数
​ 当使用加载驱动模块时,内核会执行模块加载函数,完成模块加载函数中的初始化工作。
2 模块卸载函数
​ 当卸载某模块时,内核会执行模块卸载函数,完成模块卸载函数中的退出工作。
3 模块许可证声明
​ 许可证声明描述了内核模块的许可权限,如果不声明模块许可,模块在加载的时候,会收到“内核被污染(kernel tainted)”的警告。可接受的内核模块声明许可包括“GPL”“GPL v2”。
4 模块参数(可选择)
​ 模块参数是模块被加载的时候可以传递给它的值。
5 模块导出符号(可选择)
​ 内核模块可以导出的符号,如果导出,其他模块可以使用本模块中的变量或函数。
6 模块作者信息等说明(可选择)
上一小节我们说,helloworld驱动麻雀虽小五脏俱全,我们来分析helloworld驱动。通过helloworld代码再来看驱动框架。
(1)模块加载函数:

(2)模块卸载函数:


(3)模块许可证声明

(4)模块作者信息

(5)头文件

通过上面的分析,helloworld驱动是不是包含了驱动框架的所有必要的部分呢。因此helloworld驱动我们可以看作是驱动代码的模板。任何一个驱动代码都用它作为基础来编写实现。同学们要将他记忆下来!

了解更多内容【关注VX】迅为电子


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部