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;
Directorio de artículos
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;
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;
- ① portable : es una carpeta que contiene los archivos necesarios para portar en cada plataforma;
- MenMang ② : Archivos de gestión de la memoria, incluyendo básico
heap_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, yFreeRTOS
seutilizan 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 laFreeRTOS
funció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;
- El
usuario puede crear el archivo FreeRTOSConfig.h . Por supuestodemo
, puede encontrar el archivo listo enlaruta delcódigo fuentey configurarFreeRTOSConfig.h
la definición de macro deacuerdo con sus propias necesidades, para realizarFreeRTOS
la adaptación.
2 tipo de datos
FreeRTOS
Los tipos de datos se definen en sustancialmente portmacro.h
el archivo, tal como FreeRTOS\Source\portable\RVDS\ARM_CM3
se pueden encontrar en este documento y, además, FreeRTOS
hay 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 bit
tipos de datos /int32_t
, las arquitecturas de 16 bits usan16 bit
tipos de datos /int16_t
y las arquitecturas de 8 bits usan8 bit
tipos 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
/pdFALSE
type; - TickType_t
FreeRTOS
configura unatick interrupt
interrupción temporizadallamada; el tiempo entre dos interrupciones tick se llama período de interrupción tick ; por lo tanto,tick number
es un múltiplo del período de interrupción tick especificado, queTickType_t
se 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;
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 enUNIX/LIUNX
tales entornos yGNU
có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 como
uc
- 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()
: Prefijov
indica el tipo de retornoviod
,Task
indicatasks.c
la definición;xQueueReceive()
: El prefijox
indica losBaseType_t
datos del tipo de retorno ,Queue
lo que indica que la funciónqueue.c
está definida en;pvTimerGetTimerID()
: El prefijopv
indica que se devuelve un puntero de tipo vacío,Timer
lo que indica que la funcióntimer.c.
está definida enprv
: El prefijoprv
indica que el alcance de la acción es el archivo actual;
FreeRTOS
La 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.
Nomenclatura de la enciclopedia joroba-Baidu ↩︎