En este post quiero compartir con ustedes un programa que escribí para desarrollar software para microcontroladores según un estándar cercano a AUTOSAR.
En 2018, me invitaron a trabajar en EPAM Bielorrusia en un proyecto de subcontratación para desarrollar software para bastidores de dirección. Acepté con gran placer y me fui a vivir y trabajar a Bielorrusia.
En este proyecto, me familiaricé con el estándar de desarrollo de software en la industria automotriz: AUTOSAR .
Algunas palabras sobre AUTOSAR
Según el estándar, la arquitectura de la aplicación se divide en 3 niveles:
Solicitud;
Entorno de tiempo de ejecución (RTE);
Software básico.
La idea principal del estándar es dividir el sistema en componentes, así como definir los niveles de responsabilidad para cada uno de los niveles. Al mismo tiempo, intentan principalmente hacer que la aplicación sea independiente del hierro, para que pueda transferir software sin problemas de un MC a otro. El sistema se divide en componentes independientes e interactúan entre sí mediante RTE. Esto le permite probar cada componente por separado y lograr una cobertura de código de casi el 100% con las pruebas.
Puede leer más sobre el estándar aquí .
Según la norma, los componentes pueden tener los siguientes componentes:
Puertos para comunicarse entre sí;
Funciones invocadas en eventos de RTE (ejecutables);
– Calibration Data (CData);
– Per Instance Memory (PIM);
runnables – Inter Runnable Variable (IRV).
runnables CData, PIM, IRV RTE.
. , , . : sender-receiver, client-server.
Sender – ;
Receiver – ;
Server – ;
Client – .
SWC1 SWC2, SWC1.
AUTOSAR GUI Editor
, , . . , , arxml. :
;
client-server sender-receiver ;
. ;
(struct), ;
;
, , write read , server ;
(Multiple instantiation);
PIM CData , PIM CData;
runnable , ;
runnables ;
RTE , ;
;
test environment ;
runnables;
.
:
, Main .
- ;
FreeRTOS, , , , FreeRTOS . git .
, Main. , , .
, , insert.
, , .
, definition, , , definition (drag and drop). , . , , Multiple instantiation. runnables, , PIM CData.
, , , defenition , .
init values PIM CData Component properties .
, . Insert->Connection , . , , . , , .
,
-
-
, , .
.
Runnables management, System-> Runnables order. , , runnables .
Stack size in bytes . , ( git ) , RTOS .
RTE
RTE , . System->Check errors.
, RTE Project Settings. (Project->Settings…). , .
, , .
, , Project->Generate RTE RTE . , RTE RteSkeleton RTE.
STM32CubeIDE
STM32CubeIDE, , , runnables, Data .
STM32CubeIDE , .. . , , :
Components
, , .
Includes include , RTE.
4. Source Location Components RTE
5. main.c :
#include "Rte_Task_Scheduler.h"
.
6. stm32f4xx_it.c /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ :
#include "Rte_Task_Scheduler.h"
SysTick_Handler.
7. .
, AGE , – RTE, .
Si alguien está interesado en el programa, en el próximo artículo te diré cómo hacer pruebas para componentes.
Conclusión
Este editor me permitió hacer la arquitectura de mi aplicación para STM32 más visual y flexible. Si es necesario escribir cualquier componente cargado matemáticamente, ahora puedo probarlo sin dolor en Eclipse y solo entonces implementarlo fácilmente en un proyecto en STM32. Además, el flujo de datos de un componente a otro se hizo claramente visible, lo que hace que sea fácil y rápido encontrar las fuentes de los problemas en el proyecto si surgen.