A Siemens oferece os dois software embarcado automotivo e engenharia de software embarcada soluções. A Siemens interrompeu a oferta de software incorporado independente para SoCs com a aposentadoria, em novembro de 2023, dos produtos Nucleus, Nucleus Hypervisor, Nucleus ReadyStart, Sokol Flex Linux, Sokol Omni Linux e Sourcery CodeBench (incluindo complementos associados). Os contratos de suporte existentes para esses produtos ainda estão sendo honrados. Entre em contato com a Siemens Centro de suporte para obter mais informações.
Quais são os diferentes tipos de software embarcado e suas finalidades?
- Sistema operacional — Um sistema operacional (SO), em seu sentido mais geral, é um software que permite ao usuário executar outros aplicativos em um dispositivo de computação. O sistema operacional gerencia os recursos de hardware de um processador, incluindo dispositivos de entrada, como teclado e mouse, dispositivos de saída, como telas ou impressoras, conexões de rede e dispositivos de armazenamento, como discos rígidos e memória. O sistema operacional também fornece serviços para facilitar a execução e o gerenciamento eficientes e as alocações de memória para programas de aplicativos de software.
- Firmware — Firmware é um tipo de software escrito diretamente para uma peça de hardware. Ele opera sem passar por APIs, sistema operacional ou drivers de dispositivo, fornecendo as instruções e orientações necessárias para se comunicar com outros dispositivos ou realizar tarefas e funções básicas conforme o esperado.
- Middleware — O middleware é uma camada de software situada entre aplicativos e sistemas operacionais. O middleware é frequentemente usado em sistemas distribuídos, onde simplifica o desenvolvimento de software, fornecendo o seguinte:
- Escondendo as complexidades dos aplicativos distribuídos
- Mascarando a heterogeneidade de hardware, sistemas operacionais e protocolos
- Fornecendo interfaces uniformes e de alto nível usadas para criar aplicativos interoperáveis, reutilizáveis e portáteis.
- Fornecendo um conjunto de serviços comuns que minimiza a duplicação de esforços e aprimora a colaboração entre aplicativos
- Aplicativo — O usuário final desenvolve o aplicativo de software final que é executado no sistema operacional, usa ou interage com o middleware e o firmware e é o foco principal da função de destino dos sistemas embarcados. Cada aplicativo final é exclusivo, enquanto os sistemas operacionais e o firmware podem ser idênticos de dispositivo para dispositivo.
Software embarcado versus sistemas embarcados
Os componentes de hardware em um dispositivo que executa software incorporado são chamados de “sistema embarcado”. Alguns exemplos de componentes de hardware usados em sistemas embarcados são circuitos de alimentação, unidades centrais de processamento, dispositivos de memória flash, temporizadores e portas de comunicação serial. Durante as fases iniciais de design de um dispositivo, o hardware que formará o sistema embarcado — e sua configuração dentro do dispositivo — é decidido. Em seguida, o software embarcado é desenvolvido do zero para ser executado exclusivamente nesse hardware nessa configuração precisa. Isso torna o design de software embarcado um campo especializado que exige profundo conhecimento das capacidades de hardware e da programação de computadores.
Exemplos de funções incorporadas baseadas em software
Quase todos os dispositivos com placas de circuito e chips de computador têm esses componentes organizados em um sistema de software incorporado. Como resultado, os sistemas de software embarcados são onipresentes na vida cotidiana e são encontrados em toda a tecnologia de consumo, industrial, automotiva, aeroespacial, médica, comercial, de telecomunicações e militar.
Exemplos comuns de recursos incorporados baseados em software incluem:
- Sistemas de processamento de imagem encontrados em equipamentos de imagem médica
- Sistemas de controle fly-by-wire encontrados em aeronaves
- Sistemas de detecção de movimento em câmeras de segurança
- Sistemas de controle de tráfego encontrados em semáforos
- Sistemas de temporização e automação encontrados em dispositivos domésticos inteligentes
Quais são os diferentes tipos de sistemas embarcados?
Quando baseados em requisitos funcionais e de desempenho, existem cinco classes principais de sistemas embarcados:
- Os sistemas embarcados em tempo real concluem as tarefas de maneira determinística e repetível, o que é afetado pela arquitetura e pelo agendamento subjacentes dos sistemas operacionais, bem como pelo desempenho dos threads, pela ramificação e pela latência de interrupção. Os sistemas embarcados de uso geral não contêm requisitos em tempo real e podem gerenciar interrupções ou ramificações sem depender de um tempo de conclusão. Monitores gráficos e gerenciamento de teclado e mouse são bons exemplos de sistemas gerais.
- Sistemas embarcados autônomos podem concluir tarefas sem um sistema host ou recursos de processamento externos. Eles podem gerar ou receber dados de dispositivos conectados, mas não dependem deles para concluir suas tarefas.
- Sistemas embarcados autônomos podem concluir suas tarefas sem um sistema host ou recursos externos de processamento. Eles podem gerar ou receber dados de dispositivos conectados, mas não dependem deles para concluir suas tarefas.
- Os sistemas embarcados em rede dependem de uma rede conectada para realizar as tarefas atribuídas.
- Com base na complexidade da arquitetura de hardware do sistema, existem três tipos principais de sistemas embarcados: Os sistemas embarcados em rede dependem de uma rede conectada para realizar tarefas atribuídas.
Como os mercados finais afetam os sistemas embarcados
Os requisitos e componentes do sistema embarcado serão diferentes de acordo com as demandas do mercado-alvo. Alguns exemplos incluem:
- Consumidor — Em aplicações como bens de consumo, como lavadoras, dispositivos vestíveis e telefones celulares, os sistemas embarcados enfatizam o tamanho reduzido do
- Sistema em chip, baixo consumo de energia ou operação com bateria e interfaces gráficas. Nesses aplicativos, os sistemas operacionais configuráveis e a capacidade de desativar “domínios” não operacionais do design são valorizados.
- Rede — Aplicativos que permitem conectividade, comunicação, operações e gerenciamento de uma rede corporativa. Ele fornece o caminho de comunicação e os serviços entre usuários, processos, aplicativos, serviços e redes externas/internet. Os aplicativos de rede incorporados se concentram na velocidade de resposta, no processamento de pacotes e nos caminhos de hardware periférico.
- Industrial — Para aplicações como gerenciamento de chão de fábrica, motores e moinhos de vento, a ênfase tende a proteger a conectividade em nuvem e a operação determinística em “tempo real” e pode se concentrar fortemente no middleware.
- Médico, Automotivo e Aeroespacial — Essas indústrias precisam de sistemas críticos de segurança mistos, em que partes do projeto sejam isoladas umas das outras para garantir que apenas os dados necessários entrem ou saiam do sistema (segurança), sem causar danos ao usuário final (segurança). Exemplos são sistemas de direção autônoma em automóveis e dispositivos médicos. Esses sistemas embarcados podem apresentar uma combinação de sistemas operacionais de código aberto (Linux) e sistemas operacionais determinísticos em tempo real (RTOS) e utilizar fortemente middleware comprovado.
Por que o software embarcado automotivo é diferente?
Na eletrônica automotiva, interações complexas em tempo real ocorrem em vários sistemas embarcados em que cada controle funciona, como frenagem, direção, suspensão, trem de força etc. A caixa física que contém cada sistema embarcado é chamada de unidade de controle eletrônico (ECU). Cada ECU e seu software incorporado fazem parte de uma arquitetura elétrica complexa conhecida como sistema distribuído.
Ao se comunicarem entre si, as ECUs que compõem o sistema distribuído de um veículo podem executar uma variedade de funções, como frenagem automática de emergência, controle de cruzeiro adaptativo, controle de estabilidade, faróis adaptáveis e muito mais. Uma única função pode precisar de interações em 20 ou mais aplicativos de software incorporados espalhados por várias ECUs conectadas por vários protocolos de rede. Algoritmos de controle complexos implantados com o software incorporado garantem o tempo adequado das funções, as entradas e saídas necessárias e a segurança dos dados.
Exemplos comuns de recursos baseados em aplicativos de software automotivo incluem:
- Recursos do ADAS (Advanced Driver Assist Systems), como controle de cruzeiro adaptativo, frenagem automática de emergência, assistência de manutenção de faixa, assistência de tráfego e avisos de saída de faixa
- Gerenciamento de bateria
- Compensação de torque
- Controle da taxa de injeção de combustível
Pilha de software ECU
A Unidade de Controle Eletrônico ou ECU é composta por uma unidade de computação principal com hardware em nível de chip e uma pilha de software incorporado. No entanto, há uma tendência crescente entre os fabricantes automotivos de projetar ECUs com circuitos integrados complexos que contêm vários núcleos de computação em um único chip — o que é conhecido como Sistema em um Chip (SoC). Esses SoCs podem hospedar uma infinidade de abstrações de ECU para consolidar o hardware. A pilha de software para uma ECU normalmente inclui uma variedade de soluções, desde firmware de baixo nível até aplicativos de software incorporados de alto nível.
Pilha de ECU | Descrição |
Aplicativo de software incorporado | Algoritmos de controle, processamento, serviços |
Estrutura do aplicativo | Estruturas de segurança e proteção |
Ambiente operacional | AUTOSAR classic, AUTOSAR Adaptive, canais de entrada/saída |
Virtualizações incorporadas | Sistema operacional em tempo real, abstrações de ECU |
Firmware | Carregadores de inicialização, armazenamento seguro, segmentação segura |
Hardware | Dispositivos baseados em silício, microcontroladores, placas de camada única ou múltipla |