- 博客(49)
- 收藏
- 关注
原创 (RK3566驱动开发 - 1).pinctrl和gpio子系统
pinctrl部分可以参考 rockchip 官方的绑定文档 :kernel/Documentation/devicetree/bindings/pinctrlPIN_BANK:引脚所属的组 - 本次例程使用的是 GPIO3_A1 这个引脚,所以所属的组为 3;PIN_BANK_IDX:引脚的索引号,可在 kernel/include/dt-bindings/pinctrl/rockchip.h 中查看到PA1的宏定义;MUX:引脚的复位功能,可在&phandle:电器属性;
2024-11-11 20:24:48
454
原创 (linux驱动学习 - 12). IIC 驱动实验
由于Linux内核中已经有 I2C 驱动程序了,这里只需要在设备树中添加 oled 设备节点。
2024-10-20 11:52:39
734
原创 (Linux驱动学习 - 11).Input 子系统
input 就是输入的意思,因此 input 子系统就是管理输入的子系统,和 pinctrl、 gpio 子系统一样,都是 Linux 内核针对某一类设备而创建的框架。比如按键输入、键盘、鼠标、触摸屏等等这些都属于输入设备,不同的输入设备所代表的含义不同,按键和键盘就是代表按键信息,鼠标和触摸屏代表坐标信息,因此在应用层的处理就不同,对于驱动编写者而言不需要去关心应用层的事情,我们只需要按照要求上报这些输入事件即可。为此 input 子系统分为 input 驱动。
2024-10-14 20:40:25
1149
原创 (Linux驱动学习 - 10).MISC驱动实验
misc 的意思是混合、杂项的,因此 MISC 驱动也叫做,也就是当我们板子上的某些。MISC 驱动其实就是最简单的,通常嵌套在 platform 总线驱动中,实现复杂的驱动,本章我们就来学习一下 MISC 驱动的编写。
2024-10-13 17:41:17
439
原创 (Linux驱动学习 - 9).设备树下platform的LED驱动
【代码】(Linux驱动学习 - 9).设备树下platform的LED驱动。
2024-10-08 14:11:38
491
原创 (Linux驱动学习 - 8).信号异步通知
我们硬件上使用的“”,只不过信号是软件层次上的。算是在,驱动可以通过主动向应用程序发送信号的方式来报告自己可以访问了,应用程序获取到信号以后就可以从驱动设备中读取或者写入数据了。整个过程就相当于应用程序收到了驱动发送过来了的一个中断,然后应用程序去响应这个中断,在整个处理过程中应用程序并没有去查询驱动设备是否可以访问,一切都是由驱动设备自己告诉给应用程序的。
2024-10-07 14:45:26
750
原创 (Linux驱动学习 - 7).阻塞IO和非阻塞IO
当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么就会将应用程序对应的,直到设备资源可以获取为止。在应用程序中,用户调用 open 函数打开设备文件的。
2024-10-06 17:30:10
925
原创 (Linux驱动学习 - 6).Linux中断
每个中断都有一个,通过中断号即可,有的资料也把中断号叫做中断线。在 Linux 内核中使用一个 int 变量表示中断号。
2024-10-05 14:50:08
1133
原创 (Linux驱动学习 - 5).Linux 下 DHT11 温湿度传感器驱动编写
DHT11的通信协议是协议,可以用之前学习的和完成某IO引脚上数据的读与写。
2024-10-01 22:04:11
920
1
原创 数据结构 - 排序算法
①.经过一趟快速排序后,确认。②.对每一组 分别 / 交替 直接插入排序。①.对序列进行分组,增量为 d。③.逐渐减小增量 d。②.该基准将整个数组分为。
2024-09-23 22:23:21
527
原创 数据结构 - 队列
/用数组作为队列的存储空间// front 为队头前一个位置的下标 , rear 为队列尾部的下标}sequeue_t;/* 1.链表结点 *///结点的数据域//指向下一个结点的指针}link_node;/* 2.队列的队头和队尾指针 *///front 指向队头元素的前一个结点(即链表的首结点) , rear 指向队尾结点。
2024-09-16 14:39:49
343
原创 数据结构 - 栈
/指向栈的指针int maxlen;//表示栈的最大长度int top;//栈顶元素的下标,用来指明栈顶的位置}s//数据域名//指针,指向栈下一个元素。
2024-09-13 17:05:05
672
原创 指针函数、函数指针与递归函数
递归函数是指一个函数的函数体中直接或间接调用了该函数本身。函数指针 是指针,这个指针存放了函数的入口地址。首先,指针数组是一个数组,其内部存放的是指针。函数指针数组,也是一个数组,其内部存放的是函数的指针。
2024-08-31 15:54:43
799
原创 指针初阶(数组指针与二维数组)
定义一个指针,使其指向一个二维数组。int (*p)[3] ,其中的 [3] 表示该指针的步长为 3 个 int (一行),则 p 的类型为int (*)[3]/* 二维数组 *//* 行指针、其中 [3] 代表该指针的步长为(三个int) *//* 使 p 指向数组 a */p = a;2.使用行指针表示数组元素。
2024-08-30 11:57:12
454
原创 (Linux驱动学习 - 4).Linux内核定时器
定时器是一个很常用的功能,需要周期性处理的工作都要用到定时器。Linux 内核定时器采用系统时钟来实现。
2024-08-24 17:51:41
1077
原创 (Linux驱动学习 - 3).pinctl 和 gpio子系统驱动
同一个外设的 PIN 都放到一个节点里面,打开 imx6ull-14x14-evk.dts,在 iomuxc 节点中的“imx6ul-evk”子节点下添加 “pinctrl_test” 节点。
2024-08-21 21:31:44
1091
原创 指针初阶(指针类型转换的使用、指针数组)
其他 float 等类型的指针也是一样,要是这段地址,你想以float类型去翻译它,只需定义一个 float * float_p 类型的指针指向首地址,然后 float_p[0] 就是我们需要的数据。
2024-08-18 23:02:35
888
原创 Linux进程间通信学习记录(消息队列)
①.消息队列是System V IPC对象的一种;②.消息队列是由消息队列ID来唯一表示;③.消息队列就是一个消息的列表。用户可以在消息队列中添加消息、读取消息等;④.消息队列可以按照类型来发送/接收消息,不同类型的消息是分别存储的。
2024-08-17 20:46:12
685
原创 Linux进程间通信学习记录(IPC 机制、共享内存以及信号灯集)
①.IPC对象包含:共享内存、消息队列和信号灯集。②.每个IPC对象有唯一的ID。③.IPC对象创建后一直存在,直到被显示地删除。④.每一个IPC对象有一个关联的KEY。(其他进程通过KEY访问对应的IPC对象)⑤.ipcs(显示系统所有的IPC对象)、ipcrm。
2024-08-17 17:42:51
1004
原创 Linux进程间通信学习记录(有名管道)
①.对应管道文件,可用于任意进程之间进行通信。②.打开管道时可指定读写方式(打开管道时可指定读写方式)。③.通过文件IO操作,内容存放在内存中。
2024-08-17 15:06:30
445
原创 Linux线程间通信学习记录(线程互斥)
可见,加入互斥锁后,不会存在value1!= value2 的情况,即执行下面这段代码的时候不会被打断。即加锁后,其他任务无法对该临界资源进行操作。
2024-08-16 22:33:45
470
原创 Linux线程基础学习记录(线程的创建、回收以及结束)
创建一个线程,成功时返回(0),失败时返回错误码(errno)PC(程序计数器)和相关寄存器。回收线程资源,成功时返回0,失败返回错误码。进程中打开的文件描述符。结束当前的线程,释放该线程的私有资源。错误号(errno)调用线程阻塞直到pthread结束。线程属性,NULL则表示默认属性。: 线程对象,指定要回收的线程。:传递给线程执行函数的参数。: 接收线程返回值的地址。
2024-08-16 17:00:58
364
原创 (Linux驱动学习 - 2).Linux设备树下的LED驱动实验(正点原子学习笔记)
1.在.dts文件中创建相应地设备节点2.编写驱动程序,获取设备树中的相关属性值3.使用获取到的有关属性值来初始化LED所使用的GPIO。
2024-08-12 22:47:25
294
原创 (Linux驱动学习 - 1).Linux新字符设备驱动开发---LED
define NEWCHRLED_CNT 1 /* 设备号个数 */#define NEWCHRLED_NAME "newchrled" /* 设备名称 */#define LEDOFF 0 /* 关灯 */#define LEDON 1 /* 开灯 *//* newchrled设备结构体 *//* 设备号 *//* cdev *//* 类 *//* 设备 */int major;/* 主设备号 */int minor;/* 次设备号 */
2024-07-18 23:18:52
178
原创 CCS配置MSPM0G3507(八)GPIO中断方式模拟编码器计数与测速
1.创建一组GPIO,并加入两个引脚进行配置(两个引脚的配置是一样的)2.将引脚设置为输入模式3.设置为浮空输入。
2024-07-07 11:39:34
9726
47
原创 CCS配置MSPM0G3507(七) 编码器(TIMER-QEI)
1.选择时钟源 BUSCLK2.时钟分频配置为1分频3.分频系数配置为14.若勾选 Start ,则生成程序后会自动开启定时器的计数,否则需手动在程序中开启5.Load Value 设置为65535。
2024-07-06 16:49:50
7882
21
原创 CCS配置MSPM0G3507(六) DMA串口发送
1.选择 BUSCLK 时钟源2.选择8分频3.设置为8位数据位、无校验位、一位停止位。
2024-07-05 14:36:25
3125
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人