Padrão de arquitetura de sistema eletrônico automotivo AUTOSAR

AUTOSAR


Índice

AUTOSAR

RTE

SWC e BSW

Implementação do código de acesso SWC

ARXML(AUTOSAR XML)

Interface

Implementação de código de interface cliente-servidor

Aplicativo AutoSAR OS


AUTOSAR (Automotive Open System Architecture), lançado oficialmente em 2003, é um padrão aberto de arquitetura de sistema eletrônico automotivo projetado para fornecer soluções padronizadas e modulares para sistemas eletrônicos automotivos . Consiste em uma série de especificações e padrões , abrangendo arquitetura de software automotivo, protocolos de comunicação, formatos de dados, interfaces de hardware, etc.

O objetivo do AUTOSAR é melhorar a reutilização, escalabilidade e interoperabilidade dos sistemas eletrônicos automotivos para reduzir os custos de desenvolvimento e manutenção e promover a inovação e o desenvolvimento de sistemas eletrônicos automotivos. Seu conceito de design é dividir o sistema eletrônico automotivo em múltiplos componentes de software independentes, que interagem através de interfaces e mecanismos de comunicação padronizados . Isto permite a interoperabilidade entre software e hardware de diferentes fornecedores e também facilita a manutenção e atualizações do sistema.

A arquitetura do AUTOSAR inclui componentes como camada de aplicação, ambiente de execução (RTE), software básico (BSW) e camada de abstração de hardware (HAL). A camada de aplicação é responsável pela implementação de funções específicas, o RTE fornece a interface entre a camada de aplicação e o BSW, o BSW fornece uma série de serviços básicos de software, como comunicação, diagnóstico, sistema operacional, etc., o HAL fornece interfaces e drivers relacionados ao hardware. .

Ao utilizar o AUTOSAR, os fabricantes de automóveis e os fornecedores podem desenvolver e integrar sistemas eletrónicos automóveis de forma mais flexível, ao mesmo tempo que conseguem responder melhor às novas exigências do mercado e aos desenvolvimentos tecnológicos. Tornou-se um padrão na indústria automotiva global e tem sido amplamente utilizado e promovido.

RTE


RTE (Run-Time Environment) é um componente importante na arquitetura AutoSAR, que fornece um ambiente de tempo de execução para gerenciar e coordenar componentes de software em sistemas eletrônicos automotivos.

As principais funções do RTE incluem:

1. Gerenciamento de comunicação: A RTE é responsável por gerenciar a comunicação entre os componentes de software . Ele fornece um conjunto de interfaces e mecanismos de comunicação padronizados, permitindo que diferentes componentes de software troquem dados e mensagens entre si.

2. Agendamento de tarefas: o RTE agenda tarefas para componentes de software de acordo com estratégias de agendamento predefinidas . Ele garante que cada componente de software seja executado de acordo com o intervalo de tempo e prioridade especificados para atender aos requisitos em tempo real do sistema.

3. Acionamento de eventos: o RTE pode acionar a execução de componentes de software de acordo com eventos específicos. Por exemplo, quando um determinado sensor detecta uma condição específica, o RTE pode acionar os componentes de software correspondentes para executar as ações correspondentes.

4. Gerenciamento de dados: A RTE é responsável por gerenciar a troca de dados entre componentes de software . Ele fornece um conjunto de interface de dados padronizada e mecanismo de gerenciamento de dados para garantir a transmissão e compartilhamento corretos de dados.

5. Gerenciamento de erros: o RTE pode monitorar e tratar erros em componentes de software. Ele fornece um conjunto de mecanismos padronizados de tratamento de erros, incluindo detecção de erros, tratamento de erros e notificação de erros.

O RTE desempenha um papel fundamental na arquitetura AutoSAR, que fornece um ambiente de tempo de execução unificado para que diferentes componentes de software possam trabalhar juntos para realizar funções complexas de sistemas eletrônicos automotivos. Ao mesmo tempo, o RTE também fornece algumas interfaces e mecanismos padronizados, o que simplifica o processo de desenvolvimento e integração de software e melhora a capacidade de manutenção e escalabilidade do sistema.

SWC e BSW


No AutoSAR (Automotive Open System Architecture), SWC (Software Component) e BSW (Basic Software) são dois conceitos importantes.

