Neste post quero compartilhar com vocês um programa que escrevi para desenvolver software para microcontroladores de acordo com um padrão próximo ao AUTOSAR.
Em 2018, fui convidado a trabalhar na EPAM Belarus em um projeto de terceirização para desenvolver software para leme. Concordei com grande prazer e fui morar e trabalhar na Bielo-Rússia.
Neste projeto, conheci o padrão de desenvolvimento de software na indústria automotiva - AUTOSAR .
Algumas palavras sobre AUTOSAR
De acordo com o padrão, a arquitetura do aplicativo é dividida em 3 níveis:
Inscrição;
Ambiente de tempo de execução (RTE);
Software básico.
A ideia principal da norma é dividir o sistema em componentes, bem como definir os níveis de responsabilidade para cada um dos níveis. Ao mesmo tempo, eles tentam principalmente tornar o aplicativo independente do ferro, para que você possa transferir o software sem dor de um MC para outro. O sistema é dividido em componentes independentes e eles interagem entre si usando o RTE. Isso permite que você teste cada componente separadamente e alcance quase 100% de cobertura de código com testes.
Você pode ler mais sobre o padrão aqui .
De acordo com a norma, os componentes podem ter os seguintes componentes:
Portas para comunicação entre si;
Funções chamadas em eventos de RTE (runnables);
– 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, .
Se o programa interessar a alguém, no próximo artigo contarei como fazer testes para componentes.
Conclusão
Este editor me permitiu tornar a arquitetura do meu aplicativo STM32 mais visual e flexível. Se for necessário escrever qualquer componente carregado matematicamente, agora posso testá-lo sem dor no Eclipse e só então implementá-lo facilmente em um projeto no STM32. Além disso, o fluxo de dados de um componente para outro tornou-se claramente visível, o que torna mais fácil e rápido encontrar as fontes de problemas no projeto, caso ocorram.
Link para o AUTOSAR Gui Editor.