zoukankan      html  css  js  c++  java
  • 【FreeRTOS学习02】源码结构/数据类型/命名规则总结

    个人不是很喜欢FreeRTOS的编程风格,但是没办法,白嫖人家的东西,只能忍了,这里先简单总结一下;

    相关文章

    【FreeRTOS实战汇总】小白博主的RTOS学习实战快速进阶之路(持续更新)

    1 源码结构

    下载或者克隆源码,可以看到顶层的源码结构如下图所示;


    在这里插入图片描述

    • FreeRTOS:实时系统的源文件,主要是这部分;
    • FreeRTOS-Plus:这里主要基于FreeRTOS的demo,比如iot-lib,tcp等等;

    下面重点看一下FreeRTOS,具体如下所示;


    在这里插入图片描述

    • ① portable:是一个文件夹,里面包括了各个平台移植所需要的文件;
    • ② MenMang:内存管理的文件,基本包括heap_1.cheap_2.cheap_3.cheap_4.cheap_5.c,以后再深入了解;

    下面是几个比较核心的文件,前面有简单提到过,简单介绍如下:

    • list.c
      基本的数据结构,双链表的实现,是很多函数的底层文件, 使用FreeRTOS必须要包含的文件;
    • tasks.c
      任务块,任务调度,创建,删除等等接口都在这个文件中,也是必须要包含的文件;
    • queue.c
      这个文件同时提供消息队列和信号量服务,作为任务间同步基本离不开它,所以这个文件几乎也是必须包含的;
    • timers.c
      这个文件提供软件计时器功能。如果需要实际使用软件计时器的功能,则应该将它包括到构建工程中;
    • event_groups.c
      这个文件提供了事件组功能。如果需要事件组,则需要将它包含到工程中;
    • croutine.c
      这个文件实现FreeRTOS协同例程功能,协同例程用于非常小的微控制器,现在很少使用,看情况添加;

    具体如下所示;
    在这里插入图片描述

    • FreeRTOSConfig.h
      这个文件可以有用户创建,当然在源码的demo路径下可以找到现成的文件,根据自己需求配置FreeRTOSConfig.h的宏定义,从而实现对FreeRTOS的剪裁。

    2 数据类型

    FreeRTOS的数据类型基本上都定义在portmacro.h文件中,比如在FreeRTOSSourceportableRVDSARM_CM3下就可以找到这个文件;除此之外,FreeRTOS中还有两个特定的数据类型;

    • BaseType_t
      这个类型被定义为架构中最有效的数据类型;比如32位体系结构使用32 bit数据类型/int32_t,16位架构使用16 bit数据类型/int16_t,8位架构上使用8 bit数据类型/int8_t
      BaseType_t 适用于数据范围比它小的类型的值,所以也适用于pdTRUE/pdFALSE类型的布尔值;
    • TickType_t
      FreeRTOS配置一个称为tick interrupt的定时中断;两次滴答中断之间的时间称为滴答中断周期;所以tick number是指定滴答中断周期的倍数,TickType_t是用来保存滴答计数值和to的数据类型指定时间。

    32位机上数据类型定义如下所示,和具体的平台相关;


    在这里插入图片描述

    3 命名规则

    3.1 常见命名规则

    • 匈牙利命名法:广泛应用于Microsoft Windows这类环境中;

    • 驼峰命名法:近年来越来越流行。
      驼峰命名法,正如它的名称所表示的那样,指的是混合使用大小写字母来构成标识符的名字。其中第一个单词首字母小写,余下的单词首字母大写。
      例如:
      printEmployeePaychecks();
      函数名中每一个逻辑断点都有一个大写字母来标记。

    • 帕斯卡(Pascal)命名法:与驼峰命名法类似。
      只不过驼峰命名法是第一个单词首字母小写,而帕斯卡命名法则是第一个单词首字母大写。因此这种命名法也有人称之为“大驼峰命名法”。
      例如:
      DisplayInfo();
      UserName
      都是采用了帕斯卡命名法。在C#中,以帕斯卡命名法和骆驼命名法居多。事实上,很多程序设计者在实际命名时会将驼峰命名法和帕斯卡结合使用,例如变量名采用驼峰命名法,而函数采用帕斯卡命名法。

    • 下划线命名法
      下划线法是随着C语言的出现流行起来的,在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍。1

    3.2 FreeRTOS的规则

    • 变量名
      前缀cchar
      前缀sint16_t
      前缀p:指针变量;
      大写lint32_t
      小写x:表示类型为BaseType_t:其他非标准类型(结构任务句柄队列句柄等等);

    如果一个变量是无符号的,那么它也以“u”为前缀。如果一个变量是一个指针,它也是带前缀的,例如,类型为uint8_t的变量将前缀为uc

    • 函数名
      FreeRTOS函数名的前缀表示它们返回的类型,也包括它们在其中定义的文件;
      • vTaskPrioritySet():前缀v表示返回类型为viodTask表示在tasks.c中定义;
      • xQueueReceive():前缀x表示返回BaseType_t类型数据,Queue表示该函数在queue.c中定义;
      • pvTimerGetTimerID():前缀pv表示返回void类型指针,Timer表示该函数在timer.c.中定义;
      • prv:前缀prv表示作用范围为当前的文件;
    • 宏定义
      FreeRTOS的大多数宏都是用大写字母写的,并以小写字母作为前缀来表示
      定义了宏,如下所示;
    前缀定义的位置
    task (for example, taskENTER_CRITICAL()) task.h
    pd (for example, pdTRUE) projdefs.h
    config (for example, configUSE_PREEMPTION) FreeRTOSConfig.h
    err (for example, errQUEUE_FULL) projdefs.h
    port (for example, portMAX_DELAY) portable.h or portmacro.h

    4 总结

    本文总结了FreeRTOS源码结构和数据类型,为以后移植系统和源码阅读打下一丢丢基础。


    1. 驼峰命名法-百度百科 ↩︎

  • 相关阅读:
    jemeter使用笔记
    webtest mobile + Android / Battery Historian / SoloPi
    script / go / golang
    my live house / air conditioning / dajin / dakin / FTXG50JV2CW
    OS + Centos OS 8 Thinkpad TrackPoint
    network router Gpon
    Mybatisplus 自定义sql 使用条件构造器 多表查询分页
    处理fastJson 序列化时间问题
    js 实现轮播图 超级简单 组件已封装
    Webpack-dev-server的proxy用法
  • 原文地址:https://www.cnblogs.com/unclemac/p/12783314.html
Copyright © 2011-2022 走看看