[FreeRTOS Learning 02] Resumen de la estructura del código fuente / tipo de datos / reglas de nomenclatura

Personalmente, no me gusta mucho el estilo de programación de FreeRTOS, pero de ninguna manera, las cosas de la gente de Bairen solo se pueden tolerar, aquí hay un breve resumen;

1 estructura fuente

Descargue o clone el código fuente, puede ver la estructura del código fuente en la capa superior como se muestra a continuación;


Inserte la descripción de la imagen aquí

  • FreeRTOS: El archivo fuente del sistema en tiempo real, principalmente esta parte;
  • FreeRTOS-Plus: Esto se basa principalmente en la demostración de FreeRTOS, como iot-lib, tcp, etc.

Concéntrese en lo siguiente FreeRTOS, como se muestra a continuación;


Inserte la descripción de la imagen aquí

  • ① portable : es una carpeta que contiene los archivos necesarios para portar en cada plataforma;
  • MenMang ② : Archivos de gestión de la memoria, incluyendo básicoheap_1.c,heap_2.c,heap_3.c,heap_4.c,heap_5.c, después de entender;

Los siguientes son algunos de los documentos principales, que se mencionaron brevemente antes, y se presentan brevemente de la siguiente manera:

  • La
    estructura de datos básica de list.c , la realización de la lista doblemente vinculada, es el archivo final de muchas funciones, yFreeRTOSseutilizan los archivos quedeben incluirse;
  • Las interfaces de tareas.c
    bloque de tareas, programación de tareas, creación, eliminación, etc. están en este archivo, y también deben incluirse en el archivo;

  • El archivo queue.c proporciona servicios de cola de mensajes y semáforos. Es básicamente indispensable para la sincronización entre tareas, por lo que este archivo casi debe incluirse;
  • El
    archivo timers.c proporciona funciones de temporizador de software. Si necesita utilizar realmente la función del temporizador de software, debe incluirla en el proyecto de compilación;
  • El
    archivo event_groups.c proporciona funciones de grupo de eventos. Si se necesita un grupo de eventos, debe incluirse en el proyecto;
  • El
    archivo croutine.c implementa laFreeRTOSfunción de rutinas colaborativas. Las rutinas colaborativas se usan para microcontroladores muy pequeños, que rara vez se usan ahora, y se agregan dependiendo de la situación;

Los detalles son los siguientes;
Inserte la descripción de la imagen aquí

  • El
    usuario puede crear el archivo FreeRTOSConfig.h . Por supuestodemo, puede encontrar el archivo listo enlaruta delcódigo fuentey configurarFreeRTOSConfig.hla definición de macro deacuerdo con sus propias necesidades, para realizarFreeRTOSla adaptación.

2 tipo de datos

FreeRTOSLos tipos de datos se definen en sustancialmente portmacro.hel archivo, tal como FreeRTOS\Source\portable\RVDS\ARM_CM3se pueden encontrar en este documento y, además, FreeRTOShay dos tipos específicos de datos;

  • BaseType_t
    se define como el tipo de datos más efectivo en la arquitectura; por ejemplo, las arquitecturas de 32 bits usan32 bittipos de datos /int32_t, las arquitecturas de 16 bits usan16 bittipos de datos /int16_ty las arquitecturas de 8 bits usan8 bittipos de datos /int8_t.
    BaseType_t es aplicable al valor del tipo cuyo rango de datos es menor que él, por lo que también es aplicable alvalor booleano depdTRUE/pdFALSEtype;
  • TickType_t
    FreeRTOS configura unatick interruptinterrupción temporizadallamada; el tiempo entre dos interrupciones tick se llama período de interrupción tick ; por lo tanto,tick numberes un múltiplo del período de interrupción tick especificado, queTickType_tse utiliza para guardar el valor de recuento tick y el tipo de datos especificado.

La definición del tipo de datos en la máquina de 32 bits es la siguiente, que está relacionada con la plataforma específica;


