RIOT-OS e più eseguibili?

0

Sono nuovo di zecca per la programmazione integrata e mi chiedo se RIOT-OS abbia le capacità richieste dal mio piccolo progetto.

Ho 3 file eseguibili, fizz , buzz e foo . Tutti fanno cose separate, ma molto importanti. La mia comprensione con i sistemi operativi in tempo reale è che di solito:

  1. Prendi il codice sorgente della tua app e in qualche modo unisci / unisci con il codice sorgente di RTOSes; poi
  2. Componi questo codice sorgente conglomerato (di nuovo la tua app + sorgente RTOS) in un binario compatibile con la piattaforma / architettura definitiva su cui verrà eseguito; poi
  3. Si fa lampeggiare il file binario sul chip usando qualcosa come UART o SPI, ecc.

Innanzitutto, se questa comprensione non è corretta, qualcuno può aiutarmi a correggere / chiarire le cose per me?

Supponendo che io sia più o meno a bersaglio, allora mi chiedo se RIOT-OS supporti il concetto di " più eseguibili " in esecuzione all'avvio del chip / OS? In altre parole, è possibile che RIOT-OS venga compilato in modo incrociato con, e quindi all'esecuzione in runtime, tutti e 3 i file eseguibili (fizz, buzz e foo)?

    
posta smeeb 12.08.2015 - 11:29
fonte

1 risposta

1

Leggi introduzione RIOT-OS e RIOT: un sistema operativo per domarli tutti nel rapporto IoT .

Sembra che tu crei un'applicazione singola (collegata al runtime RIOT); questa può essere la combinazione dei tre eseguibili , ognuno dei quali esegue i propri thread.

Avere un sistema operativo che supporta diversi eseguibili sembra richiedere alcuni file system (o qualcosa per separare i file eseguibili) e qualche nozione di processo , che apparentemente RIOT-OS non ha.

Se hai pieno accesso al codice sorgente C dei tuoi eseguibili (ad esempio i tuoi tre programmi), il loro mixaggio è in linea di principio facilmente possibile: devi solo assicurarti che ogni programma abbia nomi univoci. Ad esempio, potresti scrivere alcuni script per ottenere i nomi in ogni funzione pubblica (ad esempio aa , ab , foo nel programma fizz ) e generare un'intestazione fizznames.h con #define aa fizz__aa , #define ab fizz__ab ecc. ... da includere in ogni unità di traduzione di fizz , ecc ... Questa intestazione può essere generata con nm che alimenta un semplice script awk (o forse dal tuo MELT personalizzazione dell'estensione a GCC ....); poi scrivi un'applicazione di incollaggio che avvia ciascuna funzione principale fizz , buzz , foo nella sua stessa thread. In alternativa, puoi giocare a ld trucchi (ad esempio ld -r ) con il tuo script GNU ld (forse usando la visibilità funzione attributo ) per mescolare i tre programmi in un unico file eseguibile (e lo farai ancora hai bisogno della tua funzione di avvio).

Devi ancora preoccuparti della comunicazione e della sincronizzazione (tra fizz , buzz , foo )

    
risposta data 12.08.2015 - 11:49
fonte

Leggi altre domande sui tag