In diesem Beitrag möchte ich Ihnen ein Programm vorstellen, das ich für die Entwicklung von Software für Mikrocontroller nach einem Standard in der Nähe von AUTOSAR geschrieben habe.
2018 wurde ich eingeladen, bei EPAM Belarus an einem Outsourcing-Projekt zur Entwicklung von Software für Zahnstangen zu arbeiten. Ich stimmte mit großer Freude zu und ging nach Weißrussland, um dort zu leben und zu arbeiten.
Bei diesem Projekt habe ich den Softwareentwicklungsstandard in der Automobilindustrie kennengelernt - AUTOSAR .
Ein paar Worte zu AUTOSAR
Gemäß dem Standard ist die Anwendungsarchitektur in drei Ebenen unterteilt:
Anwendung;
Laufzeitumgebung (RTE);
Grundlegende Software.
Die Hauptidee des Standards besteht darin, das System in Komponenten zu unterteilen und die Verantwortungsebenen für jede der Ebenen zu definieren. Gleichzeitig versuchen sie hauptsächlich, die Anwendung von Eisen unabhängig zu machen, so dass Sie Software problemlos von einem MC auf einen anderen übertragen können. Das System ist in unabhängige Komponenten aufgeteilt, die über RTE miteinander interagieren. Auf diese Weise können Sie jede Komponente einzeln testen und mit Tests eine nahezu 100% ige Codeabdeckung erzielen.
Weitere Informationen zum Standard finden Sie hier .
Komponenten können laut Standard folgende Komponenten haben:
Ports für die Kommunikation miteinander;
Funktionen, die Ereignisse von RTE (Runnables) aufrufen;
– 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, .
Wenn das Programm jemanden interessiert, werde ich Ihnen im nächsten Artikel erklären, wie Sie Tests für Komponenten durchführen.
Fazit
Mit diesem Editor konnte ich die Architektur meiner Anwendung für STM32 visueller und flexibler gestalten. Wenn es notwendig ist, eine mathematisch geladene Komponente zu schreiben, kann ich sie jetzt problemlos in Eclipse testen und erst dann problemlos in ein Projekt in STM32 implementieren. Außerdem wurde der Datenfluss von einer Komponente zur anderen deutlich sichtbar, sodass die Ursachen von Problemen im Projekt einfach und schnell gefunden werden können, wenn sie auftreten.