minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Rede embarcada é um sistema de rede usado para conectar vários sistemas embarcados para que eles possam transferir informações entre si e compartilhar recursos. Os sistemas embarcados usam diferentes tecnologias de conexão em diferentes situações, como redes de informação doméstica em salas familiares, barramentos de campo na área de automação industrial e redes de comunicação móvel em sistemas embarcados, como equipamentos de informação móvel. usado para conectar sistemas embarcados.
Fieldbus é uma tecnologia de controle de computador desenvolvida em meados da década de 1980 após sistemas de controle de instrumentos analógicos, sistemas de controle digital centralizados e sistemas de controle distribuído. É também um dos pontos quentes no desenvolvimento de tecnologia na área de controle de automação. frequentemente chamada de rede local de computadores no campo da automação industrial.
Fieldbus é uma rede que interliga dispositivos de campo como sensores digitais, conversores, instrumentos industriais e atuadores de controle com unidades de controle de processos industriais e estações operacionais de campo. Possui características de digitalização total, descentralização, transmissão bidirecional e multifilial. É o produto do desenvolvimento da rede de controle industrial em nível de campo.
Fieldbus é uma rede de controle subjacente de baixa largura de banda localizada na parte inferior do controle de produção e das estruturas de rede, por isso também é chamada de rede subjacente (Infranet). É usado principalmente em locais de produção para obter comunicação digital bidirecional, serial e multinó entre equipamentos de medição e controle.
O Sistema de Controle de Campo (FCS) é um sistema de controle que utiliza um barramento de campo para conectar vários controladores e equipamentos de instrumentos. Este sistema de controle descentraliza completamente as funções de controle para o local, reduzindo custos de instalação e manutenção. Na verdade, o FCS é um sistema de controle distribuído aberto, interoperável e completamente descentralizado.
O sistema de controle de campo incorporado incorpora um microprocessador dedicado em um instrumento tradicional de medição e controle, permitindo que ele tenha recursos de computação digital e comunicação digital. Ele usa pares trançados, linhas de energia ou fibras ópticas como barramento para conectar vários instrumentos de medição e controle em uma rede. De acordo com protocolos de comunicação padrão, ele conecta vários equipamentos computadorizados de medição e controle localizados no local e entre instrumentos no local e monitoramento remoto. A transmissão de dados e a troca de informações são realizadas entre computadores, formando diversos sistemas de controle automático adequados às necessidades reais. Resumindo, o sistema de controle fieldbus transforma dispositivos individuais de medição e controle distribuídos em nós de rede, usando o fieldbus como um link para tornar esses dispositivos distribuídos um sistema de rede que pode se comunicar entre si e concluir tarefas de controle automático em conjunto. Com a ajuda da tecnologia fieldbus, o tradicional equipamento de controle distribuído único tornou-se um todo que se comunica entre si e trabalha de forma colaborativa.
A rede de informações domésticas é uma rede local que conecta computadores pessoais, eletrodomésticos, água, eletricidade, medidores de gás, equipamentos de iluminação, equipamentos de rede e equipamentos de segurança dentro de casa. Sua principal função é controlar centralmente os dispositivos mencionados acima e conectá-los à Internet para compartilhar recursos e serviços de rede. Além disso, a rede de informação residencial também pode ser estendida a toda a casa ou mesmo a toda a comunidade, tornando-se a base de comunidades residenciais inteligentes e sociedades inteligentes. No sistema de rede de informação residencial, todos os dispositivos domésticos são inteligentes, incluindo eletrodomésticos, água, eletricidade, medidores de gás e equipamentos de iluminação. Eles podem se comunicar entre si e acessar a Internet através do gateway doméstico. A realização da rede de informações domésticas proporciona às pessoas um ambiente doméstico mais seguro, conveniente e confortável. Por exemplo, quando o proprietário sai, a porta será fechada e trancada automaticamente, o sistema de monitoramento será ligado automaticamente e o proprietário será notificado automaticamente sobre qualquer anormalidade em casa. Vários dispositivos na casa podem ser controlados a qualquer momento. a qualquer hora e em qualquer lugar, e os dados do instrumento podem ser carregados automaticamente.
A rede de informação familiar precisa resolver dois problemas básicos:
(1) Como conectar eletrodomésticos, água, eletricidade, medidores de gás, equipamentos de iluminação, etc.
(2) Como realizar a interoperabilidade entre esses dispositivos conectados, ou seja, os dispositivos na rede de informações domésticas podem solicitar serviços automaticamente quando necessário, e os dispositivos relacionados podem fornecer serviços ou aceitar solicitações e processá-las. A rede de informação residencial pode adotar diferentes estruturas topológicas, como tipo de barramento, estrutura em estrela, etc. A rede de informações domésticas pode ser dividida em várias sub-redes de controle e sub-redes de dados. A sub-rede de controle é semelhante a um barramento de campo. É uma rede com baixa largura de banda e é usada principalmente para enviar e receber informações de controle. A sub-rede de dados possui requisitos de largura de banda mais elevados e os dispositivos conectados a ela precisam transmitir uma grande quantidade de informações de dados.
Nos últimos anos, com o rápido desenvolvimento das comunicações por telefonia móvel e a rápida popularização dos computadores pessoais, uma variedade de computadores portáteis, como laptops, notebooks, computadores portáteis, etc., aumentaram rapidamente a comunicação de dados entre computadores fixos. não atende mais às necessidades. As pessoas esperam transmitir e trocar informações de dados a qualquer hora e em qualquer lugar, então os meios de transmissão de comunicação de dados começaram a se expandir de com fio para sem fio, e surgiu a comunicação de dados móveis sem fio. A rede de comunicação de dados sem fio é um sistema de rede que transmite dados por meio de ondas de rádio. Ele é desenvolvido com base na comunicação de dados com fio e pode realizar a comunicação de dados no estado móvel.Através de redes de comunicação de dados sem fio, smartphones, PDAs e
Os notebooks podem transferir informações de dados entre si e acessar a Internet. As redes de comunicação de dados sem fio são divididas em redes sem fio de curto alcance e Internet sem fio. As redes sem fio de curto alcance incluem principalmente 802.11, Bluetooth, IrDA e HomeRF. A Internet sem fio ou Internet móvel usa principalmente duas tecnologias de conexão sem fio: uma é a tecnologia de acesso sem fio móvel, como GSM, GPRS, CDPD (Cellular Digital Packet Data), etc., a outra é a tecnologia de acesso sem fio fixo, incluindo microondas, comunicações de espectro espalhado; , transmissão óptica por satélite e sem fio, etc.
Com o rápido desenvolvimento da Internet e da tecnologia incorporada, cada vez mais dispositivos de informação, como videofones da Web, decodificadores e eletrodomésticos de informação e outros produtos de sistema incorporado, precisam estar conectados à Internet para compartilhar a conveniência , velocidade e conveniência fornecidas pela Internet Recursos e serviços de informação onipresentes, nomeadamente tecnologia de Internet incorporada. A tecnologia de Internet incorporada tem amplas perspectivas de aplicação nas áreas de transporte inteligente, sistemas de limpeza, automação residencial, automação industrial, POS e comércio eletrônico.
1.Método de acesso à Internet incorporado
Os dispositivos incorporados integram a pilha de protocolos TCP/IP e o software relacionado. Esses dispositivos podem ser usados como um nó na Internet, atribuídos a um endereço IP e diretamente interconectados com a Internet. As características deste método de acesso são:
2.Pilha de protocolo TCP/IP incorporada
As funções concluídas pela pilha de protocolos TCP/IP incorporada são as mesmas da pilha de protocolos TCP/IP completa. No entanto, devido às limitações de recursos do sistema incorporado, alguns indicadores e interfaces da pilha de protocolos incorporadas podem ser diferentes dos normais. pilhas de protocolo.
(1) A interface de chamada da pilha de protocolos incorporada é diferente daquela da pilha de protocolos comum. A interface de soquete da pilha de protocolos comum é padrão e o software aplicativo tem boa compatibilidade. No entanto, a sobrecarga de código, a sobrecarga de processamento e armazenamento da implementação da interface padronizada são enormes. Portanto, quando a maioria dos fabricantes transplantou interfaces de pilha de protocolos padrão para sistemas embarcados, eles fizeram vários graus de modificação e simplificação e estabeleceram pilhas de protocolos dedicadas e eficientes. As APIs fornecidas eram diferentes das APIs das pilhas de protocolos gerais. .
(2) A adaptabilidade da pilha de protocolos incorporada. A maioria das pilhas de protocolos embarcados são modulares se o espaço de memória for limitado, eles podem ser instalados dinamicamente quando necessário e omitem várias partes não essenciais para sistemas embarcados, como encaminhamento de interface e um conjunto completo de ferramentas de serviço de Internet.
(3) Compatibilidade de plataforma da pilha de protocolos incorporada. Geralmente, a pilha de protocolos está intimamente integrada ao sistema operacional e a maioria das pilhas de protocolos é implementada no kernel do sistema operacional. A implementação da pilha de protocolos depende dos serviços fornecidos pelo sistema operacional e possui baixa portabilidade. A implementação da pilha de protocolos incorporada geralmente depende pouco do sistema operacional e é fácil de transplantar. Muitas pilhas de protocolos incorporados comerciais suportam múltiplas plataformas de sistemas operacionais.
(4) Alta eficiência da pilha de protocolos incorporada. As implementações de pilhas de protocolos incorporadas normalmente ocupam menos espaço, requerem menor memória de dados e são eficientes em termos de código, reduzindo assim os requisitos de desempenho do processador.
Com o desenvolvimento da tecnologia embarcada, os bancos de dados incorporados estão gradualmente migrando para a aplicação. Em essência, os bancos de dados embarcados são desenvolvidos a partir de bancos de dados gerais e executados em vários dispositivos embarcados ou dispositivos móveis. Eles mostram sua superioridade em sistemas embarcados porque são restritos pelo ambiente de aplicação do próprio sistema embarcado, os bancos de dados embarcados possuem características diferentes dos bancos de dados gerais. .
Normalmente, um sistema de gerenciamento de banco de dados incorporado é um sistema de gerenciamento de banco de dados usado em dispositivos incorporados. Como a maioria dos sistemas de gerenciamento de banco de dados incorporados são dispositivos de informação móveis, como computadores portáteis, PDAs, dispositivos montados em veículos e outros dispositivos de comunicação móvel, os dispositivos incorporados de posição fixa raramente são usados. Portanto, os bancos de dados incorporados também são chamados de bancos de dados móveis ou móveis. bancos de dados móveis incorporados.Sua principal função é resolver problemas de gerenciamento de dados em ambientes de computação móvel. O banco de dados móvel é uma parte importante do ambiente de computação móvel.
Banco de dados distribuído.
A introdução da tecnologia de banco de dados em sistemas embarcados se deve principalmente às seguintes deficiências no desenvolvimento de aplicativos de gerenciamento de informações diretamente em sistemas operacionais embarcados ou bare metal:
(1) Todas as aplicações requerem trabalho repetido de gerenciamento de dados, o que aumenta a dificuldade e o custo de desenvolvimento.
(2) O compartilhamento de dados entre aplicativos é fraco.
(3) O software aplicativo tem pouca independência, portabilidade e baixa capacidade de reutilização.
A introdução de um sistema de gerenciamento de banco de dados em sistemas embarcados pode resolver em grande medida os problemas acima e melhorar a eficiência do desenvolvimento e a portabilidade dos sistemas aplicativos.
O sistema de banco de dados embarcado é um sistema abrangente que inclui um sistema de gerenciamento de banco de dados embarcado e abrange dispositivos de comunicação móvel, estações de trabalho ou computadores desktop e servidores de dados. Esse recurso do sistema e o ambiente de uso do sistema têm grande influência no sistema de gerenciamento de banco de dados embarcado. . O impacto maior afeta diretamente a estrutura do sistema integrado de gerenciamento de banco de dados. As características de seu ambiente de uso podem ser simplesmente resumidas da seguinte forma:
(1) O dispositivo é móvel a qualquer momento. Os bancos de dados incorporados são usados principalmente em dispositivos de informação móveis. A localização do dispositivo geralmente muda com o usuário.
(2) A rede é frequentemente desconectada e a localização dos dispositivos móveis ou terminais móveis muda frequentemente durante o uso. Também é afetada por fatores como métodos de uso, fonte de alimentação, comunicação sem fio e condições da rede. Portanto, a conexão de rede geralmente não é mantida continuamente, mas muitas vezes é desconectada ativa ou passivamente e conectada de forma intermitente.
(3) As condições da rede são diversas Devido às mudanças frequentes na localização dos dispositivos móveis de informação, os dispositivos móveis de informação e os servidores de dados podem estar ligados através de diferentes sistemas de rede em momentos diferentes. Essas redes podem diferir em largura de banda de rede, custo de comunicação, atraso de rede, qualidade de serviço, etc.
(4) Capacidades de comunicação assimétricas Devido às restrições de recursos dos dispositivos móveis, as capacidades de comunicação de rede entre dispositivos móveis e servidores são assimétricas. As capacidades de envio dos dispositivos móveis são muito limitadas, tornando a largura de banda de comunicação de downlink do servidor de dados para o dispositivo móvel e a largura de banda de uplink do dispositivo móvel para o servidor de dados muito diferentes.
Um sistema embarcado completo de gerenciamento de banco de dados consiste em vários subsistemas, incluindo o sistema principal de gerenciamento de banco de dados, servidor de sincronização, sistema embarcado de gerenciamento de banco de dados, rede de conexão e outros subsistemas, conforme mostrado na Figura 12-6.
(1) Sistema de gerenciamento de banco de dados incorporado. O sistema de gerenciamento de banco de dados incorporado é um sistema de gerenciamento de banco de dados de usuário único funcionalmente independente. Ele pode ser executado independentemente do servidor de sincronização e do sistema de gerenciamento de banco de dados principal para gerenciar dados no sistema embarcado. Também pode ser conectado ao servidor principal por meio do servidor de sincronização para operar os dados no banco de dados principal. uma variedade de maneiras de sincronização de dados.
(2) Servidor de sincronização. O servidor de sincronização é o hub de conexão entre o banco de dados incorporado e o banco de dados principal, garantindo a consistência dos dados no banco de dados incorporado e no banco de dados principal.
(3) Servidor de dados. O banco de dados principal e o sistema de gerenciamento de banco de dados do servidor de dados podem usar sistemas de banco de dados de uso geral em grande escala, como Oracle ou Sybase.
(4) Conecte-se à rede. O servidor de banco de dados principal e o servidor de sincronização geralmente são conectados por meio de uma rede fixa de alta largura de banda e baixa latência. A conexão entre o dispositivo móvel e o servidor de sincronização pode ser uma LAN sem fio, uma conexão infravermelha, uma linha serial universal ou uma rede pública de acordo com as condições específicas do dispositivo.
1.A chave para bancos de dados móveis incorporados em aplicativos
Em aplicações práticas, os bancos de dados móveis incorporados devem resolver problemas como consistência de dados (replicação), processamento eficiente de transações e segurança de dados.
(1) Consistência dos dados. Uma característica notável do banco de dados móvel incorporado é que a conexão entre os terminais de dados móveis e o servidor de sincronização é uma conexão fraca, ou seja, baixa largura de banda, longo atraso, instabilidade e desconexão frequente. Para apoiar as operações dos usuários no banco de dados em ambientes fracos, o método de replicação otimista (Replicação Otimista ou Replicação Preguiçosa) agora é comumente usado para permitir que os usuários operem cópias de dados no cache local. Depois que a rede é reconectada, as informações de modificação de dados são trocadas com o servidor de banco de dados ou outros terminais de dados móveis, e a consistência dos dados é restaurada através da detecção e coordenação de conflitos.
(2) Processamento eficiente de transações. As transações móveis são realizadas em um ambiente móvel com desconexões frequentes e previsíveis. Para garantir a conclusão tranquila das transações ativas, novas estratégias e algoritmos de gestão de transações devem ser concebidos e implementados. Determine a prioridade do processamento de transações com base nas condições de conexão de rede, e as solicitações de transações com altas velocidades de conexão de rede serão processadas primeiro;
Determine se a transação é migrada com base no tempo de operação, ou seja, todas as operações de transação de longo prazo serão migradas para o servidor para execução, e não há necessidade de garantir que a rede esteja sempre tranquila para determinar se a transação é carregada; para execução ou download após a cópia dos dados ser executada com base no tamanho dos dados Estratégia de registro aprimorada durante o processamento da transação, seja para usar o mecanismo de descoberta do servidor ou o mecanismo de declaração do cliente durante o processamento de desconexão da rede; movimentação de transações (como consultas relacionadas à localização).
(3) Segurança de dados. Os dispositivos incorporados em muitos campos de aplicação são dispositivos essenciais para gerenciamento ou processamento de dados no sistema, portanto, o sistema de banco de dados no dispositivo incorporado tem um controle mais rigoroso sobre as permissões de acesso. Ao mesmo tempo, muitos dispositivos embarcados possuem alta mobilidade, portabilidade e ambientes de trabalho não fixos, o que também traz potenciais fatores inseguros. Além disso, alguns dados têm elevada privacidade pessoal, pelo que a segurança dos dados pessoais necessita de ser totalmente garantida em termos de prevenção de colisões, interferência de campo magnético, perda e roubo. As principais medidas para garantir a segurança dos dados são: autenticar terminais móveis para evitar o acesso fraudulento por terminais ilegais; encriptar as comunicações sem fios para evitar a fuga de informações de dados;
2.Recursos de sistemas de gerenciamento de banco de dados móveis
O ambiente computacional do SGBD móvel é uma extensão do SGBD distribuído tradicional. Ele pode ser considerado como um sistema distribuído no qual clientes e nós de servidor fixos estão conectados dinamicamente. Portanto, o sistema de gerenciamento de banco de dados no ambiente de computação móvel é um sistema de gerenciamento de banco de dados distribuído dinâmico. Como o sistema embarcado de gerenciamento de banco de dados móvel é aplicado em um sistema operacional embarcado em um ambiente de computação móvel, ele possui características e requisitos funcionais próprios:
(1) A estrutura do microkernel facilita a realização de funções incorporadas. Considerando os recursos limitados dos dispositivos embarcados, o SGBD móvel embarcado deve ser implementado usando tecnologia de miniaturização e compactar sua estrutura de sistema para atender às necessidades dos aplicativos embarcados.
(2) Suporte para SQL padrão. O SGBD móvel incorporado deve fornecer suporte para SQL padrão. Suporta um subconjunto do padrão SQL92, suporta consulta de dados (consulta de junção, subconsulta, classificação, agrupamento, etc.), inserção, atualização, exclusão de várias instruções SQL padrão, atendendo totalmente às necessidades de desenvolvimento de aplicativos incorporados.
(3) Função de gerenciamento de transações. O SGBD móvel incorporado deve ter funções de processamento de transações, manter automaticamente a integridade da transação, a atomicidade e outras características de suporte à integridade da entidade e à integridade referencial.
(4) Mecanismo completo de sincronização de dados. A sincronização de dados é o recurso mais importante dos bancos de dados incorporados. Através da replicação de dados, as alterações no banco de dados incorporado ou no banco de dados principal podem ser aplicadas umas às outras para garantir a consistência dos dados. O mecanismo de sincronização de dados do sistema embarcado de gerenciamento de banco de dados móvel deve ter as seguintes características:
(5) Suporta vários protocolos de conexão. O SGBD móvel incorporado deve suportar vários protocolos de conexão de comunicação. Conexões com dispositivos embarcados e servidores de banco de dados podem ser obtidas através de vários métodos de conexão, como comunicação serial, TCP/IP, transmissão infravermelha e Bluetooth.
(6) Funções completas de gerenciamento de banco de dados incorporado. O SGBD móvel incorporado deve ter uma função de recuperação automática, que basicamente não requer intervenção manual para gerenciamento de banco de dados incorporado e pode fornecer backup e recuperação de dados para garantir a segurança e confiabilidade dos dados do usuário.
(7) Independência de plataforma e suporte para múltiplos sistemas operacionais embarcados. O SGBD móvel embarcado deve ser capaz de suportar uma variedade de sistemas operacionais embarcados atualmente populares, como Windows CE e Palm OS, de modo que o sistema de gerenciamento de banco de dados móvel embarcado não seja restringido por terminais móveis.
(8) Recursos de gerenciamento zero. O banco de dados incorporado possui uma função de recuperação automática. Ele pode gerenciar o banco de dados incorporado sem intervenção manual e fornecer backup e sincronização de dados.
Além disso, um estado ideal é que os usuários possam realizar operações e gerenciamento de dados em todos os bancos de dados móveis relacionados a eles usando apenas um terminal móvel (como um telefone celular). Isto exige que o sistema front-end seja universal e que a interface do banco de dados móvel tenha padrões unificados e padronizados. O sistema de gerenciamento front-end gera automaticamente comandos de processamento de transações unificados durante o processamento de dados e os envia ao servidor de dados atualmente conectado para execução. Isso efetivamente aumenta a versatilidade do sistema de gerenciamento de banco de dados móvel incorporado e expande as perspectivas de aplicação do banco de dados móvel incorporado.
Em suma, no sistema de gerenciamento de banco de dados móvel incorporado, muitas questões que não precisam ser consideradas em ambientes de computação tradicionais precisam ser consideradas, como suporte para operações de desconexão, suporte para transações longas entre regiões, suporte para consultas relacionadas à localização e otimização de consultas e considerações especiais para melhorar a utilização de recursos limitados e a eficiência do sistema. A fim de resolver eficazmente os problemas acima, tecnologias como tecnologia de replicação e cache, processamento de transações móveis, tecnologia de transmissão de dados, processamento de consultas móveis e otimização de consultas, processamento de dados relacionados à localização e tecnologia de consulta, tecnologia de publicação de informações móveis, agente móvel e outros as tecnologias ainda estão sendo desenvolvidas. O desenvolvimento e a melhoria promoverão ainda mais o desenvolvimento de sistemas integrados de gerenciamento de bancos de dados móveis.
Simplificando, um sistema em tempo real pode ser visto como um sistema que pode responder a eventos externos em tempo hábil. A característica mais importante deste tipo de sistema é a oportunidade, ou seja, a atualidade. A exatidão de um sistema em tempo real não depende apenas dos resultados lógicos dos cálculos do sistema, mas também do momento em que esses resultados são gerados.
Atualmente, a maioria dos sistemas em tempo real são incorporados, e os sistemas embarcados em execução real também têm requisitos de tempo real. Portanto, entre muitos tipos de sistemas operacionais embarcados, os sistemas operacionais embarcados em tempo real são os mais representativos. todos os tipos de sistemas operacionais embarcados. Portanto, esta seção concentra-se principalmente nas características e conceitos de sistemas operacionais embarcados em tempo real e apresenta os conceitos e características básicas, arquitetura básica e kernel de sistemas operacionais embarcados. como serviços, objetos de kernel e serviços de kernel.
No mundo real, nem todos os sistemas embarcados possuem características de tempo real, e todos os sistemas de tempo real não são necessariamente embarcados. No entanto, esses dois sistemas não são mutuamente exclusivos, e os sistemas que possuem as características de ambos os sistemas são chamados de sistemas embarcados de tempo real. A relação entre eles é mostrada na Figura 12-7.
(1) Lógica (ou função) correta significa que o sistema pode produzir resultados corretos ao processar eventos externos.
(2) Hora correta significa que o processamento de eventos externos pelo sistema deve ser concluído dentro de um período predeterminado.
(3) Prazo ou limite de tempo, prazo limite refere-se ao último prazo que o sistema deve processar eventos externos. A falta deste limite pode ter consequências graves. Normalmente, o cálculo deve ser concluído antes que o prazo seja atingido.
(4) Sistema em tempo real refere-se a um sistema que satisfaz tanto a função correta quanto o tempo correto. Em outras palavras, os sistemas em tempo real são limitados pelo tempo e orientados por prazos. Contudo, em alguns sistemas, a exatidão do tempo pode ser sacrificada para garantir a exatidão funcional.
Para a divisão de sistemas em tempo real, os sistemas em tempo real geralmente podem ser divididos em:
(1) Sistema forte em tempo real, o tempo de resposta do sistema é muito curto, geralmente no nível de milissegundos ou microssegundos.
(2) Para sistemas gerais em tempo real, o tempo de resposta do sistema é inferior ao de sistemas fortes em tempo real, geralmente no segundo nível.
(3) Para sistemas fracos em tempo real, o tempo de resposta do sistema pode ser maior e também pode mudar com a gravidade da carga do sistema.
Os sistemas de tempo real podem ser divididos em sistemas de tempo real suaves e sistemas de tempo real rígidos com base na tolerância a prazos perdidos ou na gravidade das consequências.
(1) Sistema rígido em tempo real refere-se a um sistema em tempo real cuja flexibilidade está próxima do limite de tempo zero.O prazo deve ser cumprido
Caso contrário, ocorrerão consequências catastróficas e os resultados do processamento obtidos após o limite de tempo serão inúteis ou altamente desvalorizados.
(2) Sistema suave em tempo real refere-se a um sistema em tempo real que deve atender aos requisitos de limite de tempo, mas tem um certo grau de flexibilidade. Os prazos podem incluir níveis de tolerância variáveis, prazos médios ou até distribuições estatísticas com vários graus de aceitabilidade dos tempos de resposta. Em sistemas soft de tempo real, prazos perdidos geralmente não levam a consequências graves, como falha do sistema. A Tabela 12-2 é uma comparação entre sistemas soft de tempo real e hard real time.
Em comparação, pode-se verificar que, uma vez que os prazos não cumpridos não têm um impacto decisivo no funcionamento dos sistemas soft em tempo real, um sistema soft em tempo real não necessita de prever se poderão existir prazos pendentes não cumpridos. Em contraste, os sistemas soft em tempo real podem iniciar um processo de recuperação após detectar um prazo perdido.
Em um sistema de tempo real, o horário de início de uma tarefa é tão importante quanto o prazo ou o tempo de conclusão. Como a tarefa não possui os recursos necessários, como CPU e memória, isso pode dificultar o início da execução da tarefa e levar diretamente à falta. o prazo de conclusão da tarefa, então o problema do prazo evolui e se torna um problema de agendamento de recursos.
Isso tem um impacto crucial nos algoritmos de agendamento e no design de tarefas.
O chamado sistema operacional embarcado refere-se a um sistema operacional executado em um sistema de computador embarcado para suportar aplicativos embarcados. É uma coleção de software usado para controlar e gerenciar recursos de hardware e software em sistemas embarcados e fornecer serviços de sistema. O sistema operacional embarcado é uma parte importante do software embarcado. Seu surgimento melhorou a eficiência do desenvolvimento de software embarcado, melhorou a portabilidade do software aplicativo e promoveu efetivamente o desenvolvimento de sistemas embarcados.
1.Características dos sistemas operacionais embarcados
Comparados aos sistemas operacionais de uso geral, os sistemas operacionais incorporados possuem principalmente as seguintes características:
(1) Miniaturização: A plataforma de execução do sistema operacional embarcado não é um computador de uso geral, mas um sistema de computador embarcado. Este tipo de sistema geralmente não possui memória de grande capacidade e quase nenhuma memória externa. Portanto, o sistema operacional embarcado deve ser compacto para ocupar o mínimo possível de recursos do sistema. A fim de melhorar a velocidade de execução e a confiabilidade do sistema, o software no sistema embarcado é geralmente solidificado no chip de memória em vez de ser armazenado em um suporte como um disco.
(2) Alta qualidade de código: Na maioria das aplicações, o espaço de armazenamento ainda é um recurso precioso, o que exige que o código do programa seja de alta qualidade e o mais simplificado possível.
(3) Especialização: Existem várias plataformas de hardware para sistemas embarcados e os processadores são atualizados rapidamente. Cada uma delas é especialmente projetada para diferentes campos de aplicação. Portanto, o sistema operacional embarcado deve ter boa adaptabilidade e portabilidade, e também deve suportar múltiplas plataformas de desenvolvimento.
(4) Forte desempenho em tempo real: Os sistemas embarcados são amplamente utilizados no controle de processos, coleta de dados, comunicações, processamento de informações multimídia e outras situações que exigem resposta em tempo real. Portanto, o desempenho em tempo real tornou-se outra característica dos sistemas operacionais embarcados. .
(5) Cortável e configurável: A diversidade de aplicações exige que o sistema operacional embarcado tenha forte adaptabilidade e possa ser configurado de forma flexível e razoavelmente cortado de acordo com as características e requisitos específicos da aplicação para se adaptar aos requisitos de miniaturização e especialização.
2.Classificação de sistemas operacionais embarcados
Existem muitos tipos de sistemas operacionais embarcados, que podem ser classificados de diferentes perspectivas. Pela forma de aquisição do sistema operacional embarcado, ele pode ser dividido em duas categorias: tipo comercial e tipo livre:
(1) Tipo comercial. Os sistemas operacionais embarcados comerciais geralmente possuem funções estáveis e confiáveis, suporte técnico completo, ferramentas de desenvolvimento completas e serviços pós-venda. Como VxWorks da WindRiver, pSOS e Palm OS da Palm, etc. No entanto, é caro e os usuários geralmente não conseguem obter o código-fonte do sistema.
(2) Tipo livre. A vantagem de um sistema operacional embarcado gratuito está no preço. Além disso, os desenvolvedores de sistemas aplicativos podem obter o código-fonte do sistema, o que traz comodidade ao desenvolvimento. No entanto, os sistemas operacionais gratuitos têm funções simples, suporte técnico deficiente e estabilidade do sistema deficiente. Sistemas representativos típicos incluem Linux embarcado, uC/OS, etc. Pela natureza de tempo real dos sistemas operacionais embarcados, eles podem ser divididos em duas categorias: sistemas operacionais embarcados em tempo real e sistemas operacionais embarcados não em tempo real.
(1) SO incorporado em tempo real (RTEOS). O sistema operacional incorporado em tempo real suporta o trabalho do sistema em tempo real. Sua tarefa principal é agendar todos os recursos disponíveis para atender ao limite de tempo em tempo real para responder a eventos externos. Os sistemas operacionais embarcados em tempo real são usados principalmente em controle, comunicação e outras áreas. Atualmente, a maioria dos sistemas operacionais embarcados comerciais são sistemas operacionais de tempo real.
(2) Sistema operacional embarcado não em tempo real. Este tipo de sistema operacional não presta atenção especial ao tempo de resposta de uma única tarefa. Seu desempenho médio, eficiência do sistema e utilização de recursos são geralmente altos e é adequado para produtos eletrônicos de consumo que não possuem requisitos rígidos de tempo real. como assistentes pessoais digitais, decodificadores, etc.
No geral, o desempenho em tempo real de um sistema embarcado é determinado pelo hardware, sistema operacional em tempo real e aplicativos. Entre eles, o desempenho do núcleo do sistema operacional embarcado em tempo real desempenha um papel fundamental. Geralmente, existem dois tipos de sistemas operacionais embarcados em tempo real: RTEOS baseados em kernel em tempo real e RTEOS de uso geral.
RTEOS tipo kernel em tempo real: Neste tipo de sistema operacional, os drivers são tradicionalmente incorporados no kernel e os aplicativos e middleware são implementados em interfaces de programação de aplicativos padrão (APIs, Interfaces de Programação de Aplicativos).
RTEOS de uso geral em tempo real: Neste tipo de sistema operacional, o driver não está profundamente embutido no kernel, mas é implementado na parte superior do kernel e contém apenas alguns aplicativos e middleware necessários que podem ser implementados diretamente nele. parte superior do driver, em vez de ter que ser implementado em APIs padrão. Suas diferenças são mostradas na Figura 12-8.
Existem muitas semelhanças funcionais entre sistemas operacionais incorporados em tempo real e sistemas operacionais de uso geral. Por exemplo, ambos suportam multitarefa, suportam gerenciamento de recursos de software e hardware e ambos fornecem serviços básicos de sistema operacional para aplicativos.
1.Principais recursos de sistemas operacionais integrados em tempo real
Comparados aos sistemas operacionais de uso geral, os sistemas operacionais embarcados em tempo real possuem muitos recursos de funcionalidade. Os principais recursos exclusivos dos sistemas operacionais incorporados de tempo real que são diferentes dos sistemas operacionais de uso geral incluem:
2.Indicadores de desempenho em tempo real de sistemas operacionais integrados em tempo real Ao avaliar o desempenho de projetos de sistemas operacionais em tempo real, indicadores de desempenho de tempo
O indicador é o indicador de desempenho mais importante. Os indicadores de desempenho de tempo comumente usados incluem principalmente o seguinte:
(1) Tempo de troca de tarefas: refere-se ao tempo necessário para transferir o controle da CPU de uma tarefa em execução para outra tarefa pronta, incluindo o tempo gasto para salvar e restaurar o contexto da tarefa e selecionar a próxima tarefa a ser executada ao realizar a troca de tarefas. Ao mesmo tempo, este indicador está relacionado ao número de registros e à estrutura do sistema do microprocessador. O mesmo sistema operacional pode levar tempos diferentes quando executado em microprocessadores diferentes. O diagrama de temporização correspondente ao tempo de troca de tarefa é mostrado na Figura 12-9.
(2) Indicadores de tempo relacionados ao processamento de interrupções, o diagrama de tempo de interrupção correspondente é mostrado na Figura 12-10
O tempo de atraso da interrupção refere-se ao tempo desde a ocorrência da interrupção até o aprendizado do sistema da interrupção. É afetado principalmente pelo tempo máximo de interrupção do sistema.
Quanto maior for o tempo de interrupção, maior será o atraso da interrupção;
Tempo de execução do processamento de interrupção, que é determinado pela aplicação específica;
O tempo de resposta à interrupção refere-se ao tempo desde a ocorrência de uma interrupção até o início da execução da rotina de serviço de interrupção do usuário;
O tempo de recuperação de interrupção refere-se ao tempo entre o término da rotina de serviço de interrupção do usuário e o retorno ao código interrompido;
O tempo máximo de interrupção inclui dois aspectos: um é o tempo máximo de interrupção do kernel, ou seja, o kernel desliga as interrupções ao executar o código da seção crítica, o outro é o tempo máximo de interrupção do aplicativo e o tempo máximo de interrupção; o tempo é o máximo desses dois tempos de interrupção; O tempo de resposta da tarefa refere-se ao tempo desde o momento em que a interrupção correspondente à tarefa é gerada até o momento em que a tarefa realmente começa a ser executada;
Para agendamento preemptivo, o tempo para recuperação de interrupção também é adicionado ao tempo para troca de tarefas e restauração do novo contexto de tarefa.
entre.
(3) Tempo de resposta do sistema: refere-se ao tempo desde o momento em que o sistema emite uma solicitação de processamento até o momento em que o sistema responde, ou seja, o atraso de agendamento. O tamanho desse tempo é determinado principalmente pelo algoritmo de agendamento de tarefas do kernel. Como resumo, o método típico de cálculo do índice de desempenho do kernel preemptivo em tempo real é mostrado na Tabela 12-3.
Até agora, de acordo com estatísticas incompletas, o número total de sistemas operacionais embarcados existentes no mundo chega a centenas. Existem mais de uma dúzia dos sistemas operacionais mais usados. Esses sistemas operacionais têm alta popularidade e uma grande base de usuários em seus respectivos campos de aplicação. A Tabela 12-4 seleciona alguns sistemas operacionais embarcados comuns na indústria para comparação.
A principal tarefa do projeto de sistema embarcado é definir as funções do sistema, determinar a arquitetura do sistema e mapear as funções para a arquitetura de implementação do sistema. Aqui, a arquitetura do sistema inclui a arquitetura do sistema de software e a arquitetura do sistema de hardware. Uma arquitetura pode ser mapeada para uma variedade de implementações físicas diferentes, cada uma representando diferentes compensações, ao mesmo tempo que satisfaz certos critérios de design e otimiza outros.
O método de design de sistemas embarcados é diferente dos métodos gerais de design de hardware e desenvolvimento de software. Ele adota o método de co-design de hardware e software. O processo de desenvolvimento não envolve apenas conhecimento na área de software, mas também envolve conhecimento abrangente na área de hardware. campo, e até envolve máquinas, etc. aspectos do conhecimento. Os projetistas devem estar familiarizados e ser capazes de usar livremente diversas tecnologias nessas áreas, a fim de otimizar o sistema projetado.
Embora as soluções de projeto de software de aplicação de sistema embarcado variem de acordo com os diferentes campos de aplicação, os métodos de análise e projeto de sistemas embarcados também seguem os princípios gerais da engenharia de software. Muitos métodos maduros de análise e projeto podem ser aplicados no campo embarcado. O processo de desenvolvimento de sistemas embarcados também inclui várias etapas básicas: análise de requisitos, projeto do sistema, implementação e teste, e cada etapa possui características e foco únicos.
Esta seção apresenta principalmente a tecnologia e os métodos de desenvolvimento e design de sistemas embarcados e analisa os métodos de design de software aplicativo e os principais problemas enfrentados no processo de design do ponto de vista de aplicativos de sistemas embarcados e modelos de computação. Por fim, são discutidas questões relacionadas ao transplante de software na área embarcada.
Antes de projetar um sistema embarcado, as características do próprio projeto do sistema embarcado e alguns dos principais indicadores técnicos para medir o projeto do sistema embarcado devem ser esclarecidos.
1.Características do design de sistema embarcado
Comparado com o projeto de sistema usual, o projeto de sistema embarcado possui as seguintes características:
2.Indicadores técnicos de sistemas embarcados
Os indicadores comumente usados para projeto de sistemas embarcados incluem:
(1) Custo NRE (custo de engenharia não recorrente): o custo monetário único que precisa ser pago para projetar o sistema. Ou seja, uma vez concluído o projeto, qualquer número de produtos pode ser fabricado sem pagar taxas adicionais de projeto. .
(2) Custo unitário: o custo monetário necessário para produzir um único produto, excluindo os custos de NRE.
(3) Tamanho: refere-se ao espaço ocupado pelo sistema. Para software, geralmente é medido pelo número de bytes, para hardware, é medido pelo número de portas lógicas ou transistores.
(4) Desempenho: O tempo necessário para o sistema concluir tarefas específicas é o indicador de design mais comumente usado durante o design. Um deles é o tempo de resposta, que é o tempo entre o início da execução e o final da execução. a tarefa. A segunda é a quantidade de conclusão, que é a quantidade de tarefas concluídas por unidade de tempo.
(5) Potência: A potência consumida pelo sistema, que determina a vida útil da bateria ou os requisitos de dissipação de calor do circuito.
(6) Flexibilidade: A capacidade de alterar as funções do sistema sem aumentar os custos de NRE.
(7) Tempo de criação do protótipo: o tempo necessário para estabelecer uma versão executável do sistema. O protótipo do sistema pode ser maior e mais caro que o produto final, mas pode verificar o uso e a exatidão do sistema e melhorar a funcionalidade do sistema. sistema.
(8) Tempo de lançamento no mercado: O tempo desde o desenvolvimento do sistema até o momento em que ele pode ser vendido aos consumidores. Os fatores de influência mais importantes incluem o tempo de design, o tempo de fabricação e o tempo de teste.
(9) Manutenibilidade: A facilidade com que um sistema pode ser modificado após ser lançado ou comercializado, especialmente por desenvolvedores não originais.
(10) Correção: Se a função do sistema for implementada corretamente, a função do sistema pode ser verificada durante todo o processo de projeto, e um circuito de teste também pode ser inserido para verificar se está correto.
(11) Segurança: a probabilidade de o sistema não causar danos. Vários indicadores de design geralmente competem entre si. A melhoria de um indicador geralmente leva à deterioração de outros indicadores. Para melhor atender aos requisitos de otimização de design, os projetistas devem compreender várias tecnologias de implementação de software e hardware e ser capazes de aprender com elas. a tecnologia é transferida para outra, a fim de encontrar a melhor solução sob restrições específicas.
3.Desafios de design de sistema embarcado
Os desafios enfrentados pelo projeto de sistemas embarcados incluem os seguintes aspectos.
(1) Quanto hardware é necessário: Os projetistas têm forte controle sobre o poder de computação usado para resolver problemas. Eles podem não apenas escolher qual processador usar, mas também a quantidade de memória, periféricos usados, etc., porque o design não só. Para atender aos requisitos de desempenho, também existem restrições nos custos de fabricação. A escolha do hardware é muito importante. Muito pouco hardware não atenderá aos requisitos funcionais e de desempenho, e muito hardware tornará o produto muito caro.
(2) Como cumprir o limite de tempo: Não é aconselhável utilizar o método de aumentar a velocidade do processador para fazer o programa rodar mais rápido para resolver a restrição de tempo, pois isso aumentará o preço do sistema. Ao mesmo tempo, aumentar a frequência do clock do processador às vezes não melhora a velocidade de execução, pois a velocidade do programa pode ser limitada pelo sistema de armazenamento.
(3) Como reduzir o consumo de energia do sistema: Para sistemas alimentados por bateria, o consumo de energia é uma questão muito delicada. Para sistemas sem bateria, alta potência significa alta dissipação de calor. Uma maneira de reduzir o consumo de energia do sistema é reduzir sua velocidade de computação, mas simplesmente reduzir a velocidade de computação obviamente levará a um desempenho insatisfatório. Portanto, um projeto cuidadoso deve ser feito para reduzir o consumo de energia e, ao mesmo tempo, atender às restrições de desempenho.
(4) Como garantir a escalabilidade do sistema: A plataforma de hardware do sistema pode utilizar várias gerações, ou utilizar diferentes níveis de produtos da mesma geração. alterando o software. Projete uma máquina que possa fornecer recursos de desempenho que ainda não estão disponíveis no software.
(5) Como garantir a confiabilidade do sistema: A confiabilidade é um indicador importante na venda de produtos. É uma exigência razoável dos consumidores que o produto possa funcionar bem.
(6) Complexidade do teste: Testar um sistema embarcado é muito mais difícil do que apenas inserir alguns dados, portanto, toda a máquina deve ser executada para gerar os dados corretos. O momento em que os dados são gerados é muito importante, ou seja, não pode. deixe o sistema embarcado. Trabalhe com todo o ambiente para testar sistemas embarcados.
(7) Visibilidade e controlabilidade limitadas: Os sistemas embarcados geralmente não possuem dispositivos de exibição e teclados, o que torna difícil para os desenvolvedores entenderem o que está acontecendo dentro do sistema e às vezes eles não conseguem responder às ações do sistema. sinais para entender. Em sistemas de tempo real, geralmente não é possível desligar o sistema para observação.
(8) Ambiente de desenvolvimento limitado: O ambiente de desenvolvimento de sistemas embarcados, como software de desenvolvimento e ferramentas de hardware, é geralmente mais limitado do que o ambiente disponível em computadores ou estações de trabalho de uso geral. Portanto, o desenvolvimento cruzado só pode ser usado, o que é muito importante. afeta o progresso do desenvolvimento.
Semelhante ao desenvolvimento de sistemas gerais, o desenvolvimento de sistemas embarcados também pode adotar modelos de desenvolvimento comuns em engenharia de software, incluindo principalmente modelo em cascata, modelo espiral, modelo de refinamento gradual e modelo hierárquico.
1.Modelos de desenvolvimento comuns
Um processo de design é uma série de etapas que devem ser seguidas durante o design de um sistema, algumas das quais podem ser realizadas por ferramentas automatizadas, enquanto outras só podem ser realizadas manualmente. No campo de sistemas embarcados, existem os seguintes modelos de processos de desenvolvimento comumente usados.
(1) Modelo cascata. O modelo em cascata consiste em cinco etapas principais: a fase de análise de requisitos determina as características básicas do sistema alvo; a fase de design da estrutura do sistema decompõe as funções do sistema em estruturas principais; a fase de codificação escreve e depura principalmente os programas; e a última é a fase de manutenção, que é a principal responsável por modificar o código para se adaptar às mudanças do ambiente, corrigir erros e atualizar. O trabalho e as informações em cada estágio sempre fluem em uma direção, desde a abstração de alto nível até etapas de design mais detalhadas, o que é um modelo de design de cima para baixo ideal.
(2) Modelo espiral. O modelo espiral pressupõe que múltiplas versões do sistema serão construídas. A versão inicial é um modelo experimental simples para ajudar o projetista a estabelecer a intuição sobre o sistema e acumular experiência no desenvolvimento deste sistema. À medida que o projeto avança, versões mais complexas serão criadas. sistema criado. Em cada camada de projeto, os projetistas passarão por três etapas: análise de demanda, projeto estrutural e testes. Numa fase posterior, quando versões mais complexas do sistema forem construídas, mais trabalho será feito em cada fase e a espiral de design terá de ser expandida. Esta abordagem passo a passo para o refinamento permite ao designer aprofundar o seu trabalho. compreensão do sistema desenvolvido através de uma série de ciclos de design. O primeiro loop no topo da espiral é muito pequeno e curto, enquanto o último loop na parte inferior da espiral adiciona detalhes aos primeiros loops do modelo espiral, que é mais realista do que o modelo em cascata.
(3) Refinamento passo a passo do modelo. O modelo de refinamento gradual é um sistema que é construído várias vezes. O primeiro sistema é usado como protótipo e, em seguida, o sistema é refinado um por um. Essa abordagem faz sentido quando o projetista não está muito familiarizado com o domínio de aplicação do sistema que está sendo construído. Refinar o sistema construindo vários sistemas de complexidade crescente permite que os projetistas testem a arquitetura e as técnicas de design. Além disso, várias técnicas iterativas podem ser concluídas apenas parcialmente até que o sistema esteja finalmente concluído.
(4) Modelo hierárquico. Muitos sistemas embarcados são compostos de projetos menores, e um sistema completo pode exigir vários componentes de software e componentes de hardware. Estas partes podem ser compostas por peças menores que ainda não foram projetadas, de modo que o processo de projeto muda com o nível de abstração do sistema, desde o projeto inicial do sistema completo até o projeto de peças individuais, desde o projeto geral no nível mais alto de abstração até o intermediário O design detalhado no nível abstrato e depois o design de cada módulo específico são desdobrados camada por camada. Cada processo pode ser realizado por um único designer ou equipe de design. Cada grupo depende dos resultados de outros grupos. , e cada grupo aprende com os superiores. Os grupos obtêm requisitos, enquanto os grupos-mãe confiam na qualidade e no desempenho dos projetos de grupo individuais. Além disso, cada estágio de implementação do processo é um processo completo, desde a especificação até o teste.
2.Métodos de design de sistema embarcado
Um bom método de projeto de sistema embarcado é muito importante porque:
(1) Um bom método de design permite que os designers entendam claramente o andamento do trabalho que estão realizando, de modo a garantir que nenhum deles seja esquecido.
(2) Permitir o uso de ferramentas auxiliadas por computador para ajudar os projetistas a trabalhar e dividir todo o processo em várias etapas controláveis.
(3) Bons métodos de design facilitam a comunicação entre os membros da equipe de design. Ao definir um processo de design abrangente, cada membro da equipe pode ter uma boa compreensão do trabalho que deve realizar e das etapas necessárias para concluir as tarefas que lhes são atribuídas. . metas alcançadas.
O processo de desenvolvimento de software de sistema embarcado pode ser dividido em várias etapas, como planejamento de projeto, análise de viabilidade, análise de requisitos, projeto de esboço, projeto detalhado, criação de programa, download, depuração, solidificação, teste e operação.
As etapas de planejamento do projeto, análise de viabilidade, análise de requisitos, projeto de esboço e projeto detalhado são basicamente as mesmas do processo de desenvolvimento de software geral e podem ser realizadas de acordo com métodos de engenharia de software, como métodos de prototipagem, métodos estruturados, etc. .
Como os ambientes de execução e desenvolvimento do software embarcado são diferentes, o trabalho de desenvolvimento é realizado de forma transversal, portanto isso deve ser considerado em cada etapa. O trabalho na fase de estabelecimento do programa baseia-se nos documentos gerados durante a fase de concepção detalhada. O trabalho nesta fase inclui principalmente vários subprocessos, como escrita de código-fonte, compilação e vinculação. Essas tarefas são todas executadas na máquina host e não requerem o uso da máquina de destino. Depois de gerar o arquivo executável do aplicativo, você precisa usar o ambiente de desenvolvimento cruzado para depuração. Você pode escolher de acordo com a situação real.
Faça isso usando um dos vários métodos de depuração disponíveis ou uma combinação válida deles. O projeto de sistema embarcado é diferente do projeto de software tradicional, conforme mostrado na Figura 12-11. Freqüentemente envolve design de hardware e design de software, onde as atividades de front-end, como especificações e arquitetura de sistema, exigem consideração de aspectos de hardware e software.
Da mesma forma, o design de back-end, como integração e teste do sistema, considera todo o sistema. No estágio intermediário, os componentes de software e hardware são desenvolvidos independentemente uns dos outros, e a maior parte do trabalho de hardware e software pode ser realizada de forma relativamente independente. Finalmente, o programa executável correto após a depuração deve ser solidificado na máquina de destino.Dependendo da configuração do hardware do sistema embarcado, existem vários métodos de cura. Pode ser curado em memórias como EPROM e FLASH, ou em dispositivos eletrônicos como DOC e DOM.
subplaca. Geralmente isso é feito com a ajuda de alguns programadores especiais.
Como os sistemas embarcados têm requisitos de segurança e confiabilidade mais elevados do que os sistemas de computador de uso geral, é necessária uma maior cobertura de código ao realizar testes de caixa branca de sistemas embarcados. Em cada fase do processo de desenvolvimento do sistema, deve ser realizada a confirmação do sistema e avaliação de desempenho, avaliação de segurança e avaliação de risco, e a implementação do sistema deve ser testada e verificada.
O desenvolvimento de sistemas embarcados é um desenvolvimento abrangente de software e hardware, que é muito diferente do desenvolvimento de sistemas gerais. Por um lado, cada sistema embarcado é uma combinação de software e hardware, por outro lado, uma vez que o sistema embarcado; é desenvolvido, o software é solidificado no produto junto com o hardware e tem forte especificidade. Sob a influência dessas características, deve haver uma metodologia de engenharia diferente do processo geral de desenvolvimento de software para apoiar o processo de desenvolvimento de sistemas embarcados. Ao mesmo tempo, essas características também determinam as tecnologias centrais exclusivas usadas no desenvolvimento de sistemas embarcados.
De modo geral, no campo do desenvolvimento embarcado, existem três tecnologias principais principais: tecnologia de processador, tecnologia IC e tecnologia de design/verificação.
1. Tecnologia de processador
A tecnologia do processador está relacionada à estrutura do mecanismo de computação que implementa funções do sistema. Muitos sistemas digitais não programáveis também podem ser considerados processadores. A diferença entre esses processadores é o seu grau de especialização para funções específicas, resultando em especificações de design diferentes de outros processadores. .
(1) Processador de uso geral. Este tipo de processador pode ser utilizado para diversos tipos de aplicações. Uma característica importante é a capacidade de armazenar programas. Como o projetista não sabe quais operações o processador irá realizar, é impossível criar um programa utilizando circuitos digitais. Outra característica é o caminho de dados universal. Para lidar com vários cálculos, o caminho de dados é universal. O caminho de dados geralmente possui um grande número de registros e uma ou mais unidades lógicas aritméticas de uso geral. O projetista só precisa programar a memória do processador para executar as funções necessárias, ou seja, o software relacionado ao projeto.
O uso de processadores de uso geral em sistemas embarcados apresenta diversas vantagens em termos de métricas de projeto. O tempo de lançamento no mercado e o custo do NRE são baixos porque o projetista só precisa escrever o programa sem fazer nenhum projeto digital. É altamente flexível e alterações funcionais podem ser feitas modificando o programa. Comparado com o projeto interno do processador, o custo unitário é menor quando a quantidade é pequena.
É claro que este método também apresenta algumas falhas nos indicadores de projeto. Quando a quantidade é grande, o custo unitário é relativamente alto, pois quando a quantidade é grande, o custo do NRE autoprojetado é amortizado, o que pode reduzir o custo unitário. Ao mesmo tempo, para algumas aplicações, o desempenho pode ser fraco. O tamanho do sistema e o consumo de energia podem aumentar devido à inclusão de hardware de processador desnecessário.
(2) Processador de uso único. Um processador de propósito único é um circuito digital projetado para executar um programa específico. Também se refere a coprocessadores, aceleradores, periféricos, etc. Codecs como JPEG executam um único processo para compactar ou descompactar informações de vídeo. Os projetistas de sistemas embarcados podem criar processadores de propósito único projetando circuitos digitais específicos. Os designers também podem usar processadores comerciais pré-projetados de uso único.
O uso de processadores de propósito único em sistemas embarcados apresenta algumas vantagens e desvantagens em termos de métricas. Essas vantagens e desvantagens são basicamente opostas aos processadores de uso geral. O desempenho pode ser melhor, o tamanho e a potência podem ser menores, o custo unitário pode ser menor quando a quantidade é grande e o tempo de design e o custo do NRE podem ser altos. a flexibilidade é baixa e o custo unitário por hora é mais alto. Para algumas aplicações, o desempenho não é tão bom quanto o dos processadores de uso geral.
(3) Processador dedicado. Um processador de conjunto de instruções para fins especiais é um processador programável otimizado para um tipo específico de aplicação. Tais aplicações específicas possuem as mesmas características, como controle embarcado, processamento digital de sinais, etc. O uso de processadores dedicados em sistemas embarcados pode fornecer maior flexibilidade e ao mesmo tempo garantir bom desempenho, potência e tamanho, mas tais processadores ainda exigem custos elevados para construir o próprio processador e o compilador. Microcontroladores e processadores de sinais digitais são dois tipos de processadores especializados amplamente utilizados. Os processadores de sinais digitais são microprocessadores que realizam operações comuns em sinais digitais, enquanto os microcontroladores são microprocessadores otimizados para aplicações de controle embarcadas.
2. Tecnologia CI
A tecnologia de implementação que obtém o processo de mapeamento físico do chip real a partir da descrição do projeto do circuito integrado do sistema é a tecnologia IC (Circuitos Integrados, circuito integrado). Atualmente, existem três tipos de tecnologias de implementação no campo de semicondutores, ou seja, personalização completa. , semi-personalização e tecnologia programável Pode ser aplicada ao projeto de hardware de sistemas embarcados.
(1) Totalmente customizado/VLSI (Circuitos Integrados de Grande Escala, circuitos integrados de grande escala). Na tecnologia IC totalmente customizada, os projetistas de cada camada precisam otimizar a implementação digital de um sistema embarcado específico. Os projetistas partem do tamanho do layout, da posição e da fiação dos transistores para obter alta utilização da área do chip, velocidade rápida e baixo consumo de energia. . Otimizar o desempenho. Usando máscaras para produzir chips reais na fábrica, projetos de IC totalmente personalizados, também chamados de VLSI, têm altos custos de NRE, longos tempos de fabricação e são adequados para aplicações de alto volume ou de desempenho crítico.
(2) Semi-customizado/ASIC (Circuito Integrado Específico de Aplicação, circuito integrado específico de aplicação). ASIC semipersonalizado é um método de design restrito, incluindo método de design de matriz de portas e método de design de célula padrão. É um hardware semiacabado com alguns componentes de unidades universais e grupos de componentes feitos no chip. O projetista só precisa considerar as funções lógicas do circuito e as conexões razoáveis entre os módulos funcionais. Este método de projeto é flexível, conveniente e econômico, encurta o ciclo de projeto e melhora o rendimento.
(3) Programável/ASIC. Todas as camadas do dispositivo programável já existem. Após a conclusão do projeto, o chip projetado pode ser disparado em laboratório sem o envolvimento dos fabricantes de IC, e o ciclo de desenvolvimento é significativamente reduzido. ASIC programável tem menor custo de NRE, maior custo unitário, maior consumo de energia e velocidade mais lenta.
3.Tecnologia de Design/Verificação
A tecnologia de design de sistemas embarcados inclui principalmente duas categorias: tecnologia de design de hardware e tecnologia de design de software. Entre eles, a tecnologia na área de design de hardware inclui principalmente tecnologia de design em nível de chip e tecnologia de design em nível de placa de circuito.
O núcleo da tecnologia de design em nível de chip é compilação/síntese, biblioteca/IP (propriedade intelectual, propriedade intelectual) e teste/verificação. A tecnologia de compilação/síntese permite que os designers descrevam a funcionalidade necessária de maneira abstrata e analisem e insiram automaticamente detalhes de implementação. A tecnologia de biblioteca/IP usa implementações de abstração de baixo nível pré-projetadas para abstrações de alto nível. A tecnologia de teste/verificação garante que cada nível funcione corretamente, reduzindo o custo do design iterativo entre os níveis.
O núcleo da tecnologia de design de software é a linguagem de software. As linguagens de software passaram pelo processo de desenvolvimento desde linguagens de baixo nível (linguagem de máquina, linguagem assembly) até linguagens de alto nível (por exemplo, linguagens de design estruturadas, linguagens de design orientadas a objetos). tecnologia de montagem, tecnologia de análise, tecnologia de compilação/interpretação, etc. muitas tecnologias relacionadas. Os níveis de linguagens de software também estão em transição gradual do nível de implementação, nível de design e nível funcional para o desenvolvimento de linguagem em nível de demanda.
Nos primeiros dias, com a formação gradual do conceito de processadores de uso geral, a tecnologia de software desenvolveu-se rapidamente, a complexidade do software também começou a aumentar e as tecnologias e campos de design de software e design de hardware foram completamente separados. As técnicas e ferramentas de design desenvolveram-se simultaneamente nestes dois campos, permitindo que a descrição do comportamento seja realizada em níveis cada vez mais abstratos para se adaptar às crescentes necessidades da complexidade do design. Este desenvolvimento simultâneo agora faz com que ambos os campos usem o mesmo modelo de tempo para descrever o comportamento, de modo que é possível que os dois campos sejam unificados novamente em um campo.
Tendo em vista o fato de que a maioria dos sistemas embarcados são sistemas reativos em tempo real, os sistemas reativos têm as características de simultaneidade multitarefa, restrições de tempo estritas e alta confiabilidade. Para o projeto e descrição de sistemas reativos, as pessoas propuseram sucessivamente uma variedade de. linguagens de descrição e metodologia de validação. Por exemplo, a lógica sequencial é usada para descrever a natureza dos sistemas reativos e raciocinar sobre o comportamento dos sistemas reativos, e a tecnologia de verificação de modelo é usada para verificar a exatidão dos projetos de sistemas reativos. Essas tecnologias têm gradualmente desempenhado um papel importante no desenvolvimento embarcado. processo. .
Existem muitos tipos de ambientes de desenvolvimento para sistemas embarcados, que geralmente podem ser divididos nas seguintes categorias:
(1) Ambientes de desenvolvimento que suportam sistemas operacionais embarcados Existem muitos ambientes de desenvolvimento nesta categoria, como PalmOS, THOS, VxWorks, Windows CE e outros sistemas operacionais embarcados comerciais, que possuem ambientes de desenvolvimento totalmente funcionais para suportá-los.
(2) Ambiente de desenvolvimento que suporta o chip do processador. Este tipo de ambiente de desenvolvimento é geralmente fornecido por fabricantes de processadores. Por exemplo, um kit de ferramentas lançado pela EPSON especificamente para o desenvolvimento de sistemas embarcados baseados na série S1C33 de chips microcontroladores é esse tipo de ambiente de desenvolvimento.
(3) Um ambiente de desenvolvimento adequado à plataforma de aplicação específica. Esse tipo de ambiente de desenvolvimento é altamente direcionado, como o Brew SDK da Qualcomm.
(4) Outros tipos de ambientes de desenvolvimento. Este tipo de ambiente de desenvolvimento refere-se principalmente a um ambiente de desenvolvimento mais geral desenvolvido ou personalizado por alguns fornecedores de sistemas embarcados com base em ferramentas de código aberto GNU. Essas ferramentas estão disponíveis gratuitamente, suportam uma ampla variedade de tipos de processadores e possuem funções completas, mas seu suporte técnico é ligeiramente inferior ao das ferramentas comerciais profissionais.
À medida que as funções dos sistemas embarcados se tornam cada vez mais complexas, torna-se cada vez mais difícil descrever o comportamento desses sistemas funcionalmente complexos. A prática provou que descrever e analisar sistemas usando modelos computacionais é um método com valor de engenharia.
Esta seção apresenta vários modelos de computação comumente usados no campo incorporado e analisa e explica questões relacionadas ao design e desenvolvimento de aplicativos incorporados a partir da perspectiva de modelos de computação. Os modelos computacionais fornecem um conjunto de métodos para combinar comportamentos complexos com objetos simples, o que pode ajudar os projetistas a compreender e descrever o comportamento do sistema. Os modelos de computação comumente usados em sistemas embarcados incluem o seguinte: modelo de computação sequencial, modelo de processo de comunicação, modelo de máquina de estado, modelo de fluxo de dados, modelo orientado a objetos e modelo de processo simultâneo. Esses modelos são usados em diferentes campos de aplicação. Por exemplo, o modelo de máquina de estado é particularmente adequado para descrever sistemas orientados a controle, e o modelo de fluxo de dados pode descrever bem problemas de processamento e conversão de dados. Atualmente o mais utilizado é o modelo de processos concorrentes.
1.Modelo de máquina de estado
Máquina de Estados Finitos (FSM) é um modelo básico de estado que pode usar um conjunto de estados possíveis para descrever o comportamento do sistema. O sistema pode estar apenas em um dos estados a qualquer momento, ou também pode descrever o estado determinado. pela entrada, Transition, finalmente, pode descrever as operações que podem ocorrer em um determinado estado ou durante uma transição de estado.
A máquina de estados finitos FSM é um F de seis tuplas<S,I,O,F,H,S0> , onde S é um conjunto de estados {s0, s1,…,sl}, I é um conjunto de entrada {I0, I1,…,Im}, O é um conjunto de saída {o0, o1,…,on} e F é uma função de subestado ou função de transição, que mapeia o estado e a entrada para o estado (S×I→S), H é a função de saída, que mapeia o estado para a saída (S→O), e S0 é o estado inicial. .
A Figura 12-12 é a descrição da máquina de estados da unidade de controle do elevador. No estado inicial "inativo", configure para 0 e abra para 1. A máquina de estado permanece no estado “idle” até que o piso solicitado seja diferente do piso atual. Se o piso solicitado for maior que o piso atual, a máquina de estado é transferida para o estado "ativo" e configurada como 1. Se o piso solicitado for menor que o piso atual, a máquina de estado passa para o estado "inativo" e o valor inferior é definido como 1. A máquina de estado permanece no estado "inativo" ou "acima" até que o piso atual seja igual ao piso solicitado e, em seguida, o estado transita para o estado "aberto" com aberto definido como 1. Normalmente, o sistema possui um temporizador. Portanto, quando a máquina de estado transfere para o estado de "porta aberta", o temporizador também é iniciado. A máquina de estado permanece no estado de "porta aberta" até que o temporizador expire e, finalmente, transfere para. o estado "inativo".
Quando o FSM é usado no projeto de sistemas embarcados, os tipos de dados de sua entrada e saída são do tipo booleano, e a função representa uma função booleana contendo operações booleanas. Este modelo tem sido usado para muitos sistemas de controle puros sem entrada ou saída de dados suficientes. . Se você deseja processar dados, estenda o FSM para uma máquina de estado com datapath (FSM with Datapath, FSMD). Além disso, o modelo de máquina de estado pode ser estendido ainda mais para suportar hierarquia e simultaneidade. Este modelo é chamado de modelo FSM hierárquico/concorrente (HCFSM).
2.modelo de fluxo de dados
O modelo de fluxo de dados é um modelo derivado do modelo multitarefa concorrente. Este modelo descreve o comportamento do sistema como um conjunto de nós e arestas, onde os nós representam transformações e as arestas representam o fluxo de dados de um nó para outro nó. . Cada nó usa dados de suas arestas de entrada, realiza transformações e produz dados em suas arestas de saída.
Cada aresta pode ou não ter dados. Os dados que aparecem na aresta são chamados de token. Quando todas as arestas de entrada de um nó possuem pelo menos um token, o nó pode ser acionado. Após o nó ser acionado, um token de cada borda de entrada será utilizado, a transformação dos dados será realizada em todos os tokens utilizados e um token será gerado na borda de saída. O acionamento do nó depende apenas da ocorrência do token. .
A Figura 12-13 mostra o modelo de fluxo de dados para calcular z=(a+b)×(cd). Atualmente, existem diversas ferramentas comerciais que suportam a expressão de modelos de fluxo de dados em linguagens gráficas. Essas ferramentas podem converter automaticamente modelos de fluxo de dados em modelos multitarefas concorrentes para implementação em microprocessadores. O método de conversão consiste em converter cada nó em uma tarefa e cada borda em um canal. O método de implementação do modelo multitarefa simultâneo é usar um sistema operacional em tempo real para mapear tarefas simultâneas.
A Figura 12-14 é um modelo de fluxo de dados síncrono. Neste modelo, cada borda de entrada e borda de saída do nó são marcadas com o número de tokens usados e gerados para cada gatilho. A vantagem deste modelo é que ele não precisa ser convertido em um modelo multitarefa simultâneo durante a implementação. Em vez disso, os nós são escalonados de maneira estática para gerar um modelo de programa sequencial. O modelo pode ser expresso usando uma linguagem de programação sequencial (como a linguagem C) e pode ser executado sem um sistema operacional em tempo real, portanto sua eficiência de execução é maior.
3. Modelo de processo simultâneo
O modelo de processo simultâneo é composto por um grupo de processos. Cada processo é um processo de execução sequencial e cada processo pode ser executado simultaneamente. O modelo de processo simultâneo fornece operações para criar, encerrar, suspender, retomar e conectar processos. Os processos podem se comunicar entre si e trocar dados durante a execução. A comunicação entre processos pode assumir duas formas: variáveis compartilhadas e passagem de mensagens. Semáforos, seções críticas, tubos, expressões de caminho, etc. são usados para sincronizar as operações de processos simultâneos.
Em geral, um sistema de tempo real pode ser visto como um sistema composto por muitos processos executados simultaneamente, cada um dos quais com requisitos de tempo. Desta forma, muitos sistemas embarcados são mais facilmente descritos por um conjunto de tarefas executadas simultaneamente, porque esses próprios sistemas são sistemas multitarefa, e o modelo de processo simultâneo pode naturalmente ser implementado pela multitarefa de um sistema operacional em tempo real.
4.modelo orientado a objetos
O modelo de processo simultâneo tradicional é projetado em torno do conceito de processo. O processo é um conceito de nível de implementação. É uma simulação indireta de atividades no mundo objetivo. mundo objetivo. Não é natural e também torna os programas simultâneos difíceis de projetar e compreender.
O modelo orientado a objetos descreve as atividades no mundo objetivo de uma forma mais direta e há potencial capacidade de execução simultânea no modelo. Depois que um objeto envia uma mensagem para outro objeto, se o resultado do processamento da mensagem não for necessário ou não for necessário imediatamente, o primeiro não precisa esperar que o último processe a mensagem, e o remetente e o destinatário da mensagem podem executar simultaneamente.Nem todos os objetos estão em um estado passivo de prestação de serviços. Além de fornecer serviços por meio do recebimento de mensagens, alguns deles também podem ter seu próprio processamento de transações.
razão. Muitas vezes, um objeto pode lidar com várias mensagens ao mesmo tempo.
Um objeto é um encapsulamento de dados e operações. Os dados são armazenados nas variáveis locais do objeto. O estado do objeto é representado pelos valores de todas as variáveis locais do objeto em um determinado momento. Em um ambiente simultâneo, a descrição do estado simultâneo do objeto também deve ser considerada, pois o controle de simultaneidade do objeto é baseado no estado simultâneo do objeto. A combinação de simultaneidade e orientação a objetos pode ser resumida de duas maneiras:
(1) Introduzir o mecanismo de simultaneidade no modelo orientado a objetos, fazer pleno uso da tecnologia orientada a objetos para descrever a boa capacidade do modelo do mundo objetivo e várias características importantes da orientação a objetos e, ao mesmo tempo, descrever suas potenciais capacidades de simultaneidade , tornando-o adequado para descrever a computação simultânea.
(2) Introduzir o pensamento orientado a objetos no modelo de concorrência tradicional. Os modelos de simultaneidade orientados a objetos podem ser divididos em dois tipos: modelos de simultaneidade implícita e modelos de simultaneidade explícita.
(1) Modelo de simultaneidade implícita. Este modelo é caracterizado por adiar o projeto simultâneo e usar a modelagem de objetos como base para a modelagem. Antes de entrar na fase de execução, trate os objetos como unidades autônomas e as atividades de vários objetos como tarefas específicas concluídas de maneira simultânea ideal. Assim como cada objeto possui seu próprio processador, esse processador pode fornecer um thread de execução para o objeto. Os eventos externos que entram no sistema são considerados uma solicitação de processamento e são transmitidos para alguns objetos. Esses objetos fazem solicitações de processamento adicionais para outros objetos. Teoricamente, correspondendo a uma solicitação, qualquer número de objetos pode realizar o processamento correspondente. Durante a implementação, o escalonador determina, em última instância, a ordem das operações em seus objetos, conforme mostrado na Figura 12.15.
(2) Modelo de simultaneidade explícita. A característica deste modelo é que a simultaneidade deve ser considerada primeiro, e o conceito de simultaneidade e o conceito de objetos devem ser separados primeiro. Depois que o objeto é estabelecido, o conceito de processo suportado pelo sistema operacional em tempo real é usado para representar a simultaneidade, formando dois níveis abstratos de objeto e processo. Ou seja, primeiro decompondo o sistema em processos quase simultâneos como ponto de partida, e usando tecnologia orientada a objetos dentro de cada processo. As interações entre objetos são expressas como chamadas de função aninhadas e mecanismos de sincronização explícitos, como bloqueios, monitores e semáforos, são adicionados para garantir a integridade dos objetos. Esse modelo coloca os processos acima dos objetos e não há necessidade de considerar a simultaneidade ou a serialização de objetos nos objetos, conforme mostrado na Figura 12-16.
No início, o método de design de sistemas em tempo real era principalmente um método de design estruturado. Os sistemas que usavam métodos estruturados tinham grandes limitações em termos de reutilização e modificabilidade. O método de projeto de sistema em tempo real orientado a objetos obviamente tem vantagens óbvias nesses problemas. O método de design orientado a objetos mais prático é o método OCTOPUS da Nokia. Este método é baseado no OMT e no Método Fusion e propõe métodos para processar tempo de resposta do sistema em tempo real, domínio de tempo e simultaneidade, e propõe especificamente métodos para lidar com tempo real. tempo de resposta do sistema, domínio de tempo e aspectos de manipulação de simultaneidade, sincronização, comunicações, tratamento de interrupções, ASICs, interfaces de hardware, tempos de resposta ponta a ponta, etc. A abordagem OCTOPUS combina bem as principais fases do desenvolvimento de software, fornece uma transição estreita e natural da especificação para o modelo em execução e suporta o desenvolvimento incremental. O método OCTOPUS é um método de projeto típico que combina tecnologia atual orientada a objetos e sistemas de tempo real. Além disso, técnicas formais de desenvolvimento orientado a objetos e linguagens de modelagem estão sendo gradualmente aplicadas no estágio inicial da modelagem de sistemas em tempo real.
Antes de projetar, o designer deve saber o que projetar. Requisitos e especificações são frequentemente usados para descrever essas duas etapas relacionadas, mas distintas, do processo de design. Os requisitos são descrições informais do que os usuários desejam, enquanto as especificações são descrições mais detalhadas, precisas e consistentes que podem ser usadas para criar uma arquitetura de sistema. É claro que os requisitos e as especificações são representações externas do sistema de orientação e não representações internas. Existem dois tipos de requisitos: requisitos funcionais e requisitos não funcionais Os requisitos funcionais descrevem o que o sistema deve fazer, enquanto os requisitos não funcionais descrevem outros atributos do sistema, como tamanho físico, preço, consumo de energia, tempo de design, confiabilidade. espere.
A análise de requisitos para um sistema grande é uma tarefa complexa e demorada, mas obter uma pequena quantidade de informações em um formato claro e simples é um bom começo para compreender os requisitos do sistema. A Tabela 12-5 é um formulário de requisitos preenchido no início de um projeto e que pode ser usado como uma lista de verificação ao considerar as características básicas do sistema.
O conteúdo deste formulário de requisitos é preparado usando GPS (Global Position System, sistema de mapas móveis) como exemplo. O sistema de mapas móveis é um dispositivo portátil projetado para usuários que dirigem em rodovias ou usuários semelhantes. O dispositivo pode obter informações de localização do GPS e exibir a localização atual e mapas do terreno circundante para o usuário. Muda dependendo da localização do usuário e do dispositivo.
O documento mais importante durante a fase de análise de requisitos são as especificações do sistema.
Uma especificação é um documento técnico que reflete com precisão as necessidades do cliente e serve como requisitos que devem ser seguidos durante o projeto. No processo de desenvolvimento de software, as especificações são muito importantes. Os analistas de sistema aceitam os requisitos do usuário e geram especificações para o sistema de software alvo. Os designers e codificadores projetam os módulos de acordo com as especificações e, finalmente, geram os códigos do programa. As especificações devem ser claras e inequívocas, caso contrário o sistema construído a partir das especificações poderá não atender aos requisitos reais.
Atualmente, o método mais popular na indústria é usar UML para descrever especificações. UML é uma linguagem de modelagem padrão universal que pode modelar qualquer sistema com estrutura estática e comportamento dinâmico. A UML é adequada para diferentes estágios do processo de desenvolvimento do sistema, desde a especificação de requisitos até o teste após a conclusão do sistema. A Figura 12-17 é um exemplo de especificação de máquina de estados mostrando que as operações inicial e final são estados especiais, e os estados na máquina de estados representam diferentes operações conceituais.
Na fase de análise de requisitos, os requisitos do usuário são capturados por meio de casos de uso. Através da modelagem de casos de uso, descrever os atores externos interessados no sistema e seus requisitos funcionais para o sistema (casos de uso). A fase de análise preocupa-se principalmente com os principais conceitos (como abstrações, classes, objetos, etc.) e mecanismos no domínio do problema. É necessário identificar essas classes e seus relacionamentos e descrevê-las com diagramas de classes UML. Durante a fase de análise, apenas os objetos (conceitos do mundo real) do domínio do problema são modelados, sem considerar as classes que definem os detalhes técnicos do sistema de software (como classes que tratam de questões como interfaces de usuário, bancos de dados, comunicação, e paralelismo).
Atualmente, as ferramentas de projeto de sistemas embarcados podem ser divididas em duas categorias: ferramentas de síntese colaborativa e ferramentas de simulação colaborativa.
(1) Ferramentas de síntese colaborativa. Atualmente, as principais ferramentas de síntese colaborativa utilizadas para desenvolvimento embarcado incluem POLIS, COSYMA e Chinook.
POLIS: POLIS é uma estrutura de co-design de software e hardware para sistemas embarcados interativos desenvolvida pela UC-Berkeley. É adequada para o projeto de pequenos sistemas de controle. A descrição do sistema suporta linguagem baseada em FSM (Finite State Machine). Como tanto o software quanto o hardware podem ser obtidos de forma transparente a partir da mesma descrição do CFSM, a flexibilidade do espaço de design também é aumentada. A simulação colaborativa usando PTOLEMY é suportada nas camadas de descrição e implementação. é limitado, ou seja, os CFSMs de hardware são cercados por apenas um processador e não suportam memória compartilhada.
COSYMA: COSYMA é uma plataforma desenvolvida pela empresa alemã IDA para explorar o processo de síntese de co-design de hardware e software. Possui uma descrição relativamente simples para sistemas de software, suporta segmentação automática e síntese de coprocessador e pode explorar o espaço de design. durante o período de síntese, a síntese do sistema depende de limitações de hardware e não suporta módulos de simultaneidade, ou seja, apenas um thread pode ser executado por vez. A arquitetura também é limitada e não suporta verificação formal. depende de particionamento e técnicas de estimativa de custos.
Chinook: Chinook é projetado para sistemas de controle. A descrição de todo o sistema é fornecida ao Chinook como uma entrada. Seu modelo interno é baseado em um modelo hierárquico de estado. todo o design. Chinook Suporta uma variedade de arquiteturas de sistema, especialmente arquiteturas de multiprocessadores. Ele também suporta a descrição de restrições de tempo. Ele pode sintetizar uma variedade de interfaces, incluindo interfaces de software e hardware entre sistemas. Ele pode sintetizar drivers de dispositivos diretamente de gráficos de temporização e controlar a comunicação entre processadores.
(2) Ferramentas de simulação colaborativa. A simulação colaborativa é um aspecto crucial no projeto de sistemas embarcados. Após a conclusão de todo o projeto do sistema, é necessário simular diferentes tipos de componentes em uma estrutura unificada. A simulação colaborativa não apenas fornece verificação, mas também fornece aos usuários informações de desempenho de cada sistema. , o que ajuda a propor alterações nas fases iniciais do sistema sem causar grandes prejuízos. Atualmente, existem duas principais ferramentas de simulação colaborativa:
PTOLEMY: A ideia principal do PTOLEMY é misturar modelos de computação com kernels orientados a objetos. Ele pode ser usado para simular uma variedade de sistemas e é amplamente utilizado em várias aplicações, mas não é adequado para simulação de hardware. também uma de suas funções. TSS: TSS (Ferramenta para Simulação de Sistema) é uma ferramenta para simular hardware complexo. Ela é escrita em linguagem C. A extração de módulos individuais pode ser controlada pelo usuário e os módulos podem ser facilmente adicionados e excluídos. Porém, módulos hierárquicos não são suportados e não há mecanismo para sincronizar o acesso a estruturas de dados compartilhadas por cada processador. A comunicação entre módulos é realizada através de portas e barramentos. Além disso, o TSS suporta a simulação de sistemas multi-core.
1.Projeto de arquitetura do sistema
Descrever como o sistema implementa as funções definidas na especificação é o objetivo principal do projeto da arquitetura do sistema. No entanto, ao projetar a estrutura de um sistema embarcado, é difícil separar completamente software e hardware. A abordagem usual é considerar primeiro a arquitetura de software do sistema e depois considerar sua implementação de hardware. A descrição da arquitetura do sistema deve atender aos requisitos funcionais e não funcionais. Não apenas a funcionalidade necessária deve ser implementada, mas também as restrições não funcionais, como custo, velocidade, consumo de energia, etc. É um método prático para considerar e refinar os elementos funcionais no diagrama de blocos original do sistema, um por um, e converter o diagrama de blocos original em uma estrutura de sistema de software e hardware, levando em consideração as restrições não funcionais. A seguir, tomamos o projeto arquitetônico do sistema de mapas móveis GPS como exemplo para ilustrar.
(1) Diagrama de blocos original. Conforme mostrado na Figura 12-18, este diagrama de blocos original é a principal operação e fluxo de dados do sistema de mapas móvel.
(2) Arquitetura do sistema de software. Conforme mostrado na Figura 12-19, o sistema de software consiste principalmente em uma interface de usuário, mecanismo de busca de banco de dados e conversor de dados.
(3) Arquitetura do sistema de hardware. Conforme mostrado na Figura 12-20, o sistema de hardware consiste em um microprocessador de uso geral, memória e dispositivos de E/S. Este sistema seleciona dois tipos de memória: dados gerais, memória de programa e memória buffer de quadros para exibição de pixels.
2.Projeto de subsistema de hardware
O ambiente de desenvolvimento de sistemas embarcados consiste em 4 partes: plataforma de hardware alvo, sistema operacional embarcado, linguagem de programação e ferramentas de desenvolvimento. Entre elas, a seleção do processador e do sistema operacional deve considerar mais fatores para evitar decisões erradas que afetem o andamento do projeto. .
(1) Selecione a tecnologia do processador. Um grande desafio no projeto de sistemas embarcados é como otimizar simultaneamente especificações de projeto concorrentes. Os projetistas devem fazer concessões entre várias tecnologias de processador e tecnologias de IC. De um modo geral, a tecnologia de processador não tem nada a ver com a tecnologia IC, ou seja, qualquer tecnologia de processador pode ser implementada usando qualquer tecnologia IC, mas o desempenho, custo NRE, consumo de energia, tamanho e outros indicadores do dispositivo final serão muito diferente, como mostrado na Figura 12-21.
Uma tecnologia programável mais versátil proporciona maior flexibilidade, reduz os custos de NRE e permite protótipos de produtos e tempos de lançamento mais rápidos. A tecnologia personalizada pode proporcionar menor consumo de energia, melhor desempenho, menor tamanho e menor custo para produção em alto volume.
Normalmente, quando uma empresa deseja lançar um produto, como um decodificador, um roteador doméstico ou um processador de uso geral, ela pode primeiro lançar um produto semipersonalizado para conquistar o mercado o mais rápido possível e, em seguida, lançar um produto totalmente personalizado. Você também pode primeiro usar tecnologia antiga mais confiável para implementar o processador e, em seguida, usar a nova tecnologia de processo para implementar a próxima geração. Da mesma forma, os projetistas de sistemas embarcados podem usar dispositivos programáveis para construir protótipos para acelerar o tempo de lançamento no mercado e, em seguida, usar dispositivos personalizados para produção em volume. Com base nesses princípios, os projetistas podem fazer escolhas razoáveis sobre a tecnologia do processador e o processador utilizado. Geralmente, um "software de processador universal" totalmente personalizável e disponível comercialmente é uma opção adequada para a maioria das situações.
(2) Seleção de processador embarcado geral. Escolha um processador embarcado de uso geral adequado com base nas necessidades do usuário e do projeto. Os seguintes indicadores precisam ser considerados ao selecionar.
Velocidade do processador. O desempenho de um processador depende de muitos fatores: frequência do clock, tamanho dos registradores internos, se as instruções processam todos os registradores igualmente, etc. Para muitos projetos de sistemas embarcados que exigem um processador, o objetivo não é escolher o processador mais rápido, mas escolher o processador e o subsistema de E/S que possam realizar o trabalho. O desempenho do processador atende às necessidades do sistema e tem uma certa margem, mas não há necessidade de escolhê-la muito alta. Indicadores técnicos. Atualmente, muitos processadores embarcados integram as funções de dispositivos periféricos, reduzindo assim o número de chips e reduzindo assim o custo de desenvolvimento de todo o sistema. A primeira coisa que os desenvolvedores consideram é se parte do hardware exigido pelo sistema pode ser conectado ao processador sem lógica combinatória excessiva. Em segundo lugar, considere alguns chips de suporte do processador, como controlador DMA, gerenciador de memória, controlador de interrupção, dispositivo serial, relógio, etc. A familiaridade do desenvolvedor com o processador significa que o desenvolvedor do projeto precisa fazer uma compensação entre o custo do processador em si e o custo de desenvolvimento.
Se a função de E/S do processador atende às necessidades do sistema, ou seja, muitos processadores fornecem dispositivos externos integrados para reduzir o número de chips e reduzir custos. Esta solução deve ser considerada tanto quanto possível. Ferramentas de suporte de software relevantes para o processador, ou seja, se o processador possui suporte completo para sistemas operacionais embarcados, linguagens de programação e ferramentas de desenvolvimento, etc.
A depuração do processador refere-se a se o processador possui funções de depuração integradas, como se ele suporta JTAG, BDM e outros métodos de depuração. Credibilidade de suporte do fabricante do processador. Ao escolher um determinado processador durante o ciclo de vida do produto, os projetistas devem confirmar se ele possui fornecimento suficiente, suporte técnico, etc. O baixo consumo de energia do processador.
O maior e mais rápido mercado de microprocessadores incorporados é o de produtos eletrônicos de consumo, como dispositivos portáteis, blocos de notas eletrônicos, PDAs, telefones celulares, navegadores GPS e eletrodomésticos inteligentes. Os microprocessadores adquiridos nesses produtos são normalmente caracterizados por altos requisitos. Baixo consumo de energia. Muitos fabricantes de CPU já entraram neste campo.
(3) Precauções para projeto de hardware. Primeiro, divida o hardware em componentes ou módulos e desenhe um diagrama de blocos das conexões dos componentes ou módulos. Em segundo lugar, refine cada módulo e divida o sistema em partes mais gerenciáveis que possam ser implementadas de forma independente. Normalmente, algumas funções do sistema podem ser implementadas tanto em software quanto em hardware. Não existe um método unificado para orientar o projetista na decisão da alocação de funções em software e hardware, mas uma compensação entre desempenho e custo pode ser feita com base no. lista de restrições. Ao projetar a interface entre software e hardware, os projetistas de hardware e de software precisam trabalhar juntos para concluí-la. Um bom design de interface pode garantir que o hardware seja simples e fácil de programar. Os seguintes pontos precisam ser observados ao projetar.
Em suma, os projetistas de hardware devem fornecer aos projetistas de software informações cada vez mais detalhadas para facilitar o projeto e o desenvolvimento de software.
3.Projeto de subsistema de software
De acordo com o documento de especificação na fase de análise de requisitos, determine o modelo de cálculo do sistema e conduza um projeto razoável da parte do software.
(1) Seleção do sistema operacional. Ao escolher um sistema operacional embarcado, você precisa considerar vários aspectos:
Funções do sistema operacional. Selecione os produtos do sistema operacional com base nas funções do sistema operacional exigidas pelo projeto. Considere se o sistema suporta todas ou parte das funções do sistema operacional, se suporta sistemas de arquivos, interfaces homem-máquina, se é um sistema em tempo real. ou um sistema de time-sharing, e se o sistema pode ser reduzido, etc.
Seleção de ferramentas de apoio ao desenvolvimento. Alguns sistemas operacionais de tempo real (rtos) oferecem suporte apenas às ferramentas de desenvolvimento do fornecedor do sistema. Em outras palavras, você também deve obter um compilador, depurador, etc. do fornecedor do sistema operacional. Alguns sistemas operacionais são amplamente utilizados e ferramentas de terceiros estão disponíveis, portanto a escolha é mais ampla. Como é fácil portar o sistema operacional. A portabilidade do sistema operacional para hardware é uma questão importante. É um fator chave relacionado à possibilidade de todo o sistema ser concluído dentro do prazo. Portanto, sistemas operacionais com alto grau de portabilidade devem ser selecionados para evitar diversas dificuldades causadas pela dificuldade de portar o sistema operacional para hardware e acelerar o progresso do desenvolvimento. do sistema. Quais são os requisitos de memória do sistema operacional. Considere se é necessária memória RAM ou eeprom adicional para atender aos maiores requisitos de memória do sistema operacional. Alguns sistemas operacionais possuem requisitos de memória específicos de destino. Tal como tornado/vxworks, os desenvolvedores podem alocar os recursos necessários de acordo com as necessidades do aplicativo, em vez de alocar recursos para o sistema operacional. Os desenvolvedores podem escolher entre até 80 configurações diferentes, desde designs embarcados que exigem vários kilobytes de memória até aplicativos complexos de alta tecnologia em tempo real que exigem mais funcionalidade do sistema operacional.
Pacotes complementares do sistema operacional. Se contém os componentes de software necessários, como pilhas de protocolos de rede, sistemas de arquivos, drivers para vários periféricos comumente usados, etc. Quão em tempo real é o sistema operacional? O tempo real é dividido em tempo real suave e tempo real difícil. Alguns sistemas operacionais incorporados só podem fornecer desempenho suave em tempo real. Por exemplo, o Microsoft Windows CE 2.0 é um sistema operacional de 32 bits, compatível com Windows, microkernel e escalonável em tempo real que pode atender às necessidades da maioria dos sistemas operacionais incorporados e não incorporados. formulários.No entanto, o desempenho em tempo real não é forte o suficiente e é uma operação incorporada suave em tempo real.
sistema operacional. Quão flexível é o sistema operacional? Se o sistema operacional pode ser adaptado, ou seja, se as funções do sistema podem ser adaptadas de acordo com as necessidades reais. Alguns sistemas operacionais têm forte adaptabilidade, como Linux incorporado, tornado/vxworks, etc.
(2) Escolha da linguagem de programação. Ao escolher uma linguagem de programação, você também precisa considerar vários aspectos:
Versatilidade. Com o desenvolvimento contínuo da tecnologia de microprocessadores, suas funções estão se tornando cada vez mais especializadas e existem cada vez mais tipos. No entanto, diferentes tipos de microprocessadores possuem sua própria linguagem assembly dedicada. Isso configura um enorme obstáculo para os desenvolvedores de sistemas, tornando a programação do sistema mais difícil e a reutilização de software impossível de ser alcançada. As linguagens de alto nível geralmente têm menos contato com a estrutura de hardware de máquinas específicas. estão disponíveis para a maioria dos microprocessadores. Bom suporte e boa versatilidade.
portabilidade. Como a linguagem assembly está intimamente relacionada a um microprocessador específico, um programa projetado para um determinado microprocessador não pode ser transplantado diretamente para outro microprocessador de tipo diferente. Linguagens de alto nível são comuns a todos os microprocessadores, portanto os programas podem ser executados em diferentes microprocessadores e são mais portáveis. Esta é a base para a reutilização de software. eficácia. De modo geral, quanto mais alto nível for a linguagem, maior será o compilador e a sobrecarga, e maior e mais lenta será a aplicação. No entanto, depender apenas de linguagens de baixo nível, como a linguagem assembly, para desenvolver aplicações traz problemas como programação complexa e longos ciclos de desenvolvimento. Portanto, há uma compensação entre o tempo de desenvolvimento e o desempenho do tempo de execução.
Manutenção. Linguagens de baixo nível, como linguagem assembly, não são passíveis de manutenção. Os programas de linguagem de alto nível geralmente têm design modular e as interfaces entre cada módulo são fixas. Portanto, quando ocorre um problema no sistema, o problema pode ser localizado rapidamente em um determinado módulo e resolvido o mais rápido possível. Além disso, o design modular também facilita a expansão e atualização das funções do sistema.
Desempenho básico. Existem muitos tipos de linguagens usadas no processo de desenvolvimento de sistemas embarcados. As linguagens de alto nível mais amplamente utilizadas incluem Ada, C/C++, Modula-2 e Java, etc. A linguagem Ada é estritamente definida, fácil de ler e entender e conta com um rico suporte de programas de biblioteca. Atualmente, é amplamente utilizada na defesa nacional, aviação, aeroespacial e outras áreas afins, e ainda ocupará uma posição importante nessas áreas no. futuro. A linguagem C tem amplo suporte a programas de biblioteca e é a linguagem de programação mais amplamente usada em sistemas embarcados. Ela ainda ocupará uma posição importante no campo de aplicações de sistemas embarcados por muito tempo. C++ é uma linguagem de programação orientada a objetos que também é amplamente utilizada no projeto de sistemas embarcados, como GNU C++. Visual C++ é um ambiente de desenvolvimento integrado que suporta programação visual e é amplamente utilizado no desenvolvimento de programas GUI. No entanto, em comparação com C++, o código-alvo do C++ é frequentemente maior e mais complexo. Este fator deve ser totalmente considerado em aplicações de sistemas embarcados.
(3) Processo de desenvolvimento de software. O processo de desenvolvimento de software embarcado é diferente do processo de desenvolvimento de software geral. Inclui principalmente as seguintes etapas:
(4) Documentos de desenvolvimento de software. No processo de desenvolvimento e design de produtos embarcados, a etapa de desenvolvimento completa a implementação dos produtos do sistema. Esta etapa também requer o preenchimento de uma série de documentos. Esses documentos são muito importantes para a conclusão do projeto e manutenção do produto. , tarefas técnicas, etc. documentos, relatórios de planos técnicos, especificações de produtos, condições técnicas, instruções de projeto, relatórios de teste, relatórios resumidos, etc.
Normalmente, o teste de sistema embarcado inclui principalmente três partes: teste de software, teste de hardware e teste de unidade. Os testes gerais de hardware do sistema incluem testes de confiabilidade e testes de compatibilidade eletromagnética. Atualmente, existem padrões nacionais e internacionais obrigatórios para compatibilidade eletromagnética.
Os métodos e princípios de teste do software de sistema embarcado são basicamente os mesmos dos testes de software geral. Ao testar software, geralmente são necessárias instâncias de teste ou sequências de teste. é uma sequência de teste padrão. Não importa o tipo de instância de teste, a instância deve ser capaz de encontrar mais erros com alta probabilidade, mas existem algumas diferenças no conteúdo do teste:
(1) O software incorporado deve funcionar de forma estável por um longo tempo.
(2) O software incorporado geralmente não passa por atualizações de versão frequentes.
(3) O software incorporado é geralmente usado em aplicações críticas.
(4) O software incorporado deve ser responsável pela falha e confiabilidade do produto juntamente com o hardware incorporado.
(5) As condições do mundo real são assíncronas e imprevisíveis, tornando os testes de simulação muito difíceis.
Devido a essas diferenças, o teste de software de sistema embarcado concentra-se principalmente nos quatro aspectos diferentes a seguir:
(1) Como o tempo real e a simultaneidade são difíceis de satisfazer ao mesmo tempo, a maioria dos testes concentra-se em testes em tempo real.
(2) A maioria dos sistemas em tempo real tem restrições de recursos e, portanto, exige mais testes de desempenho e usabilidade.
(3) A cobertura do código pode ser testada usando ferramentas dedicadas de rastreamento em tempo real.
(4) O nível de teste de confiabilidade é muito superior ao do software geral.
Além disso, o teste de desempenho também é uma das atividades de teste mais importantes que precisam ser concluídas no projeto de sistemas embarcados e tem um impacto decisivo nos sistemas embarcados.
Devido às características especiais dos sistemas embarcados, o sistema possui várias plataformas de hardware e plataformas de software, cada uma das quais é especialmente projetada para diferentes aplicações. Portanto, o software aplicativo raramente é universal entre várias plataformas e sistemas embarcados A velocidade de atualização é relativamente rápida. A fim de proteger os investimentos existentes, utilizar plenamente os recursos de software existentes e acelerar o desenvolvimento de produtos, o transplante de software tornou-se muito frequente no campo incorporado.