Enseñarle a aprender a crear archivos de proyecto de FreeRTOS

1. Preámbulo

En primer lugar, podemos ir a la descarga oficial de FreeRTOS. El enlace de descarga del paquete fuente puede ser lento. También podemos ir al enlace del sitio web de su sitio web de alojamiento de código Aquí descargué la versión v9.00.
Aquí hay un pequeño consejo : no importa lo que descargue, la versión no debe ser ni la más reciente ni demasiado antigua. La última versión es inestable y tiene menos información, y la versión anterior está desactualizada y puede carecer de algunas funciones en relación con la nueva versión.

2. Extraer archivos

Una vez completada la descarga, ingresamos a esta carpeta. Esta es también la única carpeta que necesitamos.
inserte la descripción de la imagen aquí

2.1 Carpeta de origen

En el directorio FreeRTOS/Source, hay carpetas de inclusión y algunos archivos .c, que contienen archivos de encabezado comunes y archivos C de FreeRTOS. Se aplica a varios compiladores y procesadores y es genérico. Lo que necesita ser recortado y portado es la carpeta portblle.

Carpeta portátil 2.2

Esta carpeta es el archivo relacionado con el compilador y se utilizan diferentes archivos de soporte en diferentes editores. Usamos Keil para compilar y lo encontramos cuando abrimos la carpeta. Solo hay un archivo .txt. El nombre del archivo dice See-also-the-RVDS-directory
, por lo que la carpeta que necesitamos es RVDS, y también necesitamos la carpeta MemMang. Esta carpeta es para la gestión de la memoria.
Hay 5 archivos heap bajo MemMang, cada uno con sus propias diferencias (aquí elegimos heap4.c).Las diferencias se describirán más adelante.
inserte la descripción de la imagen aquí

2.3 Carpeta de demostración

El contenido de este directorio son rutinas Deme. Podemos abrir directamente los archivos del proyecto y completar demostraciones de varias plataformas de desarrollo. Los desarrolladores pueden construir fácilmente sus propios proyectos o incluso usarlos directamente. Por supuesto, FreeRTOS también ha escrito muchas demostraciones para ST, incluidos F1, F4, F7 y otros proyectos. Esto es muy conveniente para nosotros para aprender FreeRTOS. Cuando encuentre algo que no entienda, puede consultar directamente el demostración oficial.
inserte la descripción de la imagen aquí

3. Establecer el proyecto FreeRTOS

Este es uno de mis directorios de proyectos bare metal.
inserte la descripción de la imagen aquí

3.1 Crear un nuevo directorio de FreeRTOS

Este ejemplo se basa en un proyecto completo para compilar FreeRTOS. Primero creamos una nueva carpeta en el directorio raíz de la versión completa, denominada "FreeRTOS", y creamos dos carpetas vacías en la carpeta FreeRTOS. Nombre "src" y "puerto" respectivamente, los archivos de origen principales en FreeRTOS se guardan en la carpeta src, es decir, el archivo .c, y los códigos relacionados con la administración de memoria y la arquitectura del procesador se guardan en el puerto. FreeRTOS nos proporcionó oficialmente estos códigos y puede usarlos directamente. Como dije anteriormente, FreeRTOS es software y nuestra versión de desarrollo es hardware. Debe haber un puente para conectar el software y el hardware. Estos códigos están relacionados con la arquitectura del procesador se puede llamar la capa de interfaz de hardware RTOS, se encuentran en la carpeta FreeRTOS/Source/Portable.
inserte la descripción de la imagen aquí

3.2 Migrando la carpeta src

Hemos creado la carpeta src antes, ahora abra el código fuente de FreeRTOS V9.0.0, busque
todos los 'archivos .c' en el directorio "FreeRTOSv9.0.0\FreeRTOS\Source" y cópielos en nuestra carpeta src recién creada, copie como se muestra en la figura

inserte la descripción de la imagen aquí

3.3 Migrar la carpeta del puerto

Abra el código fuente de FreeRTOS V9.0.0, busque la carpeta "MemMang" y la carpeta "RVDS" en el directorio "FreeRTOSv9.0.0\FreeRTOS\Source\portable" y cópielos en nuestra carpeta de puerto recién creada, como se muestra en la cifra
inserte la descripción de la imagen aquí

3.4 Agregar carpeta de inclusión

