FreeRTOS源码解析——第一章 整体架构

FreeRTOS源码解析

第四章 FreeRTOS 任务管理 第五章 FreeRTOS 消息队列 第六章 FreeRTOS 软件定时器 第七章 FreeRTOS 信号量 第八章 FreeRTOS 互斥量 第九章 FreeRTOS 任务通知 第十章 FreeRTOS 事件组



前言

本章主要介绍FreeRTOS的整体框架,给出一个简要的移植示例,文末有示例下载链接。


一、FreeRTOS简介

FreeRTOS是在微控制器上使用的具有市场领先的实时操作系统,与世界领先的芯片公司合作开发了18年,目前每170秒就会被下载一次。FreeRTOS在MIT开源许可下进行免费分发和使用:包括一个内核和一个不断增长和丰富的IOT库,可以适用于所有的行业。FreeRTOS主打的是可靠性和易用性。 备注:翻译于FreeRTOS官网

二、FreeRTOS架构框图

FreeRTOS支持市面上的多种芯片架构,如Cortex-M 、Cortex-R 、Cortex-A、RISC-V等,可以通过官方提供的Demo快速完成移植。 除基础内核外,FreeRTOS包含了丰富的组件和第三方库,还有专门应用于物联网的AWS版本等。主要包含以下组成部分:

    基础内核:包括不可裁剪的最小内核和可裁剪模块。最小内核包含任务管理、内存管理、中断管理、异常管理和系统时钟。可裁剪模块包括队列、信号量、互斥量、软件定时器、任务通知、事件组。 内核增强:在内核基础功能之上,进一步提供增强功能,包括低功耗模式、cpu的使用率、Trace事件跟踪、TCP/IP、CLI、POSIX等。 协议:提供的一系列独立于FreeRTOS内核的库,只和标准C库相关。比如MQTT、JSON、HTTP等 第三方组件:一般和具体应用场景相关的组件或者第三方提供的组件,比如GUI、为 AWS IoT 特定的增值云服务等。

本系列文章集中在基础内核的各个模块。

三、FreeRTOS支持的主要平台

四、移植简要说明

本节主要对FreeRTOS的移植进行一个大概的说明,详细教程可以百度,有很多很好的例程。

1、基于stm32f412的移植框图

2、增加的代码目录

3、测试代码

TaskHandle_t TaskPrintTestHandle = NULL;
void PrintTestTask(void *arg)
{
          
   
    uint32_t udwPrintTaskCnt = 0;
    while(1)
    {
          
   
        udwPrintTaskCnt ++;
        log_info("PrintTaskCnt:%d
",udwPrintTaskCnt);
        vTaskDelay(1000);
    
    }
}

int main(void)
{
          
   
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();

  while (1)
  {
          
   
	BaseType_t xReturn = xTaskCreate( PrintTestTask, "print_test", 128, NULL, 1, &TaskPrintTestHandle ) ;
    if (TaskPrintTestHandle == NULL)
    {
          
   
        log_info("Create Task (print_test) Fail, reason:%ld
", xReturn);
     }
    else
    {
          
   
        log_info("Create Task (print_test) Success!
");
    }
    vTaskStartScheduler();
  }
}

4 、硬件运行结果


总结

经验分享 程序员 微信小程序 职场和发展