
Linux驱动学习
文章平均质量分 73
好几十说
山前山后都是风景,有风无风都该快乐
展开
-
设备树(四)
可以理解为主设备树的“补丁”它动态的加载到系统中,并被内核识别。例如我们要在系统 中增加 RGB 驱动,那么我们可以针对RGB这个硬件设备写一个设备树插件,然后编译、加载到 系统即可,无需重新编译整个设备树。原创 2023-11-06 16:00:50 · 115 阅读 · 0 评论 -
设备树(三)
1.该驱动文件生成的ko文件,在调用insmod 后,就会去调用 module_init申明的函数,去平台注册平台驱动结构体。2.获取节点中的硬件信息(reg属性记录),并将其转换成 虚拟地址。2.去匹配 匹配表与设备树,当匹配成功后,则会调用probe函数。该函数是在驱动与设备树匹配之后,自动调用的函数。原创 2023-11-06 11:29:55 · 78 阅读 · 0 评论 -
设备树(二)
上一篇主要介绍设备树的一些语法这一篇主要来研究下,该如何将设备树的信息传递给驱动struct device_node :用于记录节点信息。结构体如下所示:•节点中属性为name的值•节点中属性为的值•节点的名字,在结构体后面放一个字符串,full_name指向它•链表,连接该节点的所有属性•指向父节点•指向子节点•指向兄弟节点。原创 2023-11-06 10:30:10 · 64 阅读 · 0 评论 -
设备树(一)
每一个"{}"都是一个"节点""/{...};"表示根节点 每一个设备树都只有一个根节点注意:因为设备树可以像.h文件一样引用,比如imx6ull.dtsi 文件有个根节点 而 imx6ull-mmc-npi.dts 引用了该文件,且也有一个根节点,这并不代表设备树有俩个根节点,因为不同文件的根节点会合并成一个"&xxx{...};":比根节点下的子节点多一个"&" 这表示该节点在向已经存在的子节点追加数据。节点基本格式:node-name:用于指定节点的名称其中的符号“原创 2023-10-27 11:22:30 · 137 阅读 · 0 评论 -
平台设备驱动小结
这里注意一点:inode->i_cdev其实对应的地址是cdev_add函数中的cur_led->led_cdev,然后通过宏container_of时,找到结构体的首地址,然后再将首地址传给filp->private_data,以便必要的信息传输给write、read等函数。把原先的文件分成了俩个文件,一个是驱动文件(drv),一个是设备文件(dev),俩个分别生成了.ko文件 当我们调用指令insmod 去注册。时,其主动在platform_bus这个平台总线上,去寻找匹配(match函数)名字的。原创 2023-11-04 16:07:58 · 56 阅读 · 0 评论