linux驱动
文章平均质量分 72
从零开始学驱动
ll是个笨蛋
这个作者很懒,什么都没留下…
展开
-
module_platform_driver分析
从而间接调用了 platform_driver_register 和 platform_driver_unregister实现了 驱动函数的注册和注销。module_platform_driver:这是一个宏,位于kernel。下面以mtk-pmic-keys的驱动程序为例。然后就通过platform的设备模型进行匹配。原创 2023-03-20 13:54:34 · 322 阅读 · 0 评论 -
内核链表 list
本文主要是参考公众号一口linux, 参考大佬写的文章,中间对其增加了一些自己的笔记,做一下记录在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作list_head 的通用接口很容易实现代码的重用,有点类似于C++的继承机制。首先找到list_head结构体定义,kernel/inclue/linux/types.h 如下:struct list_head原创 2021-12-29 20:04:29 · 282 阅读 · 0 评论 -
platform平台设备驱动开发基础
什么是设备驱动模型类,总线,设备,驱动 : 四个结构体类class : 自动创建设备节点总线: bus 把设备和驱动挂接起来设备: device驱动: driverkobject和对象生命周期kobject内核高度抽象的一个结构体,总的基类对象生命周期: 每个对象的存活时间,kobject有机制管理对象的生命周期sysfs : 是一种虚拟文件系统,内核空间和用户空间一种映射关系,以文件方式展现出来udev : 用户和内核一种通信机制,在应用层可以获取到内核发生的事原创 2021-09-29 13:15:46 · 290 阅读 · 0 评论 -
gpiolib库详解
gpiolib库详解gpiolib库简介linux中从2.6.35以后开始引入gpiolib库,gpiolib库的作用是对所有的gpio实行统一管理,因为驱动在工作的时候,会出现好几个驱动共同使用同一个gpio的情况,这样会造成混乱, 所以内核提供了一些方法来管理gpio资源。GPIO 资源是相对来说较为简单,而且比较通用(比如 LED 灯),而 Linux 的 GPIO 驱动属于 Linux Driver 中较为容易上手的部分,但是简单归简单,在 Linux 系统中,要使用 GPIO 资源,还是需要了原创 2021-09-29 11:43:59 · 2104 阅读 · 0 评论 -
字符设备驱动高级(II)
老接口分析: register_chrdev: __register_chrdev_region cdev_alloc cdev_add新接口: register_chrdev_region: __register_chrdev_region自动创建字符设备驱动文件使用mknod创建设备文件的缺点不方便,能否自动生成和删除设备文件insmod时自动安装设备节点,卸载时自动删除解决方案:udev机制(mdev)应用层的一个应用程序, 在busybox中实现原创 2021-05-29 07:04:21 · 107 阅读 · 0 评论 -
字符设备驱动高级(I)
注册字符设备驱动新的接口新接口和老接口老接口:register_chrdev: 一个接口就完成了字符设备驱动的注册fops包含设备的操作函数主次设备号是内核对这个设备的编号,fops和主次设备号相绑定就是关键新接口: register_chrdev_region/alloc_chrdev_region + cdevregister_chrdev_region只是注册了一个设备号,告诉内核这个设备号我用了alloc_chrdev_region 让内核分配一个设备号给我们用cd原创 2021-05-25 21:36:57 · 75 阅读 · 0 评论 -
字符设备驱动基础(II)
系统整体的工作原理:应用层->API->设备驱动->硬件发相应得指令可以指令可以执行不一样得操作,这个规则靠设备驱动来指定。这些规则通过api显示出来,给应用层调用应用层传相应参数进来,设备驱动通过参数控制硬件执行相应操作API: open, read, write, close 系统调用open一个设备,read从设备中读数据,write往设备中写数据驱动源码中要提供真正的open, read, write, close等函数实体注意:如果我们不使用unr原创 2021-05-24 21:32:22 · 149 阅读 · 0 评论 -
字符设备驱动基础 (I)
1.驱动开发的准备工作1. 正常运行linux系统的开发板,可以移植内核在上面,要求开发板中的zImage必须是自己编译的,不能是别人编译的2. 相对应的内核源码,就是配置编译之后的3. nfs挂载的rootfs, 在主机ubuntu中搭建一个nfs服务器。也可以自己编译好rootfs, 然后烧录到开发板,启动时挂载也行。2.驱动开发的步骤驱动源码编写,Makefile编写,编译insmod装载模块,测试,rmmod卸载模块3.驱动开发环境搭建x210内核编译D:x210ke原创 2021-05-19 19:30:17 · 141 阅读 · 0 评论