Inserte la descripción de la imagen aquí

3 reglas de nomenclatura

3.1 Reglas comunes de nombres

  • Nomenclatura húngara : ampliamente utilizada en entornos como Microsoft Windows;

  • Nomenclatura de joroba : en los últimos años se ha vuelto cada vez más popular.
    La nomenclatura de la caja del camello, como su nombre lo indica, se refiere a una mezcla de letras mayúsculas y minúsculas para formar el nombre del identificador. La primera letra de la primera palabra es minúscula, y las palabras restantes son mayúsculas.
    Por ejemplo:
    printEmployeePaychecks();
    cada punto de interrupción lógico en el nombre de la función está marcado con una letra mayúscula.

  • Nomenclatura de Pascal (Pascal) : similar a la nomenclatura de la joroba.
    Es solo que la nomenclatura del caso de camello es la primera letra de la primera palabra en minúscula, y la nomenclatura de Pascal es la primera palabra de la primera letra en mayúscula. Por lo tanto, esta nomenclatura también se llama "nomenclatura de joroba grande".
    Por ejemplo:
    DisplayInfo();
    UserName
    se adopta la nomenclatura de Pascal. En C #, la nomenclatura de Pascal y la nomenclatura de camellos se utilizan principalmente. De hecho, muchos programadores usarán la nomenclatura de casos de camello y Pascal en los nombres reales, por ejemplo, los nombres de variables usan la nomenclatura de casos de camello y las funciones usan la nomenclatura de pascal.

  • Nomenclatura de subrayado : el
    método de subrayado es popular con el advenimiento del lenguaje C. Es muy común en UNIX/LIUNXtales entornos y GNUcódigos. 1

3.2 reglas de FreeRTOS

  • Nombre de la variable
    prefijoc:char;
    Prefijos:int16_t;
    Prefijop: variable de puntero;
    mayúsculasl:int32_t;
    minúsculasx: Tipo expresado comoBaseType_t: otros tipos no estándar ( estructura , identificador de tarea , el identificador de cola y similares);

Si una variable no tiene signo, también tiene el prefijo "u". Si una variable es un puntero, también tiene el prefijo. Por ejemplo, una variable de tipo uint8_t tendrá el prefijo comouc

  • Nombre de la
    FreeRTOS función El prefijo del nombre de la función indica el tipo que devuelven y también incluye los archivos en los que están definidos;
    • vTaskPrioritySet(): Prefijo vindica el tipo de retorno viod, Taskindica tasks.cla definición;
    • xQueueReceive(): El prefijo xindica los BaseType_tdatos del tipo de retorno , Queuelo que indica que la función queue.cestá definida en;
    • pvTimerGetTimerID(): El prefijo pvindica que se devuelve un puntero de tipo vacío, Timerlo que indica que la función timer.c.está definida en
    • prv: El prefijo prvindica que el alcance de la acción es el archivo actual;

  • FreeRTOSLa mayoría de las macros definidas en las macros se escriben en mayúsculas y tienen el prefijo letras minúsculas para indicar
    que las macros están definidas, como se muestra a continuación;
Prefijo Posición definida
tarea (por ejemplo taskENTER_CRITICAL()) tarea.h
pd (por ejemplo pdTRUE) projdefs.h
config (por ejemplo configUSE_PREEMPTION) FreeRTOSConfig.h
err (por ejemplo errQUEUE_FULL) projdefs.h
puerto (por ejemplo portMAX_DELAY) portable.h o portmacro.h

4 Resumen

Este artículo resume la estructura y los tipos de datos del código fuente de FreeRTOS, y sienta las bases para el futuro sistema de trasplante y la lectura del código fuente.


  1. Nomenclatura de la enciclopedia joroba-Baidu ↩︎

128 artículos originales publicados · elogiados 793 · 190,000 visitas

Supongo que te gusta

Origin blog.csdn.net/u010632165/article/details/105440711
Recomendado
Clasificación