b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

freertos操作系统_仓储系统_学ucos还是free rtos(3)

电脑杂谈  发布时间:2017-02-05 14:18:38  来源:网络整理

protmacro.h文件也定义了一个数据类型的基本架构。这个数据类型中包括了基本整型变量,指针,以及系统时钟节拍器的数据类型,在ARM Cortex-M3 chips上使用IAR编译器时,就采用如下定义:

#define portBASE_TYPE long // Basic integer variable type

#define portSTACK_TYPE unsigned long // Pointers to memory locations

typedef unsigned portLONG portTickType; // The system timer tick type

这样使用数据类型的方法,和函数透过小层的#defines,看上去略微有点复杂,不过它允许了FreeRTOS能够被重新编译在一个完全不同的系统架构上,仅仅只需要通过修改这些硬件相关的文件。同时,如果你想要让FreeRTOS运行在一个当前尚未被支持的架构上,你只仅仅需要去实现硬件相关的功能,这要比在FreeRTOS上去实现硬件无关的部分,要少得多。

就如同我们已经见到的,FreeRTOS用C的预处理宏#define来实现硬件相关的功能。FreeRTOS也同样用#define来应对大量的硬件无关的代码。对于非嵌入式应用程序这样频繁使用#define是一个严重的错误,不过在许多小型嵌入式系统中这点开销比起“实时”所提供的功能来说就微不足道了。

3.3. 调度任务:快速概述

任务优先级和就绪列表

所有任务都有一个用户指定优先级,从0(最低优先级)到 configMAX_PRIORITIES-1的编译时间(最高优先级)。例如,如果configMAX_PRIORITIES设置为5,当FreeRTOS使用5个优先等级时:0(最低优先级),1,2,3,和4(最高优先级)。

FreeRTOS使用一个“就绪列表”来跟踪所有已经准备好运行的任务。它像一个任务列表数组来实现就绪列表,如下所示:

static xList pxReadyTasksLists[ configMAX_PRIORITIES ]; /* Prioritised ready tasks. */

pxReadyTasksLists[0]是所有准备好的优先级为0的任务列表,pxReadyTasksLists[1]是所有准备好的优先级为1的任务列表,以此类推,直到pxReadyTasksLists[configMAX_PRIORITIES-1]。

系统节拍器(时钟)

FreeRTOS系统的心跳就是被称为系统节拍器(时钟)。FreeRTOS配置这个系统生成一个定期的节拍(时钟)中断。用户可以配置的节拍中断频率,通常是在毫秒范围。vTaskSwitchContext()函数在每次的节拍中断释放的时候被调用。vTaskSwitchContext()选择优先级最高的就绪任务并将它赋予pxCurrentTCB变量,如下所示:

/* Find the highest-priority queue that contains ready tasks. */

while( listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxTopReadyPriority ] ) ) )

{

configASSERT( uxTopReadyPriority );

--uxTopReadyPriority;

}

/* listGET_OWNER_OF_NEXT_ENTRY walks through the list, so the tasks of the same


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-30698-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 刘会彩
      刘会彩

      法国人吃鹅肝鱼子就把鹅肝列为顶级美食

    • 邵怀英
      邵怀英

      而且钱可随时转进转出

    • 向千梓
      向千梓

      别用这样的新闻来误导读者

    每日福利
    热点图片
    拼命载入中...