SWC (Componente de Software) refere-se ao componente de software do sistema eletrônico automotivo , que é a menor unidade funcional da arquitetura AutoSAR. O SWC pode ser um módulo funcional independente ou uma combinação de vários módulos funcionais. Cada SWC possui suas próprias interfaces de entrada e saída através das quais se comunica e troca dados com outros SWCs. O SWC pode conter lógica de aplicação, algoritmos, máquinas de estado, etc., para implementar funções específicas, como controle do motor, sistema de freios, eletrônica corporal, etc. O SWC pode ser executado em diferentes ECUs (Unidades de Controle Eletrônico) e realizar troca de dados e trabalho colaborativo através do mecanismo de comunicação do AutoSAR.

BSW (Software Básico) refere-se ao software básico da arquitetura AutoSAR , que fornece uma série de serviços e funções para apoiar a operação e comunicação do SWC. O BSW inclui o driver subjacente, sistema operacional, pilha de protocolos de comunicação, serviços de diagnóstico, gerenciamento de armazenamento, etc. A principal função do BSW é fornecer uma interface unificada e serviços padronizados, para que diferentes SWCs possam funcionar em diferentes ECUs e possam realizar comunicação confiável e trabalho colaborativo. O BSW também fornece algumas funções comuns, como gerenciamento de erros, gerenciamento de memória, gerenciamento de relógio, etc., para melhorar a confiabilidade e o desempenho do sistema.

Resumindo, SWC é um módulo funcional da arquitetura AutoSAR, utilizado para atingir funções específicas, e BSW é o software básico que fornece suporte e serviços, utilizado para apoiar a operação e comunicação do SWC. Juntos, SWC e BSW constituem o sistema de software na arquitetura AutoSAR, que realiza o desenvolvimento de sistemas eletrônicos automotivos modulares, reutilizáveis ​​e escaláveis.

Implementação do código de acesso SWC


No AutoSAR, a comunicação entre SWCs pode ser feita de duas maneiras: acionada por evento e acionada por dados . O acionamento de eventos significa que quando um evento ocorre, outros SWCs são acionados para realizar as operações correspondentes. O disparo de dados refere-se à transmissão de dados através da interface quando um SWC precisa adquirir ou modificar os dados de outro SWC.

A seguir está um exemplo que mostra o uso de métodos de acesso SWC:

// SWC1.h
typedef struct {
    uint8_t data;
} SWC1_DataType;

void SWC1_Init(void);
void SWC1_Process(void);
void SWC1_SetData(uint8_t data);
SWC1_DataType SWC1_GetData(void);
// SWC1.c
static SWC1_DataType swc1_data;

void SWC1_Init(void) {
    // 初始化操作
}

void SWC1_Process(void) {
    // 处理操作
}

void SWC1_SetData(uint8_t data) {
    swc1_data.data = data;
}

SWC1_DataType SWC1_GetData(void) {
    return swc1_data;
}
// SWC2.h
typedef struct {
    uint8_t data;
} SWC2_DataType;

void SWC2_Init(void);
void SWC2_Process(void);
void SWC2_SetData(uint8_t data);
SWC2_DataType SWC2_GetData(void);
// SWC2.c
static SWC2_DataType swc2_data;

void SWC2_Init(void) {
    // 初始化操作
}

void SWC2_Process(void) {
    // 处理操作
}

void SWC2_SetData(uint8_t data) {
    swc2_data.data = data;
}

SWC2_DataType SWC2_GetData(void) {
    return swc2_data;
}
// SWC3.h
typedef struct {
    uint8_t data;
} SWC3_DataType;

void SWC3_Init(void);
void SWC3_Process(void);
void SWC3_SetData(uint8_t data);
SWC3_DataType SWC3_GetData(void);
// SWC3.c
static SWC3_DataType swc3_data;

void SWC3_Init(void) {
    // 初始化操作
}

void SWC3_Process(void) {
    // 处理操作
}

void SWC3_SetData(uint8_t data) {
    swc3_data.data = data;
}

SWC3_DataType SWC3_GetData(void) {
    return swc3_data;
}
// Main.c
#include "SWC1.h"
#include "SWC2.h"
#include "SWC3.h"

int main(void) {
    SWC1_Init();
    SWC2_Init();
    SWC3_Init();

    while (1) {
        SWC1_Process();
        SWC2_Process();
        SWC3_Process();

        // SWC2获取SWC1的数据
        SWC1_DataType swc1_data = SWC1_GetData();
        SWC2_SetData(swc1_data.data);

        // SWC3获取SWC2的数据
        SWC2_DataType swc2_data = SWC2_GetData();
        SWC3_SetData(swc2_data.data);
    }

    return 0;
}

