Sto scrivendo applicazioni embedded per hardware diversi (avr, arm7, tms55xx ...) e diverse rtose (freeRTOS, rtx, dsp/bios). E ogni secondo di loro ha bisogno di comunicare con il PC o un altro dispositivo digitale. A volte la logica delle interazioni è molto avanzata. Quindi sono interessante nella metodologia comune (come lo stile di programmazione a macchina di stato), nella specifica del protocollo o nella libreria, che potrebbe semplificare lo sviluppo di queste cose.Esistono analoghi leggeri a CORBA/RPC per programmi incorporati?
risposta
Sono stato molto contento di google protocol buffers su sistemi embedded sia per il trasferimento di dati che per i meccanismi RPC. Sono un po 'più leggeri dei sistemi basati su XML poiché i dati trasmessi sono codificati in binario e la decodifica dei dati inviati richiede un'elaborazione minima che è un grande vantaggio sull'utilizzo della CPU sul lato incorporato del collegamento.
Esistono librerie prontamente disponibili per varie lingue, ma soprattutto C per le app integrate.
Here è un articolo su Embedded.com su CORBA su sistemi embedded e implementazioni "leggere" o minime. Le soluzioni commerciali citate sono per QNX, VxWorks e LynxOS. E another article su RPC su Embedded.com (questo è stato creato da un istruttore DSP di TI e fa riferimento specifico a DSP, quindi potrebbe essere rilevante per DSP/BIOS).
Si consiglia vivamente di utilizzare la ricerca di articoli di Embedded.com, ci sono probabilmente molti articoli simili che troverete utili.
VxWorks supports RPC, così come QNX Neutrino.
"Roll your own" è sempre stata la mia soluzione in cui la conformità agli standard e la compatibilità tra sistemi non sono un problema (ad esempio i miei sistemi che parlano ai miei sistemi). Fare solo esattamente quello di cui hai bisogno è il modo migliore per ottenere "leggero", forse a scapito della flessibilità e della manutenibilità.
Ho letto questi articoli. CORBA è inteso per interazioni molto più avanzate rispetto ai miei programmi. Il protocollo RPC dal motore codec di TI è abbastanza leggero, ma molto specifico e non adatto alle mie applicazioni. – Mtr
I protocolli sono adatti per macchine a stati, quindi forse è possibile utilizzare i framework di macchine di stato QP molto leggeri e open source (state-machine.com). Le porte QP pronte all'uso e gli esempi per vari compilatori sono disponibili per AVR, MSP430, ARM7/ARM9, TMS320C28x, PSoC, HC08, M16C/R8C, H8, 8051, PIC18, PIC24/dsPIC, ARM Cortex-M3/M0 e molti altri.
Nota: Lavoro per http://state-machine.com
Non proprio spam. Tuttavia, Miro, non usiamo firme su SO. Ho modificato la tua risposta per mostrare un modo per ottenere le stesse informazioni. Vado anche a svalutare la risposta perché non penso che affronti direttamente la domanda. –
Sì, era mia intenzione indicare che lavoro per state-machine.com. –
OpenJAUS.
È riflettente, componibile e standardizzato (ish) Works cross-language-cross-platform.
Fornisce molto più framework di Protocol Buffers (che è uno stack di messaggistica pulito) È focalizzato sulla robotica, ma funziona per i sistemi di controllo.
In teoria un'interfaccia utente JAUS può far funzionare qualsiasi dispositivo compatibile con JAUS e i sistemi JAUS sono progettati per comporre in un sistema di sistemi.
Se queste cose non hanno senso, si prega di ignorare questo suggerimento.
Recentemente abbiamo developted: https://github.com/EmbeddedRPC/erpc dare la possibilità ad esso;)
- 1. analoghi LINQ in Scala?
- 2. Esistono eventi cross-thread incorporati in python?
- 3. Analoghi Scala di QtConcurrent
- 4. Esistono suoni incorporati/predefiniti che possono essere utilizzati in un'app?
- 5. sono tubi posix leggeri?
- 6. Esistono linguaggi di script incorporati e tipizzati in modo statico?
- 7. Esistono programmi che possono simulare una connessione di rete instabile?
- 8. Quali programmi di slicing del programma esistono realmente?
- 9. Esistono metodi incorporati in Java per aumentare le dimensioni dei caratteri?
- 10. per programmi Racket
- 11. LLVM fornisce servizi per l'implementazione di processi "fili verdi"/leggeri?
- 12. Esistono alternative a OData?
- 13. Processi leggeri in stile Erlang in .NET
- 14. Esistono alternative a XmlUnit?
- 15. Perché i thread si chiamano processi leggeri?
- 16. Scala: Perché gli attori sono leggeri?
- 17. Posizionare per ottenere software per componenti incorporati?
- 18. Programmi GUI MySQL
- 19. Esistono alternative gratuite a VisualSVN?
- 20. Esistono alternative gratuite a Silktest?
- 21. Esistono abbellimenti per CoffeeScript?
- 22. Esistono versioni locali o programmi comuni che utilizzano YYYY-DD-MM come formato della data?
- 23. Criteri Hibernate per entità con oggetti incorporati
- 24. Esistono librerie standalone per Firefox Sync?
- 25. Come devo imparare a scrivere programmi?
- 26. MongoDB incorporati oggetti polimorfici
- 27. Esistono programmi B-tree o siti che mostrano visivamente come funziona un albero B
- 28. Libreria client HTTP C/C++ per progetti incorporati
- 29. Comandi incorporati WPF
- 30. Esistono algoritmi interni in neo4j per il rilevamento della comunità?
Potete raccomandare eventuali implementazioni particolari per C embedded? –
http://code.google.com/p/protobuf-c/ – Mark