FreeRTOS
文章平均质量分 88
Quan略略略
君子爱色取之有道
展开
-
【FreeRTOS】内存溢出检测
FreeRTOS官方给了两种内存溢出检测方案:FreeRTOS - stacks and stack overflow checkingFreeRTOS is a portable, open source, mini Real Time kernel. A free RTOS for small embedded systemshttps://www.freertos.org/Stacks-and-stack-overflow-checking.html【进阶】三种" 堆栈溢出检测 "方法,请拿去吹牛原创 2021-10-13 16:33:52 · 1521 阅读 · 0 评论 -
FreeRTOS - 初探
之前一直使用自己写的一个RTOS系统进行开发,出于强迫症的原因一直不愿意使用UCOS-II或者FreeRTOS,因为我想一切都掌控在自己手里,甚至写了一个的GUI系统进行人机交互系统开发,现在发现这样的局限性还是很大的,别人看不懂我的RTOS系统代码,我看不懂别人的RTOS系统代码,所以要么将我的RTOS发展为世界通用的系统,要么随波逐流使用当今主流的系统。我决定随波逐流。很早就了解FreeR...原创 2019-02-22 11:56:34 · 763 阅读 · 0 评论 -
FreeRTOS - 任务
简而言之,基于RTOS的实时应用程序都是由若干个独立任务组成的,每个任务的实体就是一个普通的函数并拥有自己的上下文环境以及栈空间。但是对于单核CPU系统来说在任何一个时间点只能有一个任务在运行,这个正在运行的任务是由RTOS的任务调度器从众多的就绪状态的任务中选取出来的最合适的一个任务。(tqOS、UCOS、FreeRTOS都是这个的原理)对于FreeRTOS系统来说,每个任务的实体函数原型为...原创 2019-02-25 13:12:11 · 393 阅读 · 0 评论 -
FreeRTOS - 队列
FreeRTOS系统中,应用程序是由多个独立任务组成的,各个任务之间需要进行通信和同步,而任务间的通信和同步机制都是由queue来实现的,包括信号量(Semaaphore)、互斥锁(Mutex)、事件(Event)、流缓冲器(Stream Buffer)、消息队列(Message Buffer)等都是以队列为基础实现的。例如,在FreeRTOS的源码中,创建一个Queue的函数原型定义如下:...原创 2019-02-25 15:20:53 · 553 阅读 · 0 评论 -
FreeRTOS - 中断管理
中断对于嵌入式实时系统来说重要性不言而喻。在FreeRTOS系统中,突发的、周期性的、无法预期的事情称作事件Event,嵌入式系统需要对这些事件进行识别和处理,一般会使用中断的机制来检测这些事件的发生,当然也可以使用查询(标志位)的方式识别事件是否发生。通常我们需要中断处理函数ISR尽可能的简短,这个原则是在裸机应用开发中也有的,但是有的事件会触发大量的耗时的CPU运算,例如当我们收到一帧JPEG...原创 2019-02-26 11:02:45 · 1909 阅读 · 0 评论 -
FreeRTOS - 信号量
说信号量之前需要解释一下计算机系统中的资源的概念,这里所说的资源并不仅仅指CPU和内存,打印机、显示器、音响等都算是资源。只要是资源,就存在占用问题,例如如果有两个任务A、B在同一个时间段都想使用同一台打印机进行打印服务,如果系统不对A和B进行管理,两个任务同时向打印机发送数据,可能就会出现冲撞导致打印错误,如果系统先让A任务打印,然后再让B打印,这样就避免了任务之间的资源占用冲撞问题。信号量...原创 2019-02-26 18:14:14 · 793 阅读 · 0 评论 -
FreeRTOS - 内存管理
内存管理一般就是指动态内存分配和回收,Java、C#这样的语言有很“傻瓜式”的内存管理方式,无需手动分配内存并回收,但是对于C语言来说,分配内存就像进行整形数据转字符串操作一样,需要程序员“手动”进行转换,而不是简单的调用“.toString()”。C语言库函数里面的内存分配和回收函数是 malloc() 和 free() ,但是这两个函数并不适合用于嵌入式系统中,原因如下:1、在小型嵌入式...原创 2019-02-27 10:15:35 · 735 阅读 · 0 评论 -
FreeRTOS - 同步与通讯
在之前的文章中有提到FreeRTOS系统中的信号量和队列,信号量是用于资源管理和线程(中断)同步,队列则是用于创建数据缓冲区。在实际的应用中,一般会有多个线程,线程之间也会有同步和通讯的问题,使用信号量和事件组可以解决同步问题,使用队列及其衍生品可以解决通讯问题。线程间的同步可以使用二值信号量和计数信号量。创建二值信号量和计数信号量的函数原型如下:#include “FreeRTOS.h...原创 2019-07-01 12:23:23 · 2253 阅读 · 2 评论