随笔分类 - RTOS
摘要:延时函数 vTaskDelay() 相对延时函数,在文件task.c中定义的,要使用的话宏 INCLUDE_vTaskDelay 必须设置为1; 延时参数xTicksToDelay为要延时的时间节拍数,肯定要大于0,否则相当于直接调用函数portYIELD()进行任务切换; 调用vTaskSuspe
阅读全文
摘要:FreeRTOS 调度器 调度器的启动流程分析 当创建完任务之后,会调用vTaskStartScheduler()函数,启动任务调度器; 创建空闲任务,如果使用静态内存,就使用函数xTaskCreateStatic()来创建,空闲任务的优先级为0,优先级最低; 如果使用软件定时器的话,需要通过函数x
阅读全文
摘要:RTOS系统的核心就是任务管理; 任务的特性 在RTOS中每个任务都有自己的运行环境,不依赖于系统中其他的任务或者调度器,任何一个时间点只能有一个任务运行,具体运行哪个任务是由任务调度器来决定的,而任务调度器的职责就是确保当一个任务开始执行的时候其上下文环境,比如寄存器的值、堆栈中的内容等等,要和任
阅读全文
摘要:FreeRTOS中的列表和列表项类似于数据结构中的链表和节点; 相关的文件是list.c和list.h两个文件; List_t列表结构体 具体定义如下: 在上述结构体中: listFIRST_LIST_INTEGRITY_CHECK_VALUE 和 listSECOND_LIST_INTEGRITY
阅读全文
摘要:数据类型 基本使用的是标准C里面的数据类型,但是针对不同的处理器,对标准C的数据类型又进行了重定义; 在FreeRTOS中详细的数据类型重定义在portmacro.h这个文件中,具体如下: 在FreeRTOS中int类型从不使用,只使用short和long型(在Cortex M内核的MCU中,sho
阅读全文
摘要:os_cpu_c.c文件 该文件主要是根据处理器平台特点完成任务堆栈初始化函数OSTaskStkInit以及其他几个用户Hook函数的编写,其中必须要实现的函数是OSTaskStkInit(在创建任务函数中被调用),且该函数与处理器关系密切,是系统中任务能够正常切换的基础;其他几个Hook函数,可以
阅读全文
摘要:os_cpu.h文件 该文件主要是完成操作系统使用的内部数据类型、常数以及宏的定义,这些都是与处理器平台密切相关的; 第一部分 以下部分定义了系统内部常用的数据类型,为了增加系统的可移植性,系统内核只使用自己定义的INT8U、INT8S等数据类型,而不使用和编译器密切相关的unsigned char
阅读全文
摘要:任务的同步与通信 任务间的同步 在多任务合作工作过程中,操作系统要解决两个问题: 各任务间应该具有一种互斥关系,即对某些共享资源,如果一个任务正在使用,则其他任务只能等待,等到该任务释放资源后,等待任务之一才能使用它; 相关的任务在执行上要有先后次序,一个任务要等其伙伴发来通知,或建立了某个条件后才
阅读全文
摘要:任务基本概念 任务是一个接受操作系统管理的独立运行单元,在uCosII中类似与普通平台上的main()函数,需要自己来保护其因调用或中断二产生的断点,所以需要一个自己的私有堆栈,即任务堆栈; 任务有两种,分为:用户任务和系统任务; uCosII中并没有给任务分配独立的运行空间,而是所有的任务共同使用
阅读全文