Dans cet article, je souhaite partager avec vous un programme que j'ai écrit pour développer des logiciels pour microcontrôleurs selon un standard proche d'AUTOSAR.
En 2018, j'ai été invité à travailler chez EPAM Biélorussie sur un projet d'externalisation pour développer un logiciel pour crémaillères de direction. J'ai accepté avec grand plaisir et je suis allé vivre et travailler en Biélorussie.
Sur ce projet, je me suis familiarisé avec le standard de développement logiciel dans l'industrie automobile - AUTOSAR .
Quelques mots sur AUTOSAR
Selon la norme, l'architecture de l'application est divisée en 3 niveaux:
Application;
Environnement d'exécution (RTE);
Logiciel de base.
L'idée principale de la norme est de diviser le système en composants, ainsi que de définir les niveaux de responsabilité pour chacun des niveaux. Dans le même temps, ils essaient principalement de rendre l'application indépendante du fer, afin que vous puissiez transférer sans douleur des logiciels d'un MC à un autre. Le système est divisé en composants indépendants et ils interagissent les uns avec les autres à l'aide de RTE. Cela vous permet de tester chaque composant séparément et d'atteindre une couverture de code de presque 100% avec des tests.
Vous pouvez en savoir plus sur la norme ici .
Selon la norme, les composants peuvent avoir les composants suivants:
Ports pour communiquer entre eux;
Fonctions appelées sur des événements de RTE (exécutables);
– 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 le programme intéresse quelqu'un, dans le prochain article je vous dirai comment faire des tests pour les composants.
Conclusion
Cet éditeur m'a permis de rendre l'architecture de mon application pour STM32 plus visuelle et flexible. S'il est nécessaire d'écrire un composant chargé mathématiquement, je peux maintenant le tester sans douleur dans Eclipse et seulement ensuite l'implémenter facilement dans un projet dans STM32. De plus, le flux de données d'un composant à un autre est devenu clairement visible, ce qui permet de trouver facilement et rapidement les sources des problèmes dans le projet s'ils surviennent.
Lien vers l'Ă©diteur AUTOSAR Gui.