O AVR-AUTOSAR é um sistema operacional em tempo real para microcontroladores AVR com base nos padrões OSEK/VDX OS e AUTOSAR OS 4.4.
AVR-AUTOSAR implementa a classe 1 de escalabilidade do AUTOSAR OS.
A motivação para o AVR-AUTOSAR foi criar uma implementação de código aberto fácil de entender do sistema operacional automático que pode ser executado em microprocessadores amplamente disponíveis.
O projeto foi desenvolvido como parte de uma tese final na Universidade de Ciências Aplicadas Dortmund.
O projeto foi criado com o Atmel Studio 7 e o atual AVR8-GCC-Toolchain no Windows. Os arquivos de solução e projeto estão incluídos no repositório.
A configuração do sistema é feita no AppCfg.h . As macros necessárias são definidas e documentadas em include/CfgGenMacros.h . A documentação da versão atual pode ser encontrada aqui. Para gerar a documentação atual, o doxyfile fornecido pode ser usado.
O código do aplicativo é colocado no App.c
O repositório contém um aplicativo de teste para dispositivos ATMEGA1284, que foi usado durante o desenvolvimento para testar todos os recursos do sistema operacional. Pode ser usado como exemplo. Além disso, vários aplicativos são fornecidos para teste em AutosarOS/test .
O sistema operacional foi testado com os seguintes dispositivos:
Outros microprocessadores da família ATMEGA devem funcionar com o mínimo de trabalho necessário.
Durante o desenvolvimento, um sistema baseado em depurador para rastreamento foi usado para registrar o fluxo do programa.
Os pontos de rastreio definidos no Atmel Studio podem ser importados do arquivo tracing.xml . Observe que os pontos de rastreio para os ISRs provavelmente não serão carregados corretamente, pois estão definidos nas funções do usuário fora do sistema operacional.
Além disso, um ponto de rastreio de dados pode ser definido para errorInfo.id (acesso a gravar) se as informações de erro forem usadas. A mensagem de impressão a seguir pode ser usada para gerar comentários na saída de rastreamento que mostram como os serviços do sistema operacional estão sendo chamados:
# {currentTask};{isISR} called $FUNCTION
O rastro gerado deve parecer algo assim:
#version 1.0
# INVALID_TASK;0 called OS_StartOS
898158796,Core_0,0,T,Idle,0,activate
898158921,Core_0,0,T,Task1,0,activate
898159328,Core_0,0,T,Task1,0,start
# Task1;0 called Events_SetEvent
# Task1;0 called Task_TerminateTask
898167984,Core_0,0,T,Task1,0,terminate
898169140,Core_0,0,T,Idle,0,start
Os traços seguem o "melhor formato de rastreamento" para Osek e podem ser importados para o Eclipse Trace Compass.
Observe que os registros de data e hora são gerados no host, não no alvo! Isso significa que os horários absolutos não podem ser confiáveis. Portanto, esse método deve ser usado apenas para rastrear o fluxo/ordem do programa de execução.
-mrelax , que pode ser ativada automaticamente pelo Atmel Studio ao alterar o dispositivo nas configurações do projeto, deve ser desativado para a operação correta do sistema operacional.GetAlarmBase() devem ser usadas.