嵌入式实时系统FreeRTOS

上传人:F****n 文档编号:118810162 上传时间:2019-12-26 格式:PPT 页数:152 大小:3.09MB
返回 下载 相关 举报
嵌入式实时系统FreeRTOS_第1页
第1页 / 共152页
嵌入式实时系统FreeRTOS_第2页
第2页 / 共152页
嵌入式实时系统FreeRTOS_第3页
第3页 / 共152页
嵌入式实时系统FreeRTOS_第4页
第4页 / 共152页
嵌入式实时系统FreeRTOS_第5页
第5页 / 共152页
点击查看更多>>
资源描述

《嵌入式实时系统FreeRTOS》由会员分享,可在线阅读,更多相关《嵌入式实时系统FreeRTOS(152页珍藏版)》请在金锄头文库上搜索。

1、*1 单击此处编辑母版标 题样式 单击此处编辑母版副标题样式 嵌入式实时系统 -FreeRTOS 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 1、FreeRTOS简介 FreeRTOS是一个嵌入式系统使用的开源实时系统。 FreeRTOS小巧,简单,易用。能支持许多不同硬件 架构以及交叉编译器。 此系统可以免费进行商业应用,被大量公司与科研公司 用于嵌入式产品的开发。 支持的处理器架构:ARM7,ARM9,COLTEX-m3、AVR 、PIC等。

2、一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 1、FreeRTOS简介 n嵌入式系统: n一个专门设计用来做一些简单事情的计算机系统 ,如电视遥控器,车载GPS,电子手表,或者起 搏器这类。嵌入式系统比通用计算机系统更小更 慢,通常也更便宜。 n如:低端:一个运行速度为25MHz的8位CPU, 几KB的内存。 n 高端:一个运行速度为750MHz的32位 CPU ,一个GB左右的内存,和几个GB的闪存。 一个人拥有健康,美貌,诚信,机敏,才学,金钱,

3、荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 1、FreeRTOS简介 n实时(RT) n软实时:按照任务的优先级,尽可能快地完成操 作即可 。 n硬实时:硬实时要求在规定的时间内必须完成操 作 。 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 1、FreeRTOS简介 系统基本架构 其代码可以分解为三个主要区块: 任务 通讯 硬件接口 任务:大约50

4、%的FreeRTOS的核心代码 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 1、FreeRTOS简介 通讯:大约40%的FreeRTOS核心代码是用来处理 通讯的。任务和中断使用队列互相发送数据,并 且使用信号灯和互斥来发送临界资源的使用情况 。 硬件接口:大约有6%的FreeRTOS的核心代码, 在硬件无关的FreeRTOS内核与硬件相关的代码 间扮演着垫片的角色。 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静

5、,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 2、任务简介 2.1任务函数 任务是由C语言函数实现的。任务函数其必须返 回void, 而且带有一个void指针参数。其函数原 型参见程序清单1。 void ATaskFunction( void *pvParameters ); 程序清单1 任务函数原型 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 2.1任务函数 注意事项: FreeR

6、TOS 任务不允许以任何方式从实现函数中返回 它们绝不能有一条”return”语句,也不能执行到函数末 尾。如果一个任务不再需要,可以显式地将其删除 (void vTaskDelete( xTaskHandlepxTaskToDelete );) 。 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 2.1任务函数 创建任务: 创建任务使用FreeRTOS的API函数xTaskCreate()。 程序清单2 一个人拥有健康,美貌,诚信,机敏,才学,金钱,

7、荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 2.1任务函数 n参数介绍 : npvTaskCode 一个指向任务的实现函数的指针(效果上仅仅是函数 n名)。 npcName 具有描述性的任务名。这个参数不会被FreeRTOS使用。 其只是单 n纯地用于辅助调试。usStackDepth 当任务创建时,内核会分为每个 任务分配属于任务自己的唯一状态。 nusStackDepth值用于告诉内核为它分配多大的栈空间。 n这个值指定的是栈空间可以保存多少个字(word),而不是多少个字 n节(byte

8、)。比如说,如果是32位宽的栈空间,传入的usStackDepth n值为100,则将会分配400字节的栈空间(100 * 4bytes)。 n。 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 n参数: npvParameters 任务函数接受一个指向void的指针(void*)。 pvParameters的值即是传递到任务中的值。 nuxPriority 指定任务执行的优先级。优先级的取值范围可以从最低优先级0 到最高优先级(configMAX_P

9、RIORITIES 1)。 nconfigMAX_PRIORITIES 是一个由用户定义的常量。 npxCreatedTask 用于传出任务的句柄。这个句柄将在API调用中对该创建出 来的任务进行引用,比如改变任务优先级,或者删除任务。如果应用程序中 不会用到这个任务的句柄,则pxCreatedTask可以 n被设为NULL 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 n返回值 n有两个可能的返回值: n1.pdTRUE n表明任务创建成功。 n2

10、.errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY n由于内存堆空间不足,FreeRTOS无法分配足够的空间来 保存任务结构数据和任务栈,因此无法创建任务。 n第五章将提供更多有关内存管理方面的信息。 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 2.1任务函数 例1. 创建任务 本例演示了创建并启动两个任务的必要步骤 。 两个任务内容: 周期性地打印输出字符串。 两者在创建时指定了相同的优先级。 一个人拥有健康,美貌,诚信

11、,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 任务一:周期性输出: Task 1 is runningrn 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 任务二:周期性输出: Task 2 is runningrn 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一

12、个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 main()函数:简单地创建这两个任务,然后启动调 度器 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 运行结果: 图一 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 2.1任务函数 任务分配分析: 图2中看到两个任务在同时运行,事实

13、上这两个任务 由于优先级相同,而且在一个处理器上运行,其 实是在交替运行。 真实的执行流程所图3所示 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 2.1任务函数 图二 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 2.1任务函数 上例中main()函数在启动调度器之前先完成两个任务 的创建。当然也可以从一

14、个任务中创建另一个任务。 我们可以先在main()中创建任务1,然后在任务1中创 建任务2这样需要在任务一中添加以下语句: xTaskCreate( vTask2, Task 2, 1000, NULL, 1, NULL ); 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 2.1任务函数 n关于使用xTaskCreate()时任务函数的参数 问题 n例1中的两个任务几乎完全相同,唯一的区 别就是打印输出的字符串。这种重复性可 以通过创建同一个任务代码

15、的两个实例来 去除。 n这时任务参数就可以用来传递各自打印输 出的字符串。 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 我们仍然调用两次xTaskCreate(),但其pvParameters(第四个) 参数变 为了两个不同的指针,两个指针分别指向各自需要打印输出的文本。 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说

16、说你的理由。 2.2任务调度 任务的调度方法: 通过对任务设置优先级进行优先级抢占式调度。 每个任务都赋予了一个优先级。 每个任务都可以存在于一个或多个状态。 在任何时候都只有一个任务可以处于运行状态 。 调度器总是在所有处于就绪态的任务中选择具 有最高优先级的任务来执行。 一个人拥有健康,美貌,诚信,机敏,才学,金钱,荣誉,7个背囊,渡船开始时风平浪静,可是不久就刮起了大风,船夫说要扔掉一个背囊,你会扔掉那个背囊呢?最后你要扔掉哪一个?为什么呢?说说你的理由。 2.2任务调度 优先级: xTaskCreate() API函数的参数uxPriority(即第五个 参数)为创建的任务赋予了一个初始优先级。 常

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 小学教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号