Enseñarle 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.
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.
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.
3. Establecer el proyecto FreeRTOS
Este es uno de mis directorios de proyectos bare metal.
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.
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
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
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:
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.
4. Agregue el contenido de FreeRTOS al proyecto
4.1 Guía de operación
Primero haga clic en este grupo.
Después de llegar a esta interfaz, puede agregar grupos, como se muestra en la figura.
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).
Simplemente agregue todos los archivos .c en FreeRTOS/src.
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)
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
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 */
}
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!