Domanda

Ho una base di codice esistente destinata a un ambiente Windows e con un occhio al futuro, vorrei renderlo il più possibile multipiattaforma. Ho avuto qualche successo con le distribuzioni standard di Linux usando librerie multipiattaforma, ma vorrei estenderlo a Realtime e / o sistemi operativi integrati.

Sarebbe possibile eseguire il porting della maggior parte della base di codice su tali sistemi o richiederebbe reimpianti mirati a quell'ambiente? Se è necessario ricreare parti, lo sviluppo di questi sistemi richiede un diverso tipo di approccio progettuale? Alcuni fornitori forniscono i propri IDE per lo sviluppo, sono una necessità o possiamo o è possibile standardizzare un processo di generazione del tipo di toolchain GNU?

Una potenziale buca potrebbe essere la differenza nella gestione dell'IPC, ma senza ulteriore esposizione è difficile avere una conoscenza delle specifiche.

NB sebbene al momento basato su Windows, non vi è un uso particolarmente pesante dell'API Win32 (principalmente COM) o dei tipi di Windows.

Grazie

modifica :: la base di codice è C \ C ++

È stato utile?

Soluzione

Se si utilizza l'interfaccia COM di Windows (suppongo che qui non si stia parlando della porta seriale, ma del Common Object Model), potrebbe essere necessario estrarre il codice da quello.

Mentre parli di IPC, ovviamente questa è una base di codice di tipo multi-tasking / multi-elaborazione. Stando così le cose, dovrai in qualche modo trovare un modo per affrontare la differenza di ambiente.

Prima di tutto, avrai bisogno di una sorta di RTOS poiché la tua applicazione è multi-tasking. Dato che hai effettuato il porting su Linux, potresti voler esaminare l'utilizzo di una versione di Linux in tempo reale. Ciò ridurrebbe al minimo il numero di porte che dovresti fare.

Se non si desidera utilizzare Linux come piattaforma incorporata, rendere il codice POSIX conforme (Linux è) e assicurarsi che l'RTOS scelto supporti POSIX. In questo modo, la porta per Linux e la piattaforma integrata sarebbero per lo più le stesse.

In conclusione, COM sarà il tuo albatros.

Dato che non menzioni l'uso di una GUI, non affronteremo quella lattina di worm :)

Altri suggerimenti

Se l'app è principalmente C e posix, non è troppo difficile. Le piattaforme integrate oggi possono significare una copia quasi completa di XP o Linux in esecuzione su una scheda flash compatta.

Per la GUI sia QT che WX hanno versioni integrate che disegnano direttamente i widget.

Il passo più importante è separare tutte le funzioni di dipendenza del sistema operativo dalla logica del progetto.

Dopo averlo fatto, vedrai immediatamente quanto codice devi trasferire per la migrazione al nuovo sistema operativo e sarai in grado di iniziare il porting in modo corretto.

Dipende dalle capacità della tua piattaforma integrata. Se è un 8 bit, hai una strada da percorrere ma se è 32 bit con RAM decente e simili, ci sono molte librerie multipiattaforma open source disponibili.

Ho usato DirectFB per la mia ultima app GUI integrata, era leggera e OK ma non multipiattaforma . La prossima volta penso che proverò wxWidgets .

Non mi piace usare gli strumenti di sviluppo GNU su Windows poiché MS Dev Studio è molto più bello di qualsiasi altro strumento GNU, ma recentemente ho giocato con Wascana Desktop Developer che si basa su Eclipse e GCC e mostra promesse.

Se sei in grado di specificare quale sistema operativo in tempo reale / incorporato usi, hai considerato Windows CE?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top