Suggerimenti per la lingua (migliore) più appropriata per programmare un sistema incorporato? [chiuso]
Domanda
Sto cercando di eseguire la codifica integrata per un dispositivo a circa 20 MHz, con 6 MB di RAM, con un processore ARM32. Qualcuno può suggerire il linguaggio migliore / più appropriato per programmare un sistema incorporato? Sto considerando:
- Lua
- TinyPy
- C
- Java ME
- C #
- qualcuno ha suggerito JavaScript
Qualche suggerimento? Grazie
Modifica: sembra che C e Lua siano i vincitori. Saluti a tutti!
Modifica - Il tempo reale non è un problema, è più il limitato ram / cpu che detta le cose.
Soluzione
Ho ho usato Lua su un processore ARM OMAP . La stretta integrazione di Lua con C consente di accedere al metallo ogni volta che è necessario e le sue dimensioni ridotte lo rendono adatto a un'ampia gamma di piattaforme. Ho sviluppato l'interfaccia utente per il mio firmware in Lua sul mio mac e poi l'ho portata sulla piattaforma integrata senza modifiche.
Mentre il processore OMAP era abbastanza robusto da eseguire altre lingue come Java o Python, non sapevo quale hardware stavo prendendo di mira quando ho avviato il codice. Lua è stata una scommessa sicura.
Altri suggerimenti
Se stai sollevando il dispositivo da zero o interfacciati direttamente con periferiche non standard, C è davvero l'unica strada da percorrere.
Se hai già un sistema operativo incorporato o puoi portarlo senza difficoltà, potresti avere una maggiore flessibilità nell'aggiunta di uno dei più linguaggi script-y. C # è fuori discussione a meno che tu non sia su WinCE e quindi sarai limitato a .NET Micro.
Oltre a ciò, "best " ha poco significato senza descrivere a cosa servirà il tuo dispositivo. Alcune lingue offrono un supporto migliore per determinati compiti rispetto ad altre.
C è probabilmente la soluzione migliore per risorse CPU così limitate.
Sarei tentato di andare con C dritto, ma poi scrivo C da quasi 30 anni. Lua e TinyPy mi sembrano troppo nuovi, sperimentali; i dispositivi integrati devono essere molto robusti.
Java ME ha buoni punti. Non so di C # in un mondo incorporato.
È importante specificare cosa ti aspetti che faccia questo dispositivo. È una specie di applicazione di controllo? Deve implementare algoritmi? Che dire del supporto in virgola mobile? GUI? Le prestazioni sono fondamentali? Stai pensando di utilizzare un sistema operativo?
Rispondere a queste domande è un prerequisito fondamentale per scegliere un linguaggio di programmazione.
Detto questo, i sistemi embedded devono essere affidabili, quindi sceglierei una soluzione testata. C è probabilmente l'opzione più solida e meglio supportata per i chip ARM, ma YMMV a seconda delle esigenze specifiche.
C è sicuramente il linguaggio più utilizzato nei sistemi embedded. Sembra anche essere la lingua più parlata in generale http://www.langpop.com/
Modifica: hmm. Ho appena notato che l '"incorporato" che sembra descrivere non riguarda l'aggiunta di un linguaggio di automazione a un'applicazione, ma la compressione di un'applicazione in una piattaforma integrata. Come altri suggeriscono, a meno che tu non ne abbia davvero bisogno, salta le lingue incorporabili e programma la tua applicazione in C. Non c'è quasi nessun sovraccarico di runtime per quello, tranne per quello che effettivamente usi.
In nessun ordine particolare, Lua, JavaScript e TCL sono tutti abbastanza adatti all'incorporamento. Lua è stata la più semplice da incorporare. Javascript potrebbe essere il più veloce. Tutti e tre hanno una buona gestione per il codice non attendibile, ma il TCL è il più affidabile, ad esempio, il codice non attendibile può eseguire codice non attendibile (se si ritiene che faccia così tanto).
A meno che non sia disponibile un RTOS che supporti una varietà di lingue alternative, C o C ++ (a seconda della catena del compilatore) è la strada da percorrere.
È molto probabile che la tua decisione sia determinata dagli strumenti disponibili per questo processore.
C è di gran lunga il linguaggio più supportato per i processori embedded, quindi non puoi sbagliare molto e sarà una buona esperienza se in futuro dovessi scrivere software per altri chip.
C ++ sta diventando sempre più popolare per i sistemi embedded. Oltre a ciò, dipende dalle tue priorità (time to market, utilizzo delle risorse, velocità) e dalla qualità degli strumenti che usi.
C il migliore