Raspberry PI bez systemu operacyjnego?

9

Ostatnio dużo pracuję z Arduino. Jest to bardzo proste, ponieważ można bezpośrednio na nim wykonać kod C ++ bez potrzeby systemów operacyjnych lub sterowników.

Przeprowadziłem badania i AFAIK, zwykle instalujesz Linuksa na Raspberry PI i tworzysz na nim skrypty pythonowe lub binarne C ++.

Pytanie: Czy można na nim uruchomić kod bez żadnego systemu operacyjnego, ale nadal można korzystać z kart HDMI i SD?

bytecode77
źródło
2
Łatwiejsze może być wykonywanie projektów typu metal na mniejszych i mniej wydajnych, ale w pełni udokumentowanych procesorach ARM. Uważaj jednak na źle zaimplementowane, zastrzeżone adaptery debugowania na tanich płytach programistycznych - czasem otrzymują one otwarte sterowniki poddane inżynierii wstecznej lub możesz kupić prawdziwy plik jtag lub użyć seryjnego programu ładującego. Przynajmniej z pi powinieneś być w stanie oczekiwać dobrego wsparcia łańcucha narzędzi.
Chris Stratton,

Odpowiedzi:

16

Uruchom kod na RaPi bez systemu operacyjnego: nie ma problemu. David Welch wykonał chrząknięcie, sprawdź swojego gituba . Zasadniczo możesz wziąć standardowe pliki startowe i zastąpić plik kernel.img plikiem, który chcesz uruchomić. Aby uniknąć „tańca karty SD”, możesz uruchomić program ładujący, który odbiera obraz do uruchomienia przez linię szeregową. Dodałem automatyczne ponowne uruchomienie, abyś mógł uruchomić nowy obraz bez użycia rąk. Jeśli chcesz jechać tą trasą, mam więcej informacji.

Uruchom własną aplikację bez systemu operacyjnego i użyj ekranu i karty SD : To jest problem. Wszystkie informacje są dostępne głęboko w źródłach Linuksa, a nad tym pracują osoby (sprawdź DexO ?), Więc zakładam, że za około pół roku te informacje będą powszechnie znane. Ale na razie powiedziałbym, że to chyba za dużo pracy.

Wouter van Ooijen
źródło
Zastanawiam się, jak CPU może załadować jądro z karty SD bez odpowiednich sterowników dla karty SD i systemu plików?
bytecode77
1
Podstawowe pliki, których potrzebujesz (i które można pobrać ze strony RaPi, samodzielnie lub jako część dystrybucji Linuksa) obejmują plik startowy dla GPU. Prawdopodobnie GPU ma wbudowany bootROM, który pozwala na odczyt SD, załadowanie kodu, załadowanie pliku kernel.img i aktywację procesora ARM.
Wouter van Ooijen
@DevilsChild - wiele procesorów ma wbudowane podstawowe moduły ładujące, część, z którą pracuję TI Davinci, ma „moduł ładujący ROM”, który może pracować z portem szeregowym lub z karty SD. Karty SD używają podstawowego interfejsu SPI.
John U
5

Zawsze jest to możliwe, ale musisz napisać własne sterowniki dla interfejsu HDMI i SD, a być może także system plików dla tego drugiego.

stevenvh
źródło
1
W rzeczywistości byłoby to bardzo skomplikowane, ponieważ procesor graficzny, który uruchamia się najpierw, a następnie musi załadować binarne obiekty BLOB Broadcom, aby uruchomić procesor. Ponadto, jeśli dobrze pamiętam, sterowniki GPU i oprogramowanie układowe są również źródłem zamkniętym.
AndrejaKo,
Czy są dostępne sterowniki, które można by włączyć, aby działało? Dowolny pomysł?
bytecode77
@Devils Child Nie jestem pewien, jak łatwo byłoby i jak wszystko jest udokumentowane. Myślę, że możesz użyć istniejącego programu ładującego, aby załadować własny obraz systemu operacyjnego i uruchomić procesor, ale problem, który Stevenvh napisał w odpowiedzi pokazuje: będziesz musiał napisać sterowniki, a większość dokumentacji dla nich nie jest t dostępne.
AndrejaKo,
@DevilsChild - istniejące sterowniki najprawdopodobniej zostaną napisane dla konkretnego systemu operacyjnego, a jeśli chcesz je zintegrować z własnym oprogramowaniem, będzie potrzebował części jego funkcjonalności. Na koniec będziesz pisać (ograniczoną) kopię systemu operacyjnego. AndrejaKo wskazuje również, że będzie to bardzo trudne, a oprogramowanie układowe o zamkniętym źródle nie ułatwia. Dlaczego nie chcesz systemu operacyjnego?
stevenvh
1
@DevilsChild istotną różnicą między komputerem jednopłytkowym a maszyną wirtualną jest to, że można umieścić tablicę w innym miejscu niż fizyczna lokalizacja maszyny hostującej maszynę wirtualną; także zwykle ma lepsze rzeczywiste wejścia / wyjścia. Ale maszyny wirtualne i bardziej wyspecjalizowane emulatory lub symulatory często odgrywają ważną rolę, na przykład pozwalają zespołowi programowemu rozpocząć pracę przed istnieniem sprzętu lub unikają walki z jedyną prototypową płytą, która została ręcznie przerobiona, aby działała lub działała testy regresji bez wiązania kolekcji urządzeń fizycznych ...
Chris Stratton
3

To, co wszyscy powiedzieli, ale ścieżka EASIEST polega na uruchomieniu dystrybucji Linuksa, która robi to, co chcesz i jest tak minimalistyczna, jak to możliwe, a następnie usuwa wszystko, czego nie chcesz.

Dość szybko przestanie być Linuksem i stanie się bootloaderem z obsługą SD i HDMI. Jest to zasadniczo nie do odróżnienia od tego, o co prosisz pod każdym względem, z wyjątkiem
tego, że - zostało wyodrębnione z dystrybucji Linuksa (ale nie jest już Linuksem) i
- sam tego nie zrobiłeś.

Chyba że zrobienie tego całkowicie samemu ma ogromne znaczenie, wydaje się to bardzo logicznym podejściem.

Russell McMahon
źródło
0

Jeśli chcesz zaprogramować „Raspberry Pi as Arduino”, sprawdź wiringPi. Sprawdź mój artykuł na http://www.jating.in/efyarticle/EFYArticle.pdf .

1) Sprawiłem, że wyglądał i działał jak Arduino, używając pojedynczego kabla do konwersji z USB na port szeregowy i zasilania również płyty. więc wystarczy tylko jeden kabel USB, podobnie jak Arduino.

2) Zrobiłem małe narzędzie, które po uruchomieniu załaduje okablowanie kodu Pi przez linię szeregową (Właściwie dowolny plik tekstowy :-)), skompiluje i uruchom go.,

Jeśli chcesz, możesz uruchomić go przy każdym uruchomieniu, modyfikując plik .bashrc, więc za każdym razem, gdy się uruchomi, będzie czekał na nowy plik. Nie podałem żadnego linku do kodu narzędzia, ale można go znaleźć na stronie http://www.jating.in/efyarticle/

Jatin Gandhi
źródło