RK3568驱动指南(第一期)
文章平均质量分 78
第一期
mucheni
这个作者很懒,什么都没留下…
展开
-
RK3568驱动指南|第一篇 驱动基础-第5章 驱动模块传参实验
Linux内核提供了 module_param(name, type, perm)、module_param_array(name, type, nump, perm)宏和module_param_string(name, string, len, perm)宏,分别进行基本类型、数组和字符串参数的传递。经过前两章实验的实战操作,我们已经完成最简单的helloworld驱动实验和模块驱动实验,加载模块可以使用“insmod”函数,使用“insmod”函数进行模块加载时也能进行参数的传递。原创 2024-02-22 10:03:07 · 899 阅读 · 0 评论 -
RK3568驱动指南|第一篇 驱动基础-第4章 内核模块实验
在上个小节中编译了驱动模块helloworld.ko,在RK3568开发板上通过“insmod helloworld.ko”命令可以加载驱动,在加载驱动模块的时候会执行驱动入口的函数,也就是helloworld程序中的helloworld_init函数,所以可以看到打印出来的字符串信息“helloworld_init”。同样,在卸载驱动模块的时候,如果模块存在依赖关系,如果使用insmod命令,需要手动卸载依赖的内核模块,但是使用modprobe命令可以自动卸载驱动模块所依赖的其他模块。原创 2024-02-20 10:24:27 · 583 阅读 · 0 评论 -
RK3568驱动指南|第一篇 驱动基础-第3章 helloworld 驱动实验
Linux驱动的基本框架主要由模块加载函数,模块卸载函数,模块许可证声明,模块参数,模块导出符号,模块作者信息等几部分组成,其中模块参数,模块导出符号,模块作者信息是可选的部分,也就是可要可不要。 许可证声明描述了内核模块的许可权限,如果不声明模块许可,模块在加载的时候,会收到“内核被污染(kernel tainted)”的警告。 当使用加载驱动模块时,内核会执行模块加载函数,完成模块加载函数中的初始化工作。 内核模块可以导出的符号,如果导出,其他模块可以使用本模块中的变量或函数。原创 2024-02-18 10:58:39 · 318 阅读 · 0 评论 -
RK3568驱动指南|第一篇 驱动基础-第2章 你好!内核源码
以此让官网的内核源码可以在半导体厂家设计的主控(CPU)上跑起来,所以在开发和学习的过程中,我们并不会直接去Linux内核官网下去下载源码,而且是使用半导体厂家提供的源码包。通过对内核源码官网的探索,内核源码的目录结构讲解以及内核源码的编译。解压完成后我们会看到非常多的文件夹,这些文件夹放的就是Linux内核源码,在下一小节中作者来介绍Linux内核源码的结构和每个目录的作用。本小节使用的内核源码是半导体厂家提供的内核源码,是我们学习和开发要使用的内核源码。在进行驱动学习之前需要将此内核源码编译成功。原创 2024-02-05 11:27:26 · 285 阅读 · 0 评论 -
RK3568驱动指南|第一篇 驱动基础-第1章 前言
遇到问题之后,同学们可以先自己根据问题的具体表现,来找到问题的源头,仔细分析问题产生的原因和解决的方法,自主思考无果之后可以尝试去谷歌、百度、CSDN等各大检索网站上寻求帮助,Linux已经发展了很多年,前辈们在之前进行了无数的探索,总有许多类似的经验,能解决绝大多数的问题。并且在学习过程中千万不要好高骛远,比如对于一些有基础的同学来说,学习过相似的知识点就一目十行甚至直接跳过,这种行为是不可取的,学习一遍和学习两遍的知识点,在认知和运用程度上是完全不一样的。第二,有了开发板之后,要掌握开发板的基本操作。原创 2024-02-04 09:54:59 · 287 阅读 · 0 评论