software portabilidade do Windows para embedded / Sistemas operacionais em tempo real

StackOverflow https://stackoverflow.com/questions/106581

  •  01-07-2019
  •  | 
  •  

Pergunta

Eu tenho uma base de código existente visando um ambiente Windows e com um olho para o futuro, gostaria de fazer isso como plataforma cruzada possível. Eu tive algum sucesso com distribuições Linux padrão usando bibliotecas de plataforma cruzada, mas gostaria de estender isso para Realtime e ou incorporado sistemas operacionais.

Seria possível para a porta a maior parte da base de código a tais sistemas, ou será que exigem reimplentations direcionados a esse ambiente? Se as peças precisam ser recriadas, faz desenvolvimento para estes sistemas exigem um tipo diferente de abordagem de design? Alguns fornecedores fornecer seu próprio IDE é para o desenvolvimento, são estes a necessidade ou podemos ou é possível padronizar um GNU toolchain processo tipo de compilação?

Um buraco potencial poderia ser diferenças no manuseamento IPC, mas sem mais exposição é difícil obter uma alça sobre as especificidades.

NB embora o Windows baseado atualmente, não há uso particularmente pesado do Win32 API (principalmente COM) ou tipos de Windows.

Graças

editar :: a base de código é C \ C ++

Foi útil?

Solução

Se você estiver usando as janelas COM Interface (presumo que não estamos falando de porta serial aqui, mas o objeto Common Model), seu código pode precisar ser resumido longe disso.

Como você falar sobre IPC, então, obviamente, este é um / base de código tipo de processamento multi-multi-tasking. Sendo esse o caso, você terá de vir de algum modo acima com uma maneira de lidar com a diferença de ambiente.

Em primeiro lugar, você precisam de algum tipo de RTOS desde a sua aplicação é multi-tasking. Como você fez um port para Linux, você pode querer olhar em usar uma versão de tempo real Linux. Isso seria minimizar o número de portas que você teria que fazer.

Se você não quiser usar o Linux como sua plataforma incorporada, faça o seu código compatível com POSIX (Linux é) e certifique-se de que o RTOS você escolhe suporte POSIX. Desta forma, a porta para o Linux ea plataforma embarcada seria basicamente o mesmo.

A linha inferior, COM serão seus albatros.

Uma vez que você não menciona o uso de uma GUI, não vamos endereço que lata de vermes:)

Outras dicas

Se o aplicativo é principalmente C e posix, então não é muito difícil. plataformas embarcadas hoje pode significar uma cópia quase completa do XP ou Linux rodando em um cartão de memória flash compacto.

Para o gui tanto QT e WX tem incorporado versões que extraem os widgets diretamente.

O passo mais importante é separar todas as funções de dependência OS a partir da lógica do projeto.

Depois de fazer isso, você vai ver imediatamente a quantidade de código que você tem a porta para a migração para o novo sistema operacional, e você será capaz de começar a portar bem.

Depende das capacidades de sua plataforma incorporado. Se é um 8-bit, você tem um caminho difícil pela frente, mas se é de 32 bits com RAM decente e tal, há um monte de bibliotecas multi-plataforma de código aberto disponível.

DirectFB para o meu último aplicativo GUI incorporado, foi leve e OK, mas não multi-plataforma . Da próxima vez eu acho que vou experimentar wxWidgets .

Eu não gosto de usar ferramentas de desenvolvimento GNU no Windows desde MS Dev Studio é sooo muito melhor do que quaisquer ferramentas GNU mas recentemente eu fui brincar com Wascana desktop desenvolvedor que é baseado no Eclipse e GCC e mostra prometo.

Se você está na posição de especificar quais realtime / OS embutido que você usa, você já pensou em Windows CE?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top