2009-03-16 8 views
7

Sto guardando fare codifica incorporata per un dispositivo che è di circa 20 MHz, ha 6 mb ram, con un processore ARM32. Qualcuno può suggerire il linguaggio migliore/più appropriato per programmare un sistema embedded? Sto pensando:Suggerimenti per la lingua più appropriata (migliore) per la programmazione di un sistema embedded?

  • Lua
  • TinyPy
  • C
  • Java ME
  • C#
  • qualcuno ha suggerito JavaScript

Qualche suggerimento? Grazie

Modifica - sembra che C e Lua siano i vincitori. Saluti tutti!

Modifica - Il tempo reale non è un problema, è più limitato a ram/cpu che dettano le cose.

risposta

4

Ho used Lua on an ARM OMAP processor. 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 portato alla piattaforma integrata senza modifiche.

Mentre il processore OMAP era abbastanza potente da eseguire altri linguaggi come Java o Python, non sapevo quale hardware stavo puntando quando ho avviato il codice. Lua era una scommessa sicura.

4

Sarei tentato di andare con C dritto, ma poi ho scritto C per quasi 30 anni. Lua e TinyPy mi sembrano troppo nuove, sperimentali; i dispositivi embedded devono essere molto robusti.

Java ME ha buoni punti. Non so di C# in un mondo embedded.

+1

Ancora un linguaggio di scripting potrebbe comportare il codice più robusto per le stesse ragioni lo fa server-terra: l'aritmetica dei puntatori e la gestione della memoria rimossi dalla lista del programmatore delle responsabilità . – slim

+0

No, significa solo che la responsabilità è stata trasferita ai codificatori del linguaggio di scripting, aggiungendo il problema degli errori di digitazione dinamica. Se l'implementazione di Lua o TinyPy fosse priva di bug, avresti ragione, a conti fatti, ma sono terribilmente nuovi per me da fidarmi. –

+1

Lua esiste dal '93 (pubblicato nel '94) e il motore è open source. Direi che è altrettanto affidabile di molti compilatori per C e C++. – patros

6

C è probabilmente la soluzione migliore per tali risorse CPU limitate.

+2

Non dimenticate che le persone erano solite scrivere applicazioni perfettamente funzionanti in BASIC su processori da 2 MHz a 8 bit 6502 con 16K di RAM. Se è necessario spremere fino all'ultimo livello di prestazioni, utilizzare C - ma l'hardware descritto non esclude gli interpreti. – slim

+0

Sono d'accordo, ho appena risposto con la risposta più sicura poiché l'OP non ha dato alcuna indicazione su ciò che volevano realmente fare con il dispositivo. – patros

+0

Per un processore embedded, avere 6 Mb è lungi dall'essere limitato. Ad esempio, il PIC10F più piccolo ha 16 byte di RAM e 384 byte di flash. Per questo, si programma in assembler. :-) –

1

Modifica: hmm. Ho appena notato che l''embedded' che sembra descrivere non riguarda l'aggiunta di un linguaggio di automazione a un'applicazione, ma la spremitura di un'applicazione in una piattaforma integrata. Come altri suggeriscono, a meno che non ne abbiate realmente bisogno, ignorate le lingue incorporabili e programmate la vostra applicazione in C. Non c'è quasi nessun sovraccarico di runtime per questo, tranne per quello che effettivamente usate.

In nessun ordine particolare, Lua, JavaScript e TCL sono tutti abbastanza adatti per l'incorporamento. Lua è stata la più facile da incorporare per me. Javascript potrebbe essere il più veloce. Tutti e tre hanno una buona gestione del codice non affidabile, ma TCL è il più robusto, ad esempio il codice non affidabile può eseguire codice non affidabile (se si ritiene che sia così).

+0

Javascript - questa è un'idea interessante! Come sarebbe? – Chris

+0

beh, non ho provato nulla di più recente di spidermonkey di qualche anno fa, ma è piuttosto semplice, a patto che non sia necessario sovrascrivere l'oggetto globale. Questo mi ha confuso notevolmente. – SingleNegationElimination

8

Se si sta sollevando il dispositivo da zero o si interfaccia direttamente con periferiche non standard, C è davvero l'unica via da percorrere.

Se hai già un sistema operativo integrato o ne puoi effettuare il porting senza difficoltà, potresti avere una maggiore flessibilità nell'aggiungere uno dei linguaggi più script-y. C# è fuori questione a meno che tu non sia su WinCE, e quindi sarai limitato a .NET Micro.

Oltre a ciò, "migliore" ha poco significato senza descrivere per che cosa verrà utilizzato il dispositivo. Alcune lingue hanno un supporto migliore per determinati compiti rispetto ad altri.

+3

Non concordo. http://en.wikipedia.org/wiki/.NET_Micro_Framework –

+0

ARM non è esattamente esotico ... è ampiamente usato nei sistemi embedded, specialmente come core della CPU di un sistema su un chip. – RBerteig

4

È importante specificare cosa si aspetta da questo dispositivo. È una specie di applicazione di controllo? Deve implementare algoritmi? Che dire del supporto a virgola mobile? GUI? Le prestazioni sono critiche? Stai pensando di utilizzare un sistema operativo?

Rispondere a queste domande è un prerequisito fondamentale per scegliere un linguaggio di programmazione.

Detto questo, i sistemi incorporati devono essere affidabili, quindi opterei per una soluzione testata. C è probabilmente l'opzione più solida e meglio supportata per i chip ARM, ma YMMV a seconda delle esigenze specifiche.

1

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.

1

È probabile che la tua decisione venga determinata dagli strumenti disponibili per questo processore.

C è di gran lunga il linguaggio più supportato per i processori embedded, quindi non si può sbagliare molto e sarà una buona esperienza se si dovrà scrivere software per altri chip in futuro.

Il C++ sta diventando 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 utilizzi.

1

C il miglior

2

C è certamente la lingua più usata nei sistemi embedded. Sembra anche essere il più parlato di linguaggio in generale http://www.langpop.com/

Problemi correlati