Abra el código fuente de FreeRTOS V9.0.0, busque la carpeta "incluir" en el directorio "FreeRTOSv9.0.0\ FreeRTOS\Source", son algunos archivos de encabezado que necesitamos para usar FreeRTOS, cópielos directamente en nuestra carpeta FreeRTOS recién creada como muestra la imagen:

inserte la descripción de la imagen aquí

3.5 Extraiga el archivo FreeRTOSConfig.h

3.5.1 Copie el archivo FreeRTOSConfig.h

Abra el código fuente de FreeRTOSv9.0.0, busque la carpeta "CORTEX_STM32F103_Keil" en la carpeta "FreeRTOSv9.0.0\FreeRTOS\Demo"
, haga doble clic para abrirlo, busque el archivo "FreeRTOSConfig.h" en su directorio raíz
y cópielo. a nuestra carpeta de usuario del proyecto, necesitamos modificar este archivo más tarde. (El blogger aquí también proporciona un archivo FreeRTOSConfig.h modificado, que se puede descargar de forma gratuita en los recursos del blogger).
Puede consultar la explicación del archivo FreeRTOSConfig.h del blog del blogger.
inserte la descripción de la imagen aquí

4. Agregue el contenido de FreeRTOS al proyecto

4.1 Guía de operación

Primero haga clic en este grupo.
inserte la descripción de la imagen aquí
Después de llegar a esta interfaz, puede agregar grupos, como se muestra en la figura.
inserte la descripción de la imagen aquí

4.2 Agregar archivos fuente

Aquí agregamos FreeRTOS/src y FreeRTOS/port correspondientes a las dos carpetas en nuestro directorio de proyectos, y luego agregamos el archivo .c correspondiente. Nota: aquí elegimos heap_4.c en el archivo MemMang para FreeRTOS/port y el puerto .c en ARM_CM3 en el archivo RVDS (porque uso el chip de la serie STM32F103).
![Insertar descripción de la imagen aquí](https://img-blog.csdnimg.cn/bb382053d9f7433b8cd0986d6fc6bdc8.png
Simplemente agregue todos los archivos .c en FreeRTOS/src.

inserte la descripción de la imagen aquí

4.3 Agregar el archivo de encabezado FreeRTOSConfig.h

Agregue el archivo FreeRTOSConfig.h al directorio del usuario (por supuesto, puede aplicar su propio archivo de proyecto y la estructura de cada proyecto puede ser diferente)
inserte la descripción de la imagen aquí

4.4 Especificar la ruta del archivo de encabezado

El código fuente de FreeRTOS se agregó en la carpeta de grupo del entorno de desarrollo. Al compilar, debe especificar la ruta del archivo de encabezado para estos archivos fuente; de ​​lo contrario, la compilación informará un error. En el código fuente de FreeRTOS, solo hay archivos de encabezado en las dos carpetas de FreeRTOS\include y FreeRTOS\port\RVDS\ARM_CM3. Solo necesita especificar las rutas de estos dos archivos de encabezado en el entorno de desarrollo. Al mismo tiempo, también copiamos el archivo de encabezado FreeRTOSConfig.h en la carpeta del usuario en el directorio raíz del proyecto, por lo que la ruta del usuario también debe agregarse al entorno de desarrollo. El proceso es el siguiente

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

5. Modifique el archivo stm32f10x_it.c

Elimine estas dos funciones de interrupción PendSV_Handler y SVC_Handler en stm32f10x_it.h . Porque estas dos funciones de interrupción se han escrito en port.c. Al mismo tiempo, agregue el siguiente código en stm32f10x_it.c y modifique la función de servicio de interrupción SysTick_Handler. Como se muestra abajo:

extern void xPortSysTickHandler(void);
void SysTick_Handler(void)
{
    
    
    
       #if (INCLUDE_xTaskGetSchedulerState  == 1 )
      if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
      {
    
    
    #endif  /* INCLUDE_xTaskGetSchedulerState */  
        xPortSysTickHandler();
    #if (INCLUDE_xTaskGetSchedulerState  == 1 )
      }
    #endif  /* INCLUDE_xTaskGetSchedulerState */
}

inserte la descripción de la imagen aquí

6. Conclusión

Todo el proyecto de construcción de FreeRTOS está aquí, y toda la estructura es relativamente clara. También hay un archivo FreeRTOSConfig.h que aún no se ha explicado. ¡Habrá un artículo dedicado en el futuro! ¡Presta más atención! ¡Gracias por tu apoyo!

Supongo que te gusta

Origin blog.csdn.net/qq_62553914/article/details/131280236
Recomendado
Clasificación