No exemplo acima, existem três SWCs: SWC1, SWC2 e SWC3. Eles definem respectivamente seus próprios tipos de dados e funções de operação. Na função principal, todos os SWCs são inicializados primeiro e, em seguida, entram em um loop para chamar continuamente as funções de processamento de cada SWC. No loop, o SWC2 obtém dados chamando a interface do SWC1 e transfere os dados para o SWC3.

Este exemplo mostra a forma de transmissão e acesso de dados entre SWCs através de interfaces. Ao definir tipos de dados e funções de interface apropriados, diferentes SWCs podem facilmente compartilhar e interagir entre si para realizar as funções do sistema eletrônico do veículo.

ARXML(AUTOSAR XML)


O arquivo ARXML (AUTOSAR XML) é um formato de arquivo XML usado no padrão AutoSAR (AUTomotive Open System Architecture) . AutoSAR é um padrão aberto de arquitetura de sistema eletrônico automotivo projetado para fornecer uma abordagem unificada para desenvolver, implantar e gerenciar sistemas eletrônicos automotivos.

Os arquivos ARXML contêm várias informações que descrevem sistemas eletrônicos automotivos , incluindo componentes de software, configuração de ECU (Unidade de Controle Eletrônico), definições de comunicação e sinal, topologia de rede, diagnóstico e gerenciamento de falhas, etc. É um dos documentos centrais do padrão AutoSAR e é usado para descrever a estrutura e o comportamento de todo o sistema eletrônico automotivo.

Os arquivos ARXML podem ser gerados por ferramentas AutoSAR ou escritos manualmente . Utiliza o formato XML, que possui boa legibilidade e extensibilidade. As informações no arquivo ARXML podem ser usadas por ferramentas e plataformas AutoSAR para geração automática de código, configuração de ECU, simulação e teste de sistema, etc.

A estrutura e o conteúdo do arquivo ARXML variam de acordo com as diferentes versões e módulos do padrão AutoSAR. Normalmente, um arquivo ARXML contém as seguintes partes principais:

1. Descrição do módulo: Descreve cada módulo do sistema eletrônico automotivo, incluindo componentes de software, ECU, sensores, atuadores, etc.

2. Descrição da comunicação: define os métodos e protocolos de comunicação entre os módulos, incluindo CAN (Controller Area Network), LIN (Local Interconnect Network), FlexRay, etc.

3. Descrição do sinal e da porta: define a transmissão do sinal e a interface entre os módulos, incluindo o nome do sinal, tipo de dados, unidade, etc.

4. Descrição da rede: Descreve a topologia de rede de todo o sistema eletrônico automotivo, incluindo a relação de conexão entre ECUs, topologia de barramento, etc.

5. Descrição do diagnóstico: define informações relacionadas ao diagnóstico e gerenciamento de falhas, incluindo códigos de falha, serviços de diagnóstico, etc.

Os arquivos ARXML desempenham um papel importante no desenvolvimento do AutoSAR, pois fornecem um padrão unificado para a descrição de sistemas eletrônicos automotivos, permitindo integração e interação perfeitas de diferentes ferramentas e plataformas. Ao usar arquivos ARXML, os desenvolvedores podem desenvolver e integrar sistemas eletrônicos automotivos com mais eficiência.

Interface


Interface (Interface) é uma parte importante da comunicação e interação entre módulos. Esses tipos de interface são amplamente utilizados no AutoSAR para realizar comunicação e cooperação entre módulos, de modo a construir um sistema eletrônico automotivo altamente confiável e escalável. O AutoSAR define diferentes tipos de interfaces, incluindo as seguintes:

1. Interface cliente-servidor: utilizada para comunicação de solicitação e resposta entre módulos. O módulo cliente envia solicitações ao módulo servidor, e o módulo servidor executa as operações correspondentes e retorna resultados. Essa interface é normalmente usada para controle e transferência de dados.

2. Interface Remetente-Receptor: utilizada para transmissão de dados entre módulos. O módulo emissor envia dados para o módulo receptor e o módulo receptor recebe e processa os dados. Esta interface é frequentemente usada para troca de dados entre sensores e atuadores.

3. Interface de parâmetros: usada para passar parâmetros e informações de configuração. O módulo pode obter e definir parâmetros de configuração através da interface de parâmetros para configuração e ajuste adequados.

4. Interface de troca de modo: usada para troca de modo entre módulos. O módulo pode notificar outros módulos sobre o modo de trabalho atual através da interface de comutação de modo e executar as operações correspondentes conforme necessário.

5. Interface de gatilho: usada para disparar eventos e operações. Os módulos podem enviar sinais de disparo através da interface de disparo para que outros módulos possam realizar operações correspondentes.

Implementação de código de interface cliente-servidor



A interface Cliente-Servidor consiste em duas funções: Cliente (cliente) e Servidor (servidor). O cliente envia uma solicitação ao servidor e o servidor recebe a solicitação e fornece os serviços ou dados correspondentes. Abaixo está um exemplo de código simples que mostra a implementação da interface Cliente-Servidor.

/* Client模块 */
#include <stdio.h>
#include "ClientServerInterface.h"

void Client_SendRequest(void)
{
    uint8_t request = 0x01;  // 请求数据
    uint8_t response = 0;    // 响应数据

    /* 调用Client-Server接口发送请求 */
    Server_ReceiveRequest(&request);

    /* 等待Server响应 */
    while (response == 0)
    {
        /* 调用Client-Server接口获取响应 */
        Server_GetResponse(&response);
    }

    /* 处理响应数据 */
    printf("Received response: %d\n", response);
}
/* Server模块 */
#include <stdio.h>
#include "ClientServerInterface.h"

uint8_t serverData = 0;

void Server_ReceiveRequest(uint8_t* request)
{
    /* 接收到Client的请求 */
    printf("Received request: %d\n", *request);

    /* 处理请求并准备响应数据 */
    serverData = *request + 1;
}

void Server_GetResponse(uint8_t* response)
{
    /* 返回响应数据给Client */
    *response = serverData;
    printf("Sent response: %d\n", *response);
}

No código acima, o módulo Cliente envia os dados da solicitação chamando a função `Server_ReceiveRequest` da interface Cliente-Servidor, e obtém os dados de resposta chamando `Server_GetResponse`. Após receber a solicitação, o módulo Servidor processa a solicitação e prepara os dados de resposta, e então retorna os dados de resposta ao Cliente chamando `Server_GetResponse`.

Este exemplo mostra a implementação básica da interface Cliente-Servidor, e pode haver troca de dados e lógica de processamento de serviços mais complexas em aplicativos reais. Através da interface Cliente-Servidor, diferentes módulos podem realizar comunicação e troca de dados eficientes, melhorando a escalabilidade e flexibilidade do sistema.

Aplicativo AutoSAR OS


O aplicativo AutoSAR OS é um aplicativo de sistema operacional baseado no padrão AutoSAR. É utilizado principalmente em sistemas eletrônicos automotivos e é responsável por gerenciar e coordenar a operação de diversos componentes de software. É responsável por tarefas como gerenciamento de tarefas, gerenciamento de comunicação, gerenciamento de recursos, gerenciamento de interrupções e gerenciamento de erros para garantir a operação normal e a estabilidade do sistema.

A seguir explicamos cada tarefa do aplicativo AutoSAR OS:

1. Gerenciamento de tarefas: o aplicativo AutoSAR OS é responsável por gerenciar e agendar a execução de diversas tarefas. Ele determina a sequência de execução da tarefa e a alocação do intervalo de tempo de acordo com a prioridade da tarefa e a estratégia de agendamento, e garante que as tarefas no sistema sejam executadas de acordo com a ordem e o horário agendados.

2. Gerenciamento de comunicação: o aplicativo AutoSAR OS fornece um mecanismo de comunicação entre tarefas, permitindo a transmissão e compartilhamento de dados entre diferentes tarefas. Implementa troca de dados e sincronização entre tarefas por meio de mecanismos como filas de mensagens, semáforos e eventos.

3. Gerenciamento de recursos: o aplicativo AutoSAR OS é responsável por gerenciar vários recursos do sistema, incluindo processadores, memória, dispositivos IO, etc. Através do mecanismo de alocação e liberação de recursos, garante que cada tarefa possa acessar e utilizar os recursos do sistema normalmente, evitando conflitos e desperdícios de recursos.

4. Gerenciamento de interrupções: o aplicativo AutoSAR OS lida com vários eventos de interrupção no sistema. É responsável pela resposta e processamento de interrupções, garantindo que os eventos de interrupção possam ser processados ​​em tempo hábil sem afetar a execução normal de outras tarefas.

5. Gerenciamento de erros: o aplicativo AutoSAR OS monitora erros e situações anormais no sistema e toma as medidas correspondentes para lidar com eles. Ele fornece mecanismos para detecção de erros, tratamento de erros e recuperação de erros para garantir a confiabilidade e estabilidade do sistema.

Acho que você gosta

Origin blog.csdn.net/qq_50942093/article/details/131563212
Recomendado
Clasificación