自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 单片机架构与内核概念辨析-基于M3/M4内核分析

本文介绍了ARM Cortex-M系列单片机的内核与架构概念。主要围绕M3/M4内核展开,指出它们均基于ARMv7-M架构,因此在寄存器设计、流水线等方面高度一致,主要区别在于M4增加了FPU浮点运算单元。文章解析了内核框图,说明外设不由内核定义而是由芯片厂商实现。内核的核心部分包括通用寄存器(R0-R15)、特殊功能寄存器(xPSR、PRIMASK等)以及内核外设(NVIC、SCB、SysTick)。通过分析寄存器功能和控制机制,帮助读者理解单片机内核的工作原理及其与芯片架构的关系。

2026-06-03 14:30:49 488

原创 USB2.0 协议深度解析:从物理信号到枚举与事务传输

USB协议摘要 USB2.0协议包含三个速度等级:低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)。通信采用差分信号,通过D+/D-线的电平状态(J/K/SE0/SE1)实现数据传输。设备插入时通过上拉电阻标识速度类型,主机通过复位信号(SE0)和chirp K/J信号完成高速握手协商。USB通信采用分层结构:数据包(包含SYNC、PID、DATA等字段)组成事务,多个事务构成传输。设备描述体系包括设备描述符、配置描述符、接口描述符和端点描述符,通过结构体定义各类属性和功能。主机始终主导

2026-05-25 16:06:45 630

原创 FreeRTOS源码解读系列文章之六

摘要:本文分析了FreeRTOS的内存管理机制,重点对比了静态创建和动态创建任务的实现差异。静态创建通过用户预定义的StaticTask_t结构体(与TCB等大)和栈数组实现,避免了直接暴露TCB内部结构。在内存管理方面,以heap_4方案为例,系统通过链表管理预分配的堆数组,初始化时建立头尾节点并预留空间。内存申请函数pvPortMalloc会检查请求大小并处理对齐要求,确保内存分配的高效性和安全性。这种设计既保证了内存管理的灵活性,又避免了标准malloc带来的碎片问题。

2026-05-25 11:01:38 490

原创 FreeRTOS源码解读系列文章之五

文章摘要: FreeRTOS队列机制通过两个阻塞链表(xTasksWaitingToSend和xTasksWaitingToReceive)实现任务同步。当队列空时,接收任务会被加入接收阻塞链表;队列满时,发送任务加入发送阻塞链表。队列结构体xQUEUE包含读写指针、消息计数和阻塞链表等关键字段。创建队列时动态分配内存并初始化指针位置,通过prvInitialiseNewQueue和xQueueGenericReset完成设置。发送机制xQueueGenericSend处理任务阻塞与唤醒,确保数据同步。这种

2026-05-11 09:06:13 545

原创 FreeRTOS源码解读系列文章之四

本文深入解析了RTOS内核调度机制的核心原理。首先介绍了RTOS通过任务拆分实现实时性的设计哲学,以及ARM架构中MSP与PSP双栈指针的安全隔离机制。重点剖析了调度器启动过程:从prvStartFirstTask初始化环境,到vPortSVCHandler启动首个任务。详细阐述了PendSV中断处理函数如何完成任务上下文切换,包括现场保存、任务选择和现场恢复的全流程。最后揭示了优先级调度算法taskSELECT_HIGHEST_PRIORITY_TASK的工作原理。全文通过汇编与C代码相结合的方式,系统性

2026-05-10 09:03:30 645 1

原创 FreeRTOS源码解读系列文章之三

FreeRTOS任务管理机制解析 本文深入剖析了FreeRTOS任务管理的核心实现机制,重点分析了任务控制块(TCB)结构和任务创建过程。 核心要点: TCB结构体是任务的灵魂,包含栈指针、状态链表项、优先级等关键信息 链表与TCB绑定:通过链表项与TCB的双向索引实现任务管理 任务创建流程:包括内存分配、TCB初始化、栈环境设置和加入就绪队列 任务管理本质:通过移动TCB中的链表项实现任务状态转换 文章详细解析了xTaskCreate、prvCreateTask和prvInitialiseNewTask等

2026-05-10 09:03:20 628 1

原创 FreeRTOS源码解读系列文章之二

本文深入解析了FreeRTOS内核中的链表实现机制。链表作为FreeRTOS最基础的底层数据结构,支撑着任务调度、时间片轮转等核心功能。文章详细介绍了三类核心结构体:链表项(ListItem_t)、迷你链表项(MiniListItem_t)和链表控制块(List_t),并分析了其双向循环链表的结构特征。重点阐述了两套插入逻辑:升序插入(vListInsert)用于阻塞列表,按时间排序;末尾插入(vListInsertEnd)用于就绪列表,支持同优先级任务轮询调度。文章还总结了FreeRTOS链表设计的四大特

2026-05-09 21:20:15 478

原创 FreeRTOS源码解读系列文章之一

本文是FreeRTOS源码深度解读系列的开篇,旨在通过分析内核源码帮助开发者深入理解FreeRTOS的核心机制。系列将重点剖析任务管理、队列、信号量等核心组件实现原理,基于STM32F4硬件环境,结合源码分析与实际案例。文章强调作为官方文档的补充,提供"源码实现分析"视角,建议读者配合官方文档学习。作者声明内容经过严格审核,欢迎技术交流与指正,共同进步。

2026-05-09 21:16:19 459

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除