- 博客(14)
- 收藏
- 关注
原创 驱动基础整理
从上面我们可以知道,APP是如何通过使用普通的文件操作来控制底层的硬件驱动程序的,下面介绍驱动程序是如何存放到struct file_operations结构体中的。再之后引入了dts(设备树),设备树是用来代替platform_device来存储信息的,设备树上面所有节点都在/节点下。去读写文件的时候,文件的偏移地址和一些其它的操作信息也会保存才struct file 结构体的成员f_ops里面。等函数,填入到file_operations结构体中告知上层上层的"open"函数调用的是底层的哪一个函数。
2023-08-29 17:13:42
293
1
原创 Linux驱动学习第七天-------使用pinctrl和GPIO子系统点灯,不操作寄存器
依然是进行点灯,不过今天又换了一种不同的方式,今天不涉及寄存器操作就能进行点灯,甚至不需要获取寄存器地址。在linux中Pinctrl子系统是用于管理引脚(Pin)的一个子系统(由原厂BSP工程师来做)。硬件引脚通常用于连接外部设备或者模块,例如进行IIC、SPI通信,这时需要进行对引脚进行配置。使用GPIO(输入输出功能),或者配置成IIC、SPI、UART等功能。在芯片手册中有这样的寄存器,IOMUXC(IO复用选择寄存器,选择引脚功能)。
2023-07-02 14:43:12
891
1
原创 Linux驱动学习第6天------更改设备树点灯(不涉及硬件操作)
资源和驱动在同一个文件里面(这是最开始点灯的方法,驱动和资源都放在同一文件中,字符驱动设备注册/注销/分配也都在这一个文件夹里面分层为上层驱动程序和下层驱动程序。驱动程序下层进行分离,分离成资源和驱动两个文件。驱动上层实现硬件无关的操作,比如注册字符设备驱动。驱动下层实现硬件相关的操作,比如board_A.c实现单板A的LED操作。资源用platform_device指定,驱动在platform_driver实现(匹配过程是device去总线上面匹配driver。
2023-06-27 16:44:16
2157
1
原创 Linux驱动学习第五天----基于总线驱动模型修改LED驱动
如果CPU和外设或者外设想要进行通讯或操作,需要将通信双方挂载到同一条总线上,这里的总线可以使具体的总线,如IIC,CAN总线等也可以是虚拟的总线,platform平台总线。总线设备驱动可分为总线,设备和驱动三个部分当将一个设备加入到总线上时,内核会在这条总线上寻找该设备对应的驱动;当将一个驱动加入到一条总线上时,内核会在该总线上寻找与该驱动对应的设备。匹配的规则根据不同类型的总线及设备特征进行定义。
2023-06-20 13:34:22
225
原创 linux驱动入门学习第四天----韦东山驱动课后作业(点亮多个LED灯,以及读取引脚状态)
前几次博文中的驱动程序都只是能够点亮一个LED灯,今天我们来点亮两个LED灯(同一时间操作一个灯),除了板载GPIO5_3的LED灯之外,我使用扩展板外接了LED灯(低电平点亮),外接LED使用的引脚是GPIO4_19。 除了点灯之外,新加入了引脚读取功能,想要使用这个功能时我将外接的LED换成了三针火焰传感器来检测GPIO4_19的状态。 应用程序通过以下方式来操作硬件:./ledtest /dev/ledx(0/1) -w(-r) on/offledtest:可执行程序/dev/ledx
2023-06-15 11:25:38
4816
1
原创 linux驱动学习第三天-----可以适用于多个开发板的LED驱动程序
程序功能:应用程序是用来打开底层驱动设备(这里指的是LED灯),通过指定打开哪一个设备以及要执行什么操作。例子如下:./ledtest /dev/myled on来实现开灯 ./ledtest /dev/myled off来实现关灯/**/int fd;/* 1. 判断参数 */if (argc!= 3) //这里参数需要是./可执行文件 /dev/设备名 操作状态(on/off)return -1;/* 2. 打开文件 */return -1;/* 3. 写文件 */
2023-06-13 22:28:40
424
1
原创 Linux驱动入门学习---第一天HelloWorld
linux的驱动本质上就是一种软件程序,上层软件可以在不了解硬件特性的情况下,通过驱动提供的接口和计算机以及外设进行通信。系统调用是内核调用和应用程序之间的接口,驱动程序将内核与硬件之间串联起来。为应用开发屏蔽了硬件的细节(不需要对驱动程序特别了解),也能够直接操作硬件。对于linux来说,硬件设备就是一个设备文件,应用程序可以像操作普通文件那样对硬件设备进行操作。linux驱动程序是内核的一部分,管理着系统的设备控制器和响应设备。
2023-06-10 10:16:27
3274
5
原创 【STM32】NVIC优先级管理(中断向量)
这其中包含很多内核中断以及单片机管理中断,例如1号PVD中断,检测到单片机供电电压不足时会触发这个中断会将单片机的运行数据保存,以免数据丢失,诸如此类的中断还有很多。上面这些中断地址不需要我们自己进行手动定义,编译器都已经帮我们做好了。优先级号越小优先级越高,异常和中断向量表只能使用汇编语言编写。NVIC基本结构(NVIC:嵌套中断向量控制器)0位抢占优先级,4位响应优先级。1位抢占优先级,3位响应优先级。2位抢占优先级,2位响应优先级。3位抢占优先级,1位响应优先级。4位抢占优先级,0位响应优先级。
2023-05-14 19:14:05
682
1
原创 STM32增量式pid直流电机调速(内附源码)
这是我第一个基于pid的应用,最初做起来一脸迷茫,只知道原理,却不知道从哪里进行下手不知道如何将pid应用到实践中去,经过读过网上许多大佬的源码和博客,逐渐有了一定理解。
2023-05-13 17:23:51
4091
8
原创 香橙派借助语音模块实现语音刷抖音
①:香橙派作为主控②:语音识别模块,进行语音识别③:一台安卓手机(鸿蒙系统也可)SU-03T 是一款低成本、低功耗、小体积的离线语音识别模组,能快速应用于智能家居,各类智能小家电,86 盒,玩具,灯具等需要语音操控的产品。通过串口通信,可以实现SU-03T模块和开发板的交互,如:OrangePi PC+、STM32等。从而控制OrangePi PC+的外设(如果将我们的手机连接到OrangePi,也可以实现对手机的控制)基本套餐应包括喇叭+模块主板+咪头(就是喇叭)+电源线,大概20元左右。
2022-09-05 16:29:57
2460
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人