- 博客(69)
- 收藏
- 关注
原创 UCOSIII内核 VS FreeRTOS内核
UCOS-III和FreeRTOS都是优秀的实时操作系统内核,但它们在设计哲学、性能和适用场景上有显著区别。本文将通过通俗的讲解、场景比喻、详细对比表格和图表,带你彻底理解它们。
2025-11-29 11:00:24
1172
57
原创 UCOSIII笔记(十七)UCOSIII内核的启动流程
本文详细解析了UCOSIII实时操作系统的内核启动流程。启动过程分为四个关键阶段:首先通过OSInit()初始化内核数据结构并创建系统任务;接着用OSTaskCreate()创建用户任务;然后通过OSStart()启动调度器,完成从裸机态到多任务运行态的转换;最后系统进入由SysTick和PendSV协作的任务调度阶段。文章采用公司运营的生动比喻,将技术流程类比为从选址建厂到正式投产的全过程,并辅以流程图和对比表格,清晰展现了UCOSIII如何从"裸奔"状态转变为"有组织有纪律"的多任务运行环境。
2025-11-29 10:25:45
1025
24
原创 UCOSIII笔记(十六)就绪列表
本文深入浅出地剖析了uC/OS-III内核中的就绪列表机制。就绪列表作为任务调度的核心,采用三层架构设计:就绪任务位映射表(OSRdyMap)作为宏观索引,优先级就绪表(OSRdyTbl[])作为中观索引,就绪任务组(OSRdyList[])负责微观管理。这种设计能在常数时间内快速找出最高优先级任务,满足实时系统需求。文章通过公司部门管理的类比,详细讲解了三层结构的工作原理和协同机制,并举例说明了任务调度和状态转换时的处理流程,展现了uC/OS-III高效的任务调度能力。
2025-11-29 08:55:34
1040
30
原创 UCOSIII笔记(十五)阻塞延时与空闲任务
本文深入浅出地讲解了µC/OS-III内核中的阻塞延时与空闲任务机制。通过咖啡店和酒店的生活化比喻,阐明了阻塞延时如何通过任务主动让出CPU实现高效调度,以及空闲任务作为系统"安全网"的关键作用。文章详细解析了OSTimeDly()的实现原理和空闲任务的工作流程,包括CPU使用率统计和低功耗管理,并对比了两者的特性与协作关系。这些机制共同保障了多任务系统的稳定运行和资源优化。
2025-11-28 09:42:43
1275
70
原创 UCOSIII笔记(十四)时间戳
本文介绍了UCOS-III中的时间戳功能及其应用。时间戳用于精确记录事件发生时刻,通过硬件计数器(如DWT_CYCCNT)实现高精度计时,配合OS_TS_GET()等API进行测量。典型应用场景包括中断延迟测量,通过计算两次时间戳差值获取精确耗时。相比系统时钟节拍,时间戳具有更高精度(纳秒级)且无中断,适用于性能分析和调试。文章通过生活比喻和流程分析,阐明了时间戳在嵌入式系统中的重要作用。
2025-11-28 09:39:12
1075
50
原创 UCOSIII笔记(十三)CPU利用率及栈检测统计与同时等待多个内核对象
本文介绍了UCOSIII操作系统中CPU利用率统计和栈溢出检测的实现方法。在CPU利用率方面,系统通过OSStatTaskCPUUsageInit()函数初始化统计功能,并提供了OS_CFG_STAT_TASK_EN宏定义启用该功能。在栈检测方面,系统利用OS_CFG_STAT_TASK_STK_CHK_EN宏定义开启栈溢出检测功能,通过OSTaskStkChk()函数进行检测,并详细说明了任务栈大小的确定方法。此外,文章还阐述了UCOSIII中同时等待多个内核对象的功能。
2025-11-26 10:00:52
1046
35
原创 UCOS-III笔记(十二)中断管理
本文介绍了μC/OS-III中的中断管理机制,重点分析了中断的运作流程、延迟问题及两种处理方式。文章首先阐述了异常与中断的基本概念,详细描述了中断发生时处理器的执行顺序。针对中断延迟问题,解释了其产生原因和计算公式。在μC/OS-III中,中断处理可采用直接发布或延迟发布两种方法,通过配置宏进行选择。延迟发布模式下,系统将中断请求存入队列,由专门的中断发布任务处理。文中还具体说明了中断队列控制块结构、存储空间初始化及发布过程。这些内容为理解实时操作系统的中断处理提供了重要参考。
2025-11-26 09:56:05
1094
41
原创 EtherCAT技术详细介绍
EtherCAT是一种高性能实时工业以太网技术,采用独特的"通读飞写"机制,使数据帧在通过从站时被实时处理,实现微秒级通信延迟和纳秒级同步精度。相比传统工业以太网,它具有极高带宽利用率、灵活拓扑结构和低成本优势。作为国际标准IEC 61158的一部分,EtherCAT特别适用于运动控制、机器人等需要高精度同步的工业场景,通过分布式时钟机制和多种设备行规(如CoE、SoE)确保设备互操作性,已成为工业4.0和智能制造的关键通信技术。
2025-11-25 08:59:55
1156
37
原创 74HC164D芯片介绍
74HC164D是一款8位串行输入、并行输出的移位寄存器芯片,可将串行数据转换为并行输出,常用于微控制器IO扩展。其核心特性包括:通过时钟上升沿触发数据移位,主复位引脚(/MR)可异步清零输出,两个串行输入引脚(A&B)采用"与"逻辑。典型应用包括LED驱动和多芯片级联扩展输出,具有接口简单、成本低的优点,但输出无锁存功能可能导致闪烁。相比74HC595,74HC164D缺少输出锁存和三态控制功能,但仍适用于基础串并转换需求。工作电压2-6V,兼容3.3V/5V系统,是理解移位寄存器原理的实用器件。
2025-11-25 08:43:02
1042
43
原创 磨损均衡算法介绍
本文介绍了磨损均衡算法在Flash存储器中的应用。该算法通过动态调整逻辑地址与物理地址的映射关系,使所有存储块的擦写次数均匀分布,从而延长设备寿命。文章详细分析了动态磨损均衡和静态磨损均衡两种实现方式,前者选择擦除次数最少的空闲块写入新数据,后者还主动迁移"冷数据"以进一步提升均衡效果。同时探讨了磨损均衡与垃圾回收、地址映射等关键技术的关联,以及在不同存储设备中的实际应用。该算法是现代Flash存储设备实现高可靠性和长寿命的核心技术之一。
2025-11-24 09:08:19
1427
31
原创 24LC16芯片介绍
24LC16芯片简介 24LC16是Microchip推出的16Kbit(2KB)串行EEPROM存储器,采用I²C接口,具有1.7-5.5V宽电压支持。其内部划分为8个256字节存储块,通过I²C地址位选择。支持单字节/8字节页写入,需5ms写入周期,提供硬件写保护功能(WP引脚控制)。典型应用包括设备参数存储、IoT节点数据保存等场景。与24C02/04相比容量更大,但无法通过硬件引脚扩展多片使用。特点包括百万次擦写寿命、200年数据保存期,是嵌入式系统中经济高效的非易失存储解决方案。
2025-11-24 08:52:49
1292
28
原创 EEPROM、Flash、ROM、RAM的联系和区别
特性RAMROMEEPROM易失性易失,断电丢失非易失,断电保存非易失,断电保存非易失,断电保存读写速度极快读取快,写入慢或不能读取快,写入慢读取快,写入较快擦写方式直接覆盖无法或特殊方式按字节电擦写按块/扇区电擦写擦写寿命无限次一次或有限次10万到100万次1千到10万次(需磨损均衡)主要用途内存条、CPU缓存(已基本淘汰)小量配置数据SSD、U盘、手机存储成本/容量成本高,容量中等成本高,容量小成本低,容量大联系EEPROM和Flash都是ROM技术的延伸和发展。
2025-11-24 08:30:04
1372
31
原创 中断抢占和任务抢占的区别
本文对比了RTOS中任务抢占和中断抢占的区别。任务抢占由调度器管理,在特定调度点发生,基于任务优先级;中断抢占由硬件触发,可随时发生。关键差异包括:触发源(任务状态变化vs硬件中断)、管理者(调度器vs CPU)、发生时机(调度点vs任意时刻)及优先级依据等。文章通过代码示例展示了两种抢占的工作机制,并说明它们在实际运行中如何相互作用。最后指出优先级翻转场景中,往往是先发生中断抢占,再触发任务抢占。
2025-11-19 16:11:26
1023
38
原创 UCOS-III笔记(十一)内存管理
UCOS-III内存管理摘要 本文介绍了UCOS-III系统的内存管理机制,重点分析了其相比标准C库内存管理的优势。UCOS-III通过将大内存区划分为固定大小的内存块来解决传统内存管理的问题:消除了内存碎片,分配时间确定,适合资源受限的嵌入式系统。文章详细讲解了内存区的组成结构,包括内存块数量、大小等参数设置,并提供了三个关键API函数:OSMemCreate()创建内存区、OSMemGet()申请内存块、OSMemPut()释放内存块。特别注意强调这两个函数必须成对使用,以避免内存泄漏问题。
2025-11-19 08:49:56
1242
5
原创 UCOS-III笔记(十)软件定时器
本文介绍了UCOS-III操作系统中软件定时器的原理与应用。详细讲解了软件定时器的基本概念、工作状态(未使用态、停止态、运行态、完成态)以及单次定时器和周期定时器的区别。文章还分析了软件定时器的优缺点,重点阐述了UCOS-III中软件定时器的实现特点和配置方法,包括定时器频率的换算公式。最后总结了UCOS-III提供的软件定时器相关API函数及其使用方法,包括创建、删除、启动和停止定时器等操作。对于嵌入式系统开发人员理解和应用UCOS-III的软件定时器功能具有实用参考价值。
2025-11-19 08:46:56
734
原创 UCOS-III笔记(九)事件标志组
摘要:本文介绍了UCOS-III中的事件标志组机制,详细讲解了事件标志组的本质、特点和使用流程。事件标志组由多个比特位组成,每位代表一个用户自定义事件(1表示发生,0表示未发生),支持多任务同时读写操作。文章提供了OSFlagCreate()、OSFlagPost()和OSFlagPend()等核心API的使用说明,包括参数含义和操作选项(如OS_OPT_PEND_FLAG_SET_ALL等),并配有逻辑关系图展示等待机制。
2025-11-18 15:20:27
668
1
原创 消息队列和信号量使用情况说明
信号量与消息队列使用指南 信号量适用于资源同步(互斥锁)、任务同步和资源池管理,仅关心资源可用性而不传递数据。消息队列则用于需要传输具体数据的场景,如传感器数据、命令参数或数据流处理。实际开发中,信号量回答"资源可用吗",消息队列回答"数据是什么"。两者可组合使用:信号量通知事件发生,消息队列传递具体信息。性能敏感场景优先使用信号量,需传递数据时选择消息队列。
2025-11-18 08:22:11
285
2
原创 内核中任务信号量和任务队列的设计哲学
本文探讨了UCOS-III内核中任务信号量和任务队列的设计实现。通过代码示例展示了任务信号量的使用方法:使用OSTaskSemSet()初始化信号量、OSTaskSemPost()发送信号量、OSTaskSemPend()获取信号量。同时演示了任务队列的操作,包括OSTaskQPost()发送消息到目标任务的队列中。作者在嵌入式开发领域有丰富经验,专注于无线联邦学习和驱动开发方向。文中代码示例清晰地展示了实时操作系统中任务间通信机制的实现方法,为嵌入式系统开发者提供了实用参考。
2025-11-17 09:58:27
569
5
原创 UCOS-III笔记(八)任务内嵌信号量与任务内嵌消息队列
本文介绍了UCOS-III操作系统中任务内嵌信号量和消息队列的机制与应用。任务内嵌信号量是分配在任务控制块中的专有信号量,只能由所属任务获取但可由其他任务或中断释放,具有内存占用小、效率高的特点。作者详细讲解了相关API函数,包括获取信号量的OSTaskSemPend()、释放信号量的OSTaskSemPost()和设置信号量的OSTaskSemSet()。同时,文章也阐述了任务内嵌消息队列的实现原理和使用方法,重点介绍了获取消息的OSTaskQPend()和发送消息的OSTaskQPost()函数。
2025-11-17 09:55:41
550
7
原创 delay_ms和OSTimeDly的区别
本文比较了裸机程序中的delay_ms与RTOS系统中的OSTimeDly两种延时函数的区别。delay_ms通过空循环实现忙等待,会完全占用CPU资源,导致系统响应性差;适用于裸机程序。而OSTimeDly则利用RTOS的任务调度机制,主动挂起当前任务让出CPU资源,允许其他任务运行,提高CPU利用率和系统响应性。关键区别在于:delay_ms不释放CPU(运行态),而OSTimeDly主动释放CPU(挂起态)。RTOS环境下使用OSTimeDly可实现更高效的并发任务处理。
2025-11-14 09:14:55
792
3
原创 UCOS-III笔记(七)信号量
本文介绍了UCOS-III中的信号量机制,包括二值信号量、计数型信号量和互斥信号量。二值信号量用于同步问题,计数型信号量适用于事件计数和资源管理,而互斥信号量通过优先级继承解决优先级翻转问题。文章详细说明了各信号量的特点、使用流程和相关API函数,如OSSemCreate()、OSSemPost()、OSSemPend()等,并指出互斥信号量不能用于中断服务函数。通过具体示例解释了优先级翻转现象及其影响,帮助读者理解信号量的应用场景和实现方法。
2025-11-14 08:47:17
1425
3
原创 UCOS-III笔记(六)消息队列
本文介绍了UCOS-III操作系统中消息队列的基本概念和常用API函数。消息队列作为任务间和中断与任务间数据交换的机制,具有数据保护、多任务访问安全等特点。文章重点讲解了消息队列的创建(OSQCreate)、发送消息(OSQPost)和接收消息(OSQPend)三个核心API函数的使用方法和参数说明,并指出读队列支持阻塞而写队列不支持的特性。消息队列采用FIFO或LIFO方式存储数据,通过指针传递任意类型数据,适合各种嵌入式系统开发场景。
2025-11-13 08:32:20
1183
7
原创 UCOS-III笔记(五)时间片调度与时间管理
本文介绍了UCOS-III中的时间片调度和时间管理功能。时间片调度允许同等优先级任务轮流执行,通过OSSchedRoundRobinCfg()函数配置时间片长度。时间管理提供OSTimeDly()和OSTimeDlyHMSM()两种任务延时方法,前者以时钟节拍为单位,后者支持时/分/秒/毫秒格式。此外还介绍了OSTimeDlyResume()函数用于恢复延时任务,并比较了两种延时方式的区别:OSTimeDly()为周期延时,OSTimeDlyHMSM()为相对延时。这些功能都需要通过特定宏定义来启用。
2025-11-13 08:29:07
804
6
原创 UCOS-III笔记(四)任务调度
本文介绍了UCOS-III操作系统的任务调度机制,包括系统初始化函数OSInit()的实现过程,以及启动任务调度器OSStart()的关键步骤。详细讲解了如何通过前导置零指令获取最高优先级任务,并分析了第一个任务启动函数OSStartHighRdy()的执行流程。文章还深入探讨了任务切换原理,包括现场保存与恢复机制,以及通过PendSV中断实现上下文切换的过程。此外,还解释了MSP和PSP两种栈指针的使用场景,以及EXC_RETURN在任务切换中的作用。
2025-11-12 16:33:15
1115
2
原创 UCOS-III笔记(三)临界段代码保护及任务调度锁
本文介绍了UCOS-III中的两种资源保护机制:临界段代码保护和任务调度锁。临界段通过关闭中断来保护关键代码,具有成对使用、不支持嵌套和短时操作的特点;任务调度锁则通过挂起调度器防止任务抢占,支持嵌套调用且不影响中断响应。文章对比了两者的区别:临界段完全关闭中断,而调度锁仅阻止任务切换;调度锁适用于任务间的临界区保护,既能保证安全又不会延迟中断响应。两种机制都需要成对使用,但调度锁提供了更灵活的嵌套支持。
2025-11-12 16:27:53
502
5
原创 UCOS-III笔记(二)任务创建、删除、挂起、恢复和中断管理
UCOS-III核心功能摘要 任务管理 任务创建后立即进入就绪态,删除任务仅解除内核管理,不释放资源 任务挂起/恢复需成对使用,挂起将任务移出就绪列表 空闲任务不可删除/挂起 中断机制 使用BASEPRI和PRIMASK寄存器实现中断屏蔽 中断优先级分组建议全设为抢占优先级 UCOSIII管理特定优先级范围的中断(如4~15) 关键特性 任务调度需开启调度器(OSStart) 临界区代码段需中断保护 PendSV设为最低优先级确保中断响应性 系统中断与任务优先级数值越小越优先
2025-11-11 16:36:11
727
1
原创 UCOS-III笔记(一)初识UCOSIII
本文介绍了UCOS-III实时操作系统的基础知识。首先对比了裸机系统与RTOS的特点,指出RTOS具有分而治之、任务调度和抢占式执行等优势。UCOS-III作为可靠的第三代实时内核,支持多任务、安全认证和多种处理器架构。文章详细阐述了UCOS-III的两种任务调度方式(抢占式和基于时间片)以及五种任务状态转换关系(运行态、就绪态、挂起态、休眠态和中断态),并通过状态转换图说明了它们之间的联系。最后说明了UCOS-III使用三大列表(就绪列表、Tick列表和挂起列表)来跟踪任务状态,并指出空闲任务的特殊性。
2025-11-11 16:29:32
953
12
原创 Camera开发-V4L2/media controller框架介绍
本文粗略介绍了v4l2框架以及media ctl框架,并通过ov5640驱动为例,进行分析
2024-07-10 10:31:40
2034
27
原创 Quectel EM05-CE 模块测试
本文章是针对移远公司EM05-CE的4G无线网卡驱动开发,利用mipi-PCIE转M.2接口接入
2024-07-01 08:55:01
4066
36
磨损均衡技术相关论文.zip
2025-11-26
集成电路8位串入并出移位寄存器芯片技术手册:Nexperia 74HC164/74HCT164器件规格与应用指南
2025-11-24
I2C接口EEPROM存储器24LC16B技术规格书
2025-11-24
机房预约系统/应用软件开发+C++/面向对象编程/文件操作/控制台输入输出+用户身份/登录验证/预约管理/系统菜单
2025-02-17
基于STL的演讲比赛流程管理系统+STL(标准模板库)+演讲比赛管理,选手信息,比赛流程,随机数生成,用户交互,记录查看与清除
2025-02-15
人力资源管理/员工分配+C++/STL容器(vector、multimap)+创建员工对象、为员工分配随机工资、根据部门编号将员工分组、按部门显示员工信息
2025-02-12
C++编程+面向对象编程+随机数生成+选手评分系统
2025-02-11
基于多态的职工管理系统+C++软件开发+员工管理+信息系统
2025-01-27
通讯录管理系统,C++编写,可直接编译运行,有注释
2025-01-13
B3 EV101WXM-N10 Product Specification Rev.0
2024-06-30
ms1112驱动(含i2c框架和iio框架)
2024-06-06
自动下载,安装,编译官方库的脚本文件
2024-04-28
拷贝任意域名下的脚本文件
2024-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