- 博客(16)
- 收藏
- 关注
原创 Linux驱动开发-------platform平台设备
在注册驱动时,首先判断platform_driver中的成员probe是否定义,如果定义将device_driver基类中的成员probe赋值为platform_drv_probe,即匹配成功后执行的函数。在platform_drv_probe函数中将会调用platform_driver中的成员probe,即需要自行编写的内容。总结:在编写驱动和设备程序时,需要重点关注。
2024-04-20 17:01:10
1128
3
原创 Linux驱动开发--------设备树
一般 .dts描述板级信息 (也就是开发板上有哪些IIC设备、SPI设备等 ),.dtsi描述SOC级信息 (也就是 SOC有几个 CPU、主频是多少、各个外设控制器信息等 )。其他的 .dts文件可以直接引用 .dtsi文件,类似于 C语言中的头文件。DTS是设备树源码文件, DTB是将DTS编译以后得到的二进制文件,编译工具是DTC。DTC工具源码在 Linux内核的 scripts/dtc目录下。
2024-04-13 22:40:21
1781
1
原创 FreeRTOS学习笔记------任务调度机制
任务的切换与Tick和PendSV中断有关,最终的切换在PendSV中断通过调用vTaskSwitchContext函数完成,与tick中断相关的函数是xTaskIncrementTick。上述示例中,实际创建了4个任务,xTaskStartScheduler函数会创建优先级为0的空闲任务。pxReadyTaskLists是一个链表数组,大小与优先级的数量相同。状态的切换就是把任务放进不同的链表的中,如调用vTaskDelay后,任务将会被移进pxDelayedTaskList等链表。
2024-02-02 17:24:59
495
原创 FreeRTOS学习笔记-------任务创建函数详解
根据以上代码可知,在执行任务时,pxTaskCode将被写入PC寄存器中,pvParameters被写入R0寄存器中。任务创建函数执行完后,任务所需的栈示意图如下。
2024-02-01 17:04:00
374
2
原创 FreeRTOS学习笔记--------互斥量
互斥量就是二进制的信号量,都是用来传递状态。与二进制信号量不同的是,互斥量的初始值是1。官方源码如下,由源码可知初始值为1(通过xQueueGenericSend函数向队列中写入一个数据)。
2024-01-11 17:21:19
652
原创 FreeRTOS学习笔记-------信号量
队列可以用于传输数据,但不需要传输数据时,可以使用信号量,信号量传输的是状态。信号量的示意图如下所示:在FreeRTOS中,信号量本质就是队列,是一个只关心队列长度,不关心队列数据内容的队列。由官方源码可知, 创建信号量时实际创建的是uxItemSize为0的队列,使用uxMessagesWaiting表示计数值。当计数值达到最大时释放信号量,将返回错误(队列是数据满时再写入数据,如果没有超时,则阻塞。有关队列内容可参考文章信号量有两种:二进制信号量和计数型信号量。
2024-01-11 09:30:14
481
原创 FreeRTOS学习笔记---------队列
队列写数据的方式有两种:向尾部写入,向头部写入。队列向尾部写入数据的过程如下图所示:每次向尾部写入时,先写入数据,pcWriteTo再自加uxItemSize。每次读取时,pcreadFrom先自加uxItemSize,再读取数据。
2024-01-09 01:14:56
616
原创 FreeRTOS学习笔记--------任务管理
在默认调度算法下,对于同优先级的任务,它们轮流执行,轮流的时间基准由tick中断决定,由定时器产生固定间隔的中断。可以修改中断产生的时间间隔。1000Hz表示间隔为1ms。
2024-01-06 15:17:18
1748
1
原创 字符设备驱动开发
字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、IIC、SPI,LCD 等等都是字符设备,这些设备的驱动就叫做字符设备驱动。
2023-09-21 21:09:41
106
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人