- 博客(146)
- 收藏
- 关注
原创 【Linux驱动】USB协议
详细介绍了USB协议中的电气信号,以及数据传输过程中电平信号的变化。还有USB协议的数据格式,传输类型,如批量传输,实时传输,中断传输,控制传输。还讲解并演示了设备枚举的过程。
2024-05-02 16:07:13
1469
32
原创 【智能家居项目】RT-Thread版本——DHT11获取温湿度 | MQTT上传到服务器 | 服务器控制外设
介绍了RT-Thread如何通过添加软件包和组件来快速实现一个智能家居项目,以及展示了如何使用MQTT协议与服务器进行通信等内容。
2024-03-29 15:54:48
4069
39
原创 【Linux驱动】休眠与唤醒 | POLL机制 | 异步通知 | 阻塞与非阻塞 | 软件定时器
讲解了休眠与唤醒,POLL机制,异步通知,阻塞与非阻塞的使用,大概原理和注意事项。还介绍了软件定时器在按键消抖中的使用。
2024-01-22 13:17:08
2469
36
原创 【Linux驱动】设备树中指定中断 | 驱动中获得中断 | 按键中断实验
讲解了如何在设备树中指定中断信息,包含父节点以及中断源的描述规则。还讲解了如何在驱动程序中获取不同设备节点的中断信息。最后进行了一个按键中断实验。
2024-01-15 11:00:00
2314
34
原创 【Linux驱动】Linux的中断系统 | 中断的重要数据结构
讲解了Linux的中断体系,中断可以分为上下两部分,下半部分有三种处理方式,包括软件中断,内核线程,线程化等方式。还详细介绍了Linux中管理中断的irq_desc数组这个数据结构,以及产生中断后,CPU是如何通过这个数据结构调用中断处理函数的。
2024-01-12 10:20:45
2439
30
原创 【Linux驱动】Pinctrl子系统 | GPIO子系统 | 基于子系统的LED驱动程序
介绍了Pinctrl子系统和GPIO子系统的概念以及由来,包括它们在设备树中如何使用和定义节点时的细节。还讲解了如何在驱动程序中使用GPIO子系统提供的标准函数接口,包含获取引脚资源,设置方向,写值和读值等等。
2024-01-08 17:04:31
2246
26
原创 【Linux驱动】设备树模型的LED驱动 | 查询方式的按键驱动
讲解了如何使用设备树模型实现LED驱动,包括设备树文件的修改,驱动程序的修改等等。还简要介绍了APP读取按键的四种方式,并且实现了查询方式的按键驱动程序。
2024-01-02 15:26:28
1537
35
原创 【Linux驱动】设备树简介 | 内核对设备树的处理
讲解了设备树文件引入的原因,设备树文件的基本语法,包括常见节点和属性。还讲解了内核对设备树的处理,包括device_node结构体,以及哪些节点会转换为platform_device结构体,转换后又是如何和platform_driver结构体进行匹配的。最后还简单介绍了如何使用没有被转换为paltform_device结构体的节点属性。
2023-12-30 17:37:12
2655
28
原创 【Linux驱动】驱动框架的进化 | 总线设备驱动模型
以LED驱动为例,讲解了驱动程序从最简单的框架,到含有面向对象和分层的框架,再到含有分离的框架,更进一步引出platform_device和platform_driver两类结构体以及总线设备驱动模型。
2023-12-26 19:47:52
1718
28
原创 【Linux驱动】最基本的驱动框架 | LED驱动
讲解了Linux程序的框架,包括file_operations结构体及初始化,入口函数及注册设备节点,提供设备信息,还有出口函数等等。最后用该框架实现了基于IMX6ULL单板的LED驱动程序。
2023-12-23 19:05:02
2554
23
原创 【RTOS学习】源码分析(信号量和互斥量 && 事件组 && 任务通知)
讲解了互斥量/信号量的源码,包括申请和释放信号量的内部机制,还有事件组,任务通知的源码,包括使用过程中基本操作的底层原理。
2023-12-21 10:30:00
2776
21
原创 【RTOS学习】源码分析(通用队列 && 队列 && 队列集)
分析了通用队列创建,读写数据的源码,还有普通队列及队列集对通用队列的封装和使用,包含读写数据时的链表操作,以及如何实现任务的通信和阻塞。
2023-12-18 16:50:20
1753
21
原创 【RTOS学习】任务创建 | 任务启动 | 任务切换 | 任务暂停和恢复 | 任务阻塞和唤醒 | 临界资源保护
详细的分析了FreeRTOS中任务操作的源码;任务创建,包括TCB和栈的创建,伪造现场,链表操作;任务启动,包括创建空闲任务,定时器任务,触发SVC异常恢复现场;任务切换,包括保护原任务现场,挑选下一个任务,触发PendSV中断恢复新任务现场;任务暂停和恢复,任务阻塞和唤醒,主要是不同链表的操作;临界资源保护,尤其是使用关闭调度器方式中,在唤醒时进行的xPendingReadyList链表遍历和模拟消耗系统时间。
2023-12-14 15:57:13
1862
27
原创 【RTOS学习】FreeRTOS中的链表 | 堆的管理
介绍了FreeRTOS中的链表,包括它的结构组成,初始化,插入,删除等方法。还详细讲解了四种堆的管理方式,并且指出了它们各自的优缺点,还有底层解决内存碎片化的方式。
2023-12-11 18:35:08
2021
38
原创 【RTOS学习】模拟实现任务切换 | 寄存器和栈的变化
介绍了多任务系统中任务的切换过程,还模拟实现了任务切换功能,详细讲解了伪造现场,现场保存,现场恢复等过程中的细节,还分析了多任务切换过程中各个寄存器以及各自栈的变化情况。
2023-12-09 18:51:50
4073
33
原创 【理解ARM架构】中断处理 | CPU模式
介绍了中断的处理流程,以按键中断为例进行了详细讲解。还介绍了CPU的两种模式,两种访问等级以及两种栈,包括它们使用的场景以及如何切换等等。
2023-12-03 18:35:20
3346
35
原创 【理解ARM架构】异常处理
介绍了异常/中断的处理流程,包括现场保存,执行处理函数,现场恢复,这个过程中的种种细节。还演示了未定义指令异常,SVC异常,以及SysTick异常产生后的现象。
2023-11-29 15:37:49
2105
25
原创 【理解ARM架构】 散列文件 | 重定位
介绍了重定位的概念和原因,还有散列文件的作用,包括加载域,可执行域,输入段等。还实现了代码段的重定位,可读可写数据段的重定位,BSS或者ZI段的清0,以及如何使用纯C函数实现重定位。
2023-11-26 11:00:00
2311
37
原创 【理解ARM架构】操作寄存器实现UART | 段的概念 | IDE背后的命令
介绍了如何直接操作寄存器地址来配置UART,以及如何用一个结构体来描述一个模块中的多个寄存器,还有内存中段的概念,以及IDE背后执行的命令行指令。
2023-11-23 20:33:44
2817
19
原创 【理解ARM架构】不同方式点灯 | ARM架构简介 | 常见汇编指令 | C与汇编
介绍了ARM的大概架构,包括CPU中的寄存器,地址空间,还讲解了常用汇编指令的使用,还有四种栈的原理,以及C语言和汇编之间的关系,还使用纯汇编点了灯。
2023-11-20 19:34:13
1872
32
原创 【智能家居项目】FreeRTOS版本——多任务系统中使用DHT11 | 获取SNTP服务器时间 | 重新设计功能框架
介绍了在多任务系统中如何使用DHT11获取温湿度数据,有关闭调度器,中断等方式,很好的保证了系统的实时性。还介绍了ESP8266如何获取SNTP服务器时间。最后将两个新模块重新设计到了智能家居的框架中,并实现了FreeRTOS版本的智能家居。
2023-11-18 23:08:20
2444
28
原创 【智能家居项目】FreeRTOS版本——将裸机程序改造成FreeRTOS程序 | DHT11温湿度传感器
介绍了如何将裸机版本的智能家居项目改造成FreeRTOS版本,以及过程中的种种细节。还介绍了DHT11温湿度传感器的使用和代码实现,以及模块测试。
2023-11-16 16:11:44
3446
24
原创 【RTOS学习】CubeMX对FreeRTOS的适配
介绍了CubeMX对FreeRTOS的适配,CMSIS工具简介,以及如何创建任务,队列,信号量,互斥量,事件组,软件定时器和如何实现任务通知等内容。
2023-10-31 11:06:04
3356
33
原创 【RTOS学习】互斥管理 | 调试 | 信息统计
介绍了互斥管理,任务和任务之间通过禁止中断或者禁止调度器的方式来实现互斥,以及这禁止过程中的细节。还有如何更好的调试程序,获取系统的信息,例如CPU占用率等等。
2023-10-29 13:15:00
523
24
原创 【RTOS学习】软件定时器 | 中断处理
讲解了软件定时器的概念,使用,运行机制和守护任务,还有中断发生以后的处理,以及中断服务函数和普通任务是如何进行通信的,两套API的差别对比。
2023-10-26 14:30:03
1574
31
原创 【RTOS学习】事件组 | 任务通知
介绍了事件组的概念和原理,以及事件组的使用,包括基本使用和同步点。还讲解了任务通知的概念和原理,以及使用过程中的注意事项。
2023-10-24 09:33:51
867
32
原创 【RTOS学习】信号量 | 互斥量 | 递归锁
讲解了信号量的原理及基本使用,还有互斥量的原理,优先级反转,优先级继承和基本使用等内容,还有递归锁的原理以及基本使用等。
2023-10-21 17:08:59
919
28
原创 【RTOS学习】同步与互斥 | 队列 | 队列集
介绍了同步和互斥的概念以及它们的关系。详细讲解了FreeRTOS中队列的结构和运行机制,以及是如何实现同步和互斥的。还介绍了使用队列时用到的函数,以及常用场景。还有可以同时检测多个队列就绪状态的队列集及使用。
2023-10-19 17:26:50
1143
29
原创 【RTOS学习】优先级 | Tick | 任务状态 | 空闲任务 | 任务调度
介绍了任务的优先级,滴答定时器以及延时函数,还有任务的不同状态切换和管理,还有空闲任务的作用及钩子函数,还介绍了任务的调度等内容。
2023-10-16 14:49:27
2105
35
原创 【RTOS学习】精简RTOS源码 | 认识RTOS | 任务的创建和删除
介绍了如何精简从官方得到的FreeRTOS源码供我们使用,以及认识什么是RTOS,还有FreeRTOS的任务创建和删除等内容
2023-10-14 21:11:50
1967
24
原创 【智能家居项目】裸机版本——网卡设备接入输入子系统 | 业务子系统 | 整体效果展示
介绍了如何将网络子系统作为输入设备接入到输入子系统中,将所有子系统整合起来实现业务子系统,并且介绍了用滴答定时器实现按键消抖,最后对整个项目进行一个简单演示。
2023-10-10 15:33:41
1379
31
原创 【智能家居项目】裸机版本——认识esp8266 | 网络子系统
介绍了智能家居项目中,ESP8266模块的使用,以及网络子系统的实现,和效果展示。
2023-10-09 11:42:26
2670
25
原创 【智能家居项目】裸机版本——字体子系统 | 显示子系统
介绍了字体子系统和显示子系统的实现,讲解了显示子系统是如何从字体子系统中获得点阵数据,又是如何将点阵数据传送到设备子系统中的显示设备上的。
2023-10-06 15:30:00
1675
33
原创 【智能家居项目】裸机版本——设备子系统(LED && Display && 风扇)
介绍了设备子系统的实现,包含LED设备,显示设备,以及风扇设备,将该子系统分为应用层,内核抽象层,芯片抽象层,硬件操作,这是一种比较完善的程序框架。
2023-10-03 16:46:52
2154
31
原创 【智能家居项目】裸机版本——项目介绍 | 输入子系统(按键) | 单元测试
介绍了智能家居项目的大概样子,实现了输入子系统中的按键设备以及按键单元测试。最重要的是介绍了面向对象的嵌入式编程思想,使得软件更加容易维护和扩展。
2023-09-27 18:44:30
2560
34
原创 【STM32学习】I2C通信协议 | OLED屏
介绍了I2C协议的原理,并且实现了底层驱动源码,还有OLED屏幕的使用,显示原理以及底层驱动源码的实现。
2023-09-22 14:06:34
4060
37
原创 【理解ARM架构】单片机中的C语言
介绍了单片机中内存的划分,变量的初始化,变量的本质,包括指针变量,结构体变量,对ARM架构有一个初步的认识。
2023-09-16 14:21:53
5569
40
原创 【网络】多路转接——poll | epoll
介绍了多路转接中的poll和epoll方式,包括接口介绍,使用细节,以及简易版服务器的实现。特别还介绍了epoll的机制和原理,以及LT和ET两种模式。
2023-08-30 20:31:50
2464
39
原创 【网络】多路转接——五种IO模型 | select
介绍了五种IO模型的概念和工作原理,详细讲解了多路转接中的select方式,包括接口的认识,代码细节的讲解,以及这种方式的特点和不足。
2023-08-29 20:10:24
2716
35
原创 【网络】DNS | ICMP | NAT | 代理服务器
介绍了网络中的一些重要协议和技术,包括DNS(域名解析),ICMP协议,NAT技术,以及代理服务器的概念。
2023-08-23 17:52:38
1809
36
智能家居源码+技术手册+工具
2023-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人