Raspberry PI senza sistema operativo su di esso?


9

Di recente ho lavorato molto con Arduino. È molto semplice perché puoi eseguire direttamente il codice C ++ su di esso senza la necessità di sistemi operativi o driver.

Ho fatto qualche ricerca e AFAIK, di solito installi Linux su Raspberry PI e crei script python o binari C ++ su di esso.

Domanda: è possibile eseguire il codice su di esso senza alcun sistema operativo, ma essere ancora in grado di utilizzare schede HDMI e SD?


2
Potresti trovare più semplice realizzare progetti bare metal su un processore ARM più piccolo e meno capace, ma più completamente documentato. Anche se fai attenzione agli adattatori di debug proprietari mal implementati su schede di sviluppo economiche - a volte questi ottengono driver aperti con reverse engineering, oppure puoi acquistare un vero jtag o utilizzare un bootloader seriale. Almeno con il pi dovresti essere in grado di aspettarti un buon supporto per la toolchain.
Chris Stratton,

Risposte:


16

Esegui il codice su RaPi senza sistema operativo: nessun problema. David Welch ha fatto il duro lavoro, controlla il suo gitub . Fondamentalmente, è possibile prendere i file di avvio standard e sostituire kernel.img con il file che si desidera eseguire. Per evitare il "ballo della scheda SD" è possibile eseguire un bootloader che riceve l'immagine da eseguire su una linea seriale. Ho aggiunto un riavvio automatico, in modo da poter eseguire una nuova immagine "senza mani". Se vuoi seguire questa strada ho qualche informazione in più.

Esegui la tua applicazione bare metal e usa lo schermo e la scheda SD : questo è un problema. Tutte le informazioni sono disponibili nelle fonti Linux e ci sono persone che lavorano su questo (controlla DexOs ?), Quindi presumo che tra un anno e mezzo queste informazioni saranno di conoscenza comune. Ma per ora direi che probabilmente è troppo lavoro.


Mi chiedo come la CPU possa caricare il kernel dalla scheda SD senza i driver appropriati per la scheda SD e il file system?
bytecode77

1
I file di base necessari (e che possono essere scaricati dal sito RaPi, da soli o come parte di una distribuzione Linux) includono un file di avvio per la GPU. Presumibilmente la GPU ha alcuni bootROM integrati che gli consentono di leggere la SD, caricare il suo codice, caricare kernel.img e attivare la CPU ARM.
Wouter van Ooijen,

@DevilsChild - molte CPU hanno bootloader di base integrati, la parte TI Davinci con cui sto lavorando ha un "bootloader ROM" che può funzionare su seriale o da scheda SD. Le schede SD utilizzano un'interfaccia SPI di base.
John U,

5

È sempre possibile, ma dovrai scrivere i tuoi driver per HDMI e l'interfaccia SD, e possibilmente anche un file system per quest'ultimo.


1
In realtà sarebbe estremamente complicato poiché è la GPU che inizia per prima e quindi deve caricare alcuni BLOB binari di Broadcom per avviare la CPU. Inoltre, se ricordo bene, anche i driver GPU e il firmware sono di tipo chiuso.
AndrejaKo

Sono disponibili driver che potrebbero essere inclusi in modo che funzionino? Qualche idea?
bytecode77

@Devils Child Non sono sicuro di quanto sia facile o documentato tutto. Penso che potresti essere in grado di utilizzare il bootloader esistente per caricare la tua immagine del sistema operativo e avviare la CPU, ma poi il problema che Stevenvh ha scritto nella risposta mostra: dovrai scrivere i driver e la maggior parte della documentazione per loro non è ' t disponibile.
AndrejaKo

@DevilsChild: i driver esistenti saranno probabilmente scritti per un sistema operativo specifico e se si desidera integrarli nel proprio software, avrà bisogno di alcune delle sue funzionalità. Alla fine scriverai una copia (limitata) del sistema operativo. Inoltre, AndrejaKo indica che sarà molto difficile e il firmware chiuso non semplifica le cose. Perché non vuoi un sistema operativo?
Stevenvh,

1
@DevilsChild la differenza importante tra un computer a scheda singola e una VM è che puoi posizionare la scheda in un luogo diverso dalla posizione fisica del computer che ospita la VM; inoltre tende ad avere un migliore I / O nel mondo reale. Ma le macchine virtuali e gli emulatori o i simulatori più specializzati hanno spesso un ruolo importante, come lasciare che il team del software inizi a lavorare prima che esista l'hardware o evitare di farli combattere sull'unica scheda prototipo che è stata rielaborata a mano per essere funzionale o in esecuzione test di regressione senza vincolare la raccolta di dispositivi fisici ...
Chris Stratton,

3

Quello che hanno detto tutti, tuttavia, il percorso più FACILE è quello di eseguire una distro Linux che fa quello che vuoi ed è il più minimalista possibile, e quindi rimuovere tutto ciò che non vuoi.

Abbastanza presto smetterà di essere Linux e diventerà un bootloader con supporto SD e HDMI. Ciò è essenzialmente indistinguibile da quello che stai chiedendo sotto tutti gli aspetti tranne che
- è stato estratto da una distribuzione Linux (ma non è più Linux) e
- non l'hai fatto tu stesso.

A meno che non farlo completamente da soli sia della massima importanza, questo sembra un approccio molto logico.



0

Se vuoi programmare "Raspberry Pi as Arduino", dai un'occhiata a cablaggioPi. Dai un'occhiata al mio articolo su http://www.jating.in/efyarticle/EFYArticle.pdf .

1) L'ho fatto sembrare e funzionare come Arduino, usando un singolo cavo per fare la conversione da USB a seriale e fornire energia anche alla scheda. quindi è sufficiente un solo cavo USB proprio come Arduino.

2) Ho creato una piccola utility che, una volta eseguita, caricherà il cablaggio del codice Pi sulla linea seriale (in realtà qualsiasi file di testo :-)), lo compili e lo eseguo.,

Se vuoi puoi eseguirlo ad ogni avvio modificando il file .bashrc, quindi ogni volta che si avvia, attenderà un nuovo file. Non ho fornito alcun collegamento al codice di utilità, ma è possibile trovarlo all'indirizzo http://www.jating.in/efyarticle/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.