![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
驱动开发
关于驱动开发的框架以及问题
九十岁也要程序猿
这个作者很懒,什么都没留下…
展开
-
I2C与外设(mpu6050)驱动编写之将I2C控制器与I2C驱动放到platform总线上
确认到用的是I2C5控制器,以及设置模式的管脚为GPB2和GPB3,因为I2C总线是与mpu6050通信的,需要将连接此设备的管脚设置成对应的功能模式,这个管脚正好在GPIO(也可以作为总线扩展)控制器上面,像那些adc控制什么的,都是专用管脚,所以不必设置。接着就是配置一下菜单,这里已经帮忙配置好了,有时候没有配置需要配置一下。,接下来要做的事情是将设备和驱动匹配好就行,我们要做的工作。在自己的设备树文件最后引用i2c_5的节点,引用更加方便。(看在内核设备树节点是不是有,并且需要添加更多属性)和。原创 2023-05-24 13:40:41 · 154 阅读 · 0 评论 -
外围设备驱动子系统框架(以I2C总线为例)
这里面有两条线发送I2C_msg给I2C_transfer,左边这条线不用做I2C从设备(mpu6050)的驱动,因为芯片厂家在soc当中集成了I2C_device,里面有通用的驱动,但是需要传参,这里面要求上层工程师需要了解I2C,右边这边是由驱动开发者开发的从设备驱动,可以让上层的工程师无需关心如何理解I2C,一般都是右边这种形式,上层工程师只需要调用系统调用即可,原创 2023-05-24 12:39:38 · 57 阅读 · 0 评论 -
注册设备和创建设备的过程
1.申请设备号,2.记录主设备号,3.添加字符设备,4.创建类,5.在类下创建设备。原创 2023-05-23 10:18:53 · 125 阅读 · 0 评论 -
中断处理之中断下文tasklet机制
【代码】中断处理之中断下文tasklet机制。原创 2023-05-22 18:33:10 · 37 阅读 · 0 评论 -
linux系统总线怎么理解
总线在操作系统中本质就是两个链表:挂载设备的链表和挂载驱动的链表。不同的边缘设备之间通信的总线,总线时序是不一样的,1.平台总线 (CPU核与硬件控制器之间的通信),对于这些总线,Linux 内核是单独实现的。在实际的硬件上,总线种类可以分成两大类。2.边缘设备之间通信的总线,原创 2023-05-23 14:37:51 · 177 阅读 · 0 评论 -
平台总线之adc利用队列实现阻塞和非阻塞改变电压
【代码】平台总线之adc利用队列实现阻塞和非阻塞改变电压。原创 2023-05-23 14:44:31 · 81 阅读 · 0 评论 -
边缘设备总线之uart概念复习
uart芯片查找图如下所示。原创 2023-05-23 18:43:38 · 32 阅读 · 0 评论 -
驱动开发框架学习2
【代码】驱动开发框架学习2。原创 2023-05-19 19:21:20 · 85 阅读 · 0 评论 -
驱动开发框架学习1
Makefile的编写Makefile调用图。原创 2023-05-19 19:13:31 · 35 阅读 · 0 评论 -
中断处理之中断下文tasklet机制
【代码】中断处理之中断下文tasklet机制。原创 2023-05-22 18:29:02 · 31 阅读 · 0 评论 -
linux驱动之阻塞IO
原创 2023-05-23 16:27:01 · 33 阅读 · 0 评论 -
边缘设备通信总线(例如cpu与mpu6050通信)之i2c概念重温
原创 2023-05-23 16:17:53 · 35 阅读 · 0 评论 -
简化版平台总线与设备树模块驱动开发
【代码】简化版平台总线与设备树模块驱动开发。原创 2023-05-22 18:27:29 · 32 阅读 · 0 评论 -
SPI与I2C的区别
原创 2023-05-23 19:51:03 · 48 阅读 · 0 评论 -
I2C总线总裁机制
当总线同时想被占用的时候就会产生冲突原创 2023-05-23 19:04:05 · 67 阅读 · 0 评论 -
驱动开发之获取中断资源
网卡(轮询或中断) 中断-----> 网卡收到数据 (以太网头|ip头|tcp/udp头|用户数据)所有中断处理函数全部调用一次,所以此时中断处理函数必须能判别是否是自己的设备产生的中断,吃虾:耗时时间长(下半部:进程上下文或中断上下文)原创 2023-05-22 19:19:33 · 115 阅读 · 0 评论 -
边缘总线之拿到陌生芯片怎么入手(因为不知道是不是mpu6050),mpu6050一般有I2C
答:因为samsung芯片和主存是同一编址,一部份给了主存,一部分给了寄存器。问:为什么samsung的芯片可以直接操作寄存器地址。原创 2023-05-23 16:25:52 · 40 阅读 · 0 评论 -
设备树的概念
1>设备树中的compatible属性与驱动中指定的of_match_table中的compatible进行匹配。pinctrl-1 = <&描述gpio管脚功能的标签 &描述gpio管脚功能的标签>;通用的属性内核是自动解析的,自己的属性需要使用内核提供的设备树函数接口(linux/of.h)自己解析。*属性(描述设备的信息)是最简单的键-值对,它的值可以为空或者是一个有效的数据,基本的数据类型如下。引入设备树之后,设备的信息的描述不在是以代码的形式存在于。原创 2023-05-19 18:25:50 · 39 阅读 · 0 评论 -
中断下文之work-queue机制
【代码】中断下文之work-queue机制。原创 2023-05-22 18:36:09 · 46 阅读 · 0 评论 -
中断控制器(gpio,gic,combiner)设备树的编写(只用写直接控制器即可)
主要还是模仿内核设备树的编写。原创 2023-05-22 19:16:48 · 136 阅读 · 0 评论 -
驱动开发框架学习3
设备和驱动匹配之后,在probe函数做的事情1:获取设备的资源 2,向上层提供设备的操作函数接口(cdev_init函数将接口结构体放入cdev当中了就已经将接口考进去了)设备树节点如何和驱动匹配。原创 2023-05-19 19:32:23 · 18 阅读 · 0 评论 -
边缘总线之SPI概念复习
原创 2023-05-23 19:46:43 · 32 阅读 · 0 评论 -
platform总线匹配规则以及设备树的添加
1.platform总线设备和驱动的匹配规则: A.设备树的compatible属性和驱动的compatible来匹配。2.B.驱动如果提供了id_table,则拿id_table名字和设备的名字匹配。3.C.驱动没有提供id_table,则拿设备的名字和驱动的名字匹配。板子版本高的可以用以下命令。原创 2023-05-18 10:08:17 · 176 阅读 · 0 评论 -
工作需要常用的平台总线与设备树的驱动框架
可以一个驱动连多个设备。Makefile文件。原创 2023-05-19 18:17:23 · 41 阅读 · 0 评论 -
GPIO驱动框架,这里只针对高低电平
这里就写个驱动代码框架即可。原创 2023-05-19 18:23:23 · 83 阅读 · 0 评论 -
驱动开发需要用到的常用命令
ls -l /dev | grep 230 查看设备号为230的设备信息。查看内核空间printk打印的信息:dmesg,清除:dmesg -c。//这个可以把驱动初始化的时候写入驱动当中(自动创建设备文件),见。modinfo led-driver.ko 查看模块包含的信息。mknod 设备文件名 设备文件类型 主设备号 次设备号。sudo insmod xxx.ko 加载内核驱动。cat /proc/device 也是查看信息。sudo rmmod xxx 卸载内核驱动。原创 2023-05-17 15:48:40 · 40 阅读 · 0 评论 -
驱动的面试文件集合
答:<1>struct inode 描述文件属性信息(文件类型,权限,大小,修改时间,设备号[设备文件])struct file 结构体记录struct file_operations这个结构体首地址。<2>struct file 描述一个打开的文件(打开的方式,文件偏移量,...)<4>使用设备号,将struct cdev这个结构体添加到系统中去。3.一组函数接口 -----> struct file_operations。答:<1>struct cdev:Linux 针对字符设备的通用描述。原创 2023-05-17 15:52:27 · 24 阅读 · 0 评论 -
linux手动挂载
手动挂载。原创 2023-05-17 08:57:32 · 28 阅读 · 0 评论 -
面向对象编程
原创 2023-05-15 16:56:16 · 23 阅读 · 0 评论 -
函数指针调用
c 指针原创 2023-05-15 16:32:09 · 19 阅读 · 0 评论 -
驱动开发Makefile
【代码】驱动开发Makefile。原创 2023-05-16 16:24:20 · 27 阅读 · 0 评论 -
应用层怎么访问底层驱动
当应用层使用open函数的时候,会通过路径从设备树当中找到相应的设备,其中首先找到struct inode(运行之前程序之前需要mknode和insmod)找到设备号以及其他设备信息,然后再找到cdev,通过cdev找到file_operations.通过file_operations找到相应的驱动open函数,即可实现应用层到驱动层的访问。原创 2023-05-17 09:26:34 · 73 阅读 · 0 评论 -
简单驱动框架文件
make -C /lib/modules/$(shell uname -r)/build M=记录模块代码的路径 modules。make 调用当前目录下的Makefile-----------切换到------------>linux内核编译系统的路径Makefile。KERNEL_BUILD=/lib/modules/$(shell uname -r)/build 记录Linux内核的编译系统路径。struct file 描述一个打开的文件(打开的方式,文件偏移量,...)原创 2023-05-16 11:40:19 · 26 阅读 · 0 评论 -
驱动开发基本框架
【代码】驱动开发基本框架。原创 2023-05-16 11:07:58 · 47 阅读 · 0 评论