Este artigo ou secção deverá serfundido comSistema embarcado. (desde agosto de 2023) Se discorda, discuta sobre a fusão napágina de discussão daquele artigo. |
Software embarcado ousoftware incluído ésoftware de computador, escrito para controlar máquinas ou dispositivos que não são geralmente considerada como computadores. É, normalmente, específico para um determinado hardware que executa e tem tempo e com restrições de memória.[1] Este termo é às vezes usado de forma intercambiável como firmware, apesar de firmware também pode ser aplicado a ROM com o código em um computador, em cima do qual o sistema operacional é executado, considerando que o software embarcado é normalmente o único software do dispositivo em questão.
Uma precisa e estável característica é a de que nem todas as funções do software embarcado são iniciadas/controlado através de uma interface humana, mas através de interfaces de máquina em vez disso.[2]
Os fabricantes 'embutem' o software integrado no sistema eletrônico deveículos automóveis, telefones, modems,robôs, eletrodomésticos, brinquedos, sistemas de segurança,pacemakers, televisores e set-top boxes, e relógios digitais, por exemplo.[3] Este software pode ser muito simples, tais como controles de iluminação que rodam em ummicrocontrolador de8-bits com poucoskilobytes de memória, com o nível adequado de complexidade de processamento determinada com um, Quadro de Probabilidade Aproximadamente Correta de Computação[4] (uma metodologia baseada emalgoritmos randomizados), ou pode tornar-se muito sofisticado em aplicações comoaviões,mísseis, e processo de controle de sistemas.[5]
Ao contrário do padrão computadores, geralmente, utilizar um sistema operacional, como o OS X, Windows ou GNU/Linux, software embarcado pode usar nenhum sistema operacional, ou quando eles fazem uso uma grande variedade de sistemas operacionais pode ser escolhido, normalmente umsistema operacional de tempo real. Este é executado a partir de uma operação de uma só pessoa que consiste de um ciclo e um timer, para LynxOS,VxWorks, BeRTOS, ThreadX, paraWindows CE ouLinux (com o patch de kernel). Outros incluemo OpenWrt, PikeOS,eCos, Fusão RTOS, Núcleo RTOS,RTEMS, a INTEGRIDADE, a uC/OS,QNX,FreeBSD e OSE. Código normalmente é escrito emC ouC++, mas váriaslinguagens de programação alto nível, tais comoPython eJavaScript, são agora também no uso comum, para destinomicrocontroladores esistemas embarcados.[6]Ada é usado em alguns militares e de aviação projetos.
A maioria dos consumidores está familiarizada com oaplicativo de software que fornece funcionalidade em um computador. No entanto, o software incorporado é geralmente menos visível, mas não menos complicado. Ao contrário do software aplicativo, o software incorporado possui requisitos e recursos de hardware fixos, e a adição de hardware ou software de terceiros é estritamente controlada.
Software embarcado deve incluir todos osdrivers de dispositivo no momento da fabricação, e os drivers de dispositivo são escritos para o hardware específico. O software é altamente dependente da CPU e o chip especificamente escolhido. Os engenheiros de software têm pelo menos uma passagem de conhecimento de leitura dediagramas esquemáticos, e a leitura de datasheet de dados dos componentes para determinar o uso dos registradores e do sistema de comunicação. Conversão entredecimal,hexadecimal ebinário é útil, bem como o uso de manipulação de bits.[7]
Aplicações Web são raramente usadas, apesar de arquivosXML e outros parâmetros que podem ser passados para um computador para visualização. Sistemas de arquivos com pastas estão geralmente ausentes, como são os bancos de dadosSQL.
O desenvolvimento de software requer o uso de umcompilador cruzado, que é executado em um computador, mas produz um código executável para o dispositivo de destino. A depuração exige a utilização de um in-circuitoemulador,JTAG ouSWD. Os desenvolvedores de Software têm muitas vezes acesso a todo o kernel (SO) de código fonte.
O tamanho da memória de armazenamento e memória RAM pode variar significativamente. Alguns sistemas são executados em 16 KB de Flash e 4 KB de RAM com um CPU rodando em 8 MHz, outros sistemas podem rivalizar com os computadores de hoje.[8] Estes requisitos de espaço levam mais trabalho para projetos sendo feito em C ouembedded C++, em vez de C++. Linguagens interpretadas como oBASIC (enquanto e.g. Paralaxe Hélice pode usar BASIC compilado) eJava (Java ME Embedded 8.3[9] está disponível para microcontroladoresARM Cortex-M4, Cortex-M7 e os mais antigosARM11 usado noRaspberry Pi e Intel Galileu Gn 2) normalmente não são utilizados; enquanto uma implementação da interpretado da linguagemPython 3 – MicroPython – é, no entanto, disponível expressamente para microcontrolador utilizar, e.g.32-bit ARM (como o BBCmicro:bit) e16-bitsmicrocontroladores PIC.
A comunicação entre processadores e entre um processador e de outros componentes são essenciais. Além dedireto endereçamento de memória, protocolos comuns incluemI2C,SPI,portas seriais eUSB.
Protocolos de comunicação projetado para o uso emsistemas embarcados estão disponíveis comocódigo fechado de empresas, incluindo a InterNiche Tecnologias e CMX Sistemas.Open-source protocolos tronco da uIP, lwip, e outros.