From:http://www.cnblogs.com/suozhang/p/5301054.html 1、官方文档提供了 函数 用来查询 任务 剩余 栈 空间,首先是看官方的文档解释(某位大神 翻译 的 官方 文档。) 参数解释: xTask:被查询任务的句柄——欲知如何获得任务句柄,详情请参见A ...
分类:
其他好文 时间:
2016-08-05 10:07:40
阅读次数:
166
当RTOS调度器开始工作后,为了保证至少有一个任务在运行,空闲任务被自动创建,占用最低优先级(0优先级)。 xReturn = xTaskCreate( prvIdleTask,
"IDLE",configMINIMAL_STACK_SIZE,
(void * ) NULL,...
分类:
其他好文 时间:
2016-07-29 15:41:30
阅读次数:
1287
FreeRTOS提供了两个系统延时函数:相对延时函数vTaskDelay()和绝对延时函数vTaskDelayUntil()。相对延时是指每次延时都是从任务执行函数vTaskDelay()开始,延时指定的时间结束;绝对延时是指每隔指定的时间,执行一次调用vTaskDelayUntil()函数的任务。换句话说:任务以固定的频率执行。在《FreeRTOS系列第11篇---FreeRTOS任务控制》一文...
分类:
其他好文 时间:
2016-06-18 15:35:58
阅读次数:
188
内存管理对应用程序和操作系统来说都非常重要。现在很多的程序漏洞和运行崩溃都和内存分配使用错误有关。 FreeRTOS操作系统将内核与内存管理分开实现,操作系统内核仅规定了必要的内存管理函数原型,而不关心这些内存管理函数是如何实现的。这样做大有好处,可以增加系统的灵活性:不同的应用场合可以使用不同的内存分配实现,选择对自己更有利的内存管理策略。比如对于安全型的嵌入式系统,通常不允许动态...
分类:
其他好文 时间:
2016-06-12 03:04:31
阅读次数:
350
在FreeRTOS版本V8.2.0中推出了全新的功能:任务通知。在大多数情况下,任务通知可以替代二进制信号量、计数信号量、事件组,可以替代数长度为1的队列(可以保存一个32位整数或指针值),并且任务通知速度更快、使用的RAM更少!我在《 FreeRTOS系列第14篇---FreeRTOS任务通知》一文中介绍了任务通知如何使用以及局限性,今天我们将分析任务通知的实现源码,看一下任务通知是如何做到效率...
分类:
其他好文 时间:
2016-06-12 02:12:50
阅读次数:
788
FreeRTOS的信号量包括二进制信号量、计数信号量、互斥信号量(以后简称互斥量)和递归互斥信号量(以后简称递归互斥量)。关于它们的区别可以参考《 FreeRTOS系列第19篇---FreeRTOS信号量》一文。 信号量API函数实际上都是宏,它使用现有的队列机制。这些宏定义在semphr.h文件中。如果使用信号量或者互斥量,需要包含semphr.h头文件。 二进制信...
分类:
其他好文 时间:
2016-05-30 14:45:47
阅读次数:
6549
FreeRTOS提供了多种任务间通讯方式,包括:任务通知(版本V8.2以及以上版本)队列二进制信号量计数信号量互斥量递归互斥量 其中,二进制信号量、计数信号量、互斥量和递归互斥量都是使用队列来实现的,因此掌握队列的运行机制,是很有必要的。 队列是FreeRTOS主要的任务间通讯方式。可以在任务与任务间、中断和任务间传送信息。发送到队列的消息是通过拷贝实现的,这意味着队列存储的数...
分类:
其他好文 时间:
2016-05-27 11:35:18
阅读次数:
680
FreeRTOS任务相关的代码大约占总代码的一半左右,这些代码都在为一件事情而努力,即找到优先级最高的就绪任务,并使之获得CPU运行权。任务切换是这一过程的直接实施者,为了更快的找到优先级最高的就绪任务,任务切换的代码通常都是精心设计的,甚至会用到汇编指令或者与硬件相关的特性,比如Cortex-M3的CLZ指令。因此任务切换的大部分代码是由硬件移植层提供的,不同的平台,实现发方法也可能不同,这篇文...
分类:
其他好文 时间:
2016-05-18 19:05:05
阅读次数:
230
嵌入式系统开发流程嵌入式系统的一般开发流程如下:
嵌入式操作系统
管理资源
提高系统可靠性
硬件虚拟化
实时性能
多任务
现有的嵌入式操作系统
VxWorks pSOS PalmOS QNX OS-9 LynxOS WindowsCE uC/OS 嵌入式Linux FreeRTOS ARM体系架构ARM:Advanced RISC Machines
ARM处理器共有37个寄存器,分为若干个组...
分类:
其他好文 时间:
2016-05-12 23:14:31
阅读次数:
205
使用FreeRTOS,一个最基本的程序架构如下所示:int main(void)
{
必要的初始化工作;
创建任务1;
创建任务2;
...
vTaskStartScheduler(); /*启动调度器*/
while(1);
} 任务创建完成后,静态变量指针pxCurrentTCB(见《FreeRTOS高级篇2---FreeRT...
分类:
其他好文 时间:
2016-05-07 07:18:38
阅读次数:
2083