FreeRTOS 学习笔记 1
2015-07-23 16:33
337 查看
之所以要学习 FreeRTOS,不是因为它多么出众,仅仅是因为公司要做的项目使用的芯片上有它,而我是后参与进来的,之前就听到前面的人说这部分比较难,所以就来学一下,免得做项目的时候抓瞎,所以我现在也不知道他到底难不难,完全没 Feel 。
Ps:对于前人的指教还是比较信任的。。。反正总不会害我。。。
这一次也要开始使用 Keil,以前一直用的是 IAR,熟悉一下应该也没有问题。。。
本人英语不是很好,幸好 Zou Changjun 前辈翻译了中文版,感谢 Zou Changjun 前辈。。。
桌面电脑的输入处理可以归类为”软实时”。为了保证用户的最佳体验,计算机对每个输入的响应应当限定在一个恰当的时间范围——但是如果响应时间超出了限定范围,并不会让人觉得这台电脑无法使用。比如说,键盘操作必须在键按下后的某个时间内作出明显的提示。但如果按键提示超出了这个时间,会使得这个系统看起来响应太慢,而不致于说这台电脑不能使用。
硬实时功能必须在给定的时间限制之内完成——如果无法做到即意味着整个系统的绝对失败。汽车的安全气囊触发机制就是一个硬实时功能的例子。安全气囊在撞击发生后给定时间限制内必须弹出。如果响应时间超出了这个时间限制,会使得驾驶员受到伤害,而这原本是可以避免的。
大多数嵌入式系统不仅能满足硬实时要求,也能满足软实时要求。
Ps:第一次听说软实时和硬实时,以前真么接触过。。。以前连操作系统都没接触过,唯一接触过的是 CC2541 的 OSAL。。。
FreeRTOS 任务不允许以任何方式从实现函数中返回——它们绝不能有一条”return”语句,也不能执行到函数末尾。如果一个任务不再需要,可以显式地将其删除。这也在程序清单2 展现。
一个任务函数可以用来创建若干个任务——创建出的任务均是独立的执行实例,拥有属于自己的栈空间,以及属于自己的自动变量(栈变量),即任务函数本身定义的变量。
我的理解就是创建一个任务,把功能函数放到 for 循环里面,如果功能函数执行完毕,或者有其他优先级更高的任务发生,就跳出任务,,,删除当前任务还不明白
Ps:对于前人的指教还是比较信任的。。。反正总不会害我。。。
这一次也要开始使用 Keil,以前一直用的是 IAR,熟悉一下应该也没有问题。。。
本人英语不是很好,幸好 Zou Changjun 前辈翻译了中文版,感谢 Zou Changjun 前辈。。。
桌面电脑的输入处理可以归类为”软实时”。为了保证用户的最佳体验,计算机对每个输入的响应应当限定在一个恰当的时间范围——但是如果响应时间超出了限定范围,并不会让人觉得这台电脑无法使用。比如说,键盘操作必须在键按下后的某个时间内作出明显的提示。但如果按键提示超出了这个时间,会使得这个系统看起来响应太慢,而不致于说这台电脑不能使用。
硬实时功能必须在给定的时间限制之内完成——如果无法做到即意味着整个系统的绝对失败。汽车的安全气囊触发机制就是一个硬实时功能的例子。安全气囊在撞击发生后给定时间限制内必须弹出。如果响应时间超出了这个时间限制,会使得驾驶员受到伤害,而这原本是可以避免的。
大多数嵌入式系统不仅能满足硬实时要求,也能满足软实时要求。
Ps:第一次听说软实时和硬实时,以前真么接触过。。。以前连操作系统都没接触过,唯一接触过的是 CC2541 的 OSAL。。。
FreeRTOS 任务不允许以任何方式从实现函数中返回——它们绝不能有一条”return”语句,也不能执行到函数末尾。如果一个任务不再需要,可以显式地将其删除。这也在程序清单2 展现。
一个任务函数可以用来创建若干个任务——创建出的任务均是独立的执行实例,拥有属于自己的栈空间,以及属于自己的自动变量(栈变量),即任务函数本身定义的变量。
void ATaskFunction( void *pvParameters ) { /* 可以像普通函数一样定义变量。用这个函数创建的每个任务实例都有一个属于自己的iVarialbleExample变量。但如果iVariableExample被定义为static,这一点则不成立 – 这种情况下只存在一个变量,所有的任务实例将会共享这个变量。 */ int iVariableExample = 0; /* 任务通常实现在一个死循环中。 */ for( ;; ) { /* 完成任务功能的代码将放在这里。 */ } /* 如果任务的具体实现会跳出上面的死循环,则此任务必须在函数运行完之前删除。传入NULL参数表示删除的是当前任务 */ vTaskDelete( NULL ); }
<span style="font-family: Arial, Helvetica, sans-serif;">程序清单2 典型的任务函数结构</span>
我的理解就是创建一个任务,把功能函数放到 for 循环里面,如果功能函数执行完毕,或者有其他优先级更高的任务发生,就跳出任务,,,删除当前任务还不明白
相关文章推荐
- Xcode开发技巧之Code Snippets Library
- HDOJ 1047 Integer Inquiry(多次大数相加)
- java中静态方法和实例方法的区别
- KBps和Kbps的区别
- “FormCRUD.csProj.FormMain.Name”隐藏了继承的成员“System.Windows.Forms.Control.Name”。如果是有意隐藏,请使用关键字 new。
- Jquery Mobile 中绑定事件
- dubbo-admin 环境搭建注意点
- Git的Patch功能
- STM32时钟理解
- hdoj还是A+B 1229
- 求1~50间的素数(利用带标号的break语句使其终止)
- 用Idea建立Struts2工程
- Java编码学习
- Symantec SEP如何管理已存在的客户端
- Salt Stack 入门教程
- 转 spring security的使用
- 什么是索引文件,要随机存取某一记录时需经过几步操作?
- UVa10305拓扑排序入门题 可做模板用
- LOL屌丝3个月成为android高手的心酸历程
- 黑马程序员——多线程(一)