Suggerimenti per la lingua (migliore) più appropriata per programmare un sistema incorporato? [chiuso]

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

  •  19-08-2019
  •  | 
  •  

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.

È stato utile?

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

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