2013-05-01 26 views
7

Niedawno zacząłem studiować na temat Embedded System i Embedded Linux. Wiem, że w systemie wbudowanym system operacyjny jest przechowywany w pamięci Flash lub ROM. Kiedy jest włączony, bootloader ładuje system operacyjny do pamięci głównej, a za pomocą Raspberry Pi ta "flash lub ROM" jest kartą SD.Jak działa program ładujący Raspberry Pi?

Tak więc, szukałem Raspberry Pi, ponieważ chcę zacząć ćwiczyć z jednym, a ja byłem zakłopotany koncepcją "startowania" Raspberry Pi. Moje pytanie brzmi: jaki bootloader używa Raspberry Pi i jak działa? (Mianowicie, jakie procesy mają miejsce przed jądrem? head.o? main.c? (Jądro startowe))

+0

Dobrze odpowiedziałeś tutaj: http: //raspberrypi.stackexchange.com/a/10490/34554 – opyate

+0

Głosuję, aby zamknąć to pytanie jako nietypowe, ponieważ należy ono do witryny http://raspberrypi.stackexchange.com i jest duplikatem (http://raspberrypi.stackexchange.com/questions/10489/how-does-raspberry-pi-boot) –

Odpowiedz

13

Ten proces został opisany na śmierć, powinieneś mieć problemy ze znalezieniem go w sieci.

Raspberry pi zawiera procesor graficzny i procesor ARM, dwa oddzielne procesory. GPU pojawia się jako pierwszy, zakładam, że jest napędzany przez układ scalony lub sprzęt, który odczytuje kartę SD, szukając pierwszego pliku bootcode.bin. Ten bootloader GPU jest nieudokumentowany jeśli chodzi o nas, wyświetla chip do punktu, a następnie ładuje start.elf inny program GPU. Ten program gpu kończy wywoływanie chipu (ddr init) i ostatecznie ładuje kernel.img, który jest aplikacją ARM (nie ramieniem bootloadera, ale aplikacją jak w Linuksie), ładuje to bezpośrednio do RAM i robi to, co zrobiłby zwykły bootloader przygotuj ramię do rozruchu Linux-a (co jest na ogół prawie nic), a następnie buty na ręce.

Tradycyjny bootloader ma miejsce, gdy masz tylko jeden procesor i to jest procesor, który uruchomi również aplikację/system operacyjny. nazwy takie jak redboot i uboot, ale te stały się rażąco skomplikowane, same systemy operacyjne. uruchomienie systemu Linux zajmuje niewiele, wrzucanie kilku ATAGów do pamięci RAM i ustawianie kilku rejestrów i to jest to (po oczywiście podnieśliście system/ram, itp., który nie zajmuje zbyt wiele kodu, ale jest delecate/difficult kod dla ddr na przykład), nowsze wersje mają nieco więcej rzeczy do skonfigurowania, ale nie za dużo.

Uruchamianie raspberry pi jest eleganckie w swojej prostocie, a także funkcją wymiennego nieulotnego przechowywania (karty SD), która przenosi cię z powrotem do czasów przed bootloaderem, w których wyskakujesz z romów i kasujesz je , ma pewne bóle, ale są sposoby na obejście tego. w tej chwili dostępne są prawdopodobnie skomplikowane (uboot, itp.) programy ładujące strony trzeciej. Posiadanie wymiennego flesza oznacza, że ​​nie potrzebujesz skompresowanego bootloadera, nie musisz martwić się o to, że system zostanie zniszczony za pomocą zepsutej aplikacji, możesz odzyskać pamięć po prostu usuwając flash i zmieniając go. Bootloadery wzrosły, unikając usuwania nośników, aby uniknąć konieczności rozlutowywania lampy błyskowej i ponownego ładowania po zaprogramowaniu lub użyciu gniazda na płycie przeznaczonej do lutowania w dół.

Plik kernel.img w obecnej postaci (w jednym punkcie został załadowany do 0x00000000) ładuje się do 0x8000. I to jest wszystko, co musisz wiedzieć, to normalny obraz jądra, którego używałbyś z bootloaderem. Możesz wtedy napisać dowolny nagi metal lub inny program/aplikację, pod warunkiem że podłączysz adres 0x8000 jako początek binarnego i początkowego punktu. Jeśli chcesz używać wyjątków, musisz jakoś napisać tabelę wyjątków (są na to różne sposoby). Alternatywą do tego jest ustawienie trybu starszego typu, do konfiguracji można użyć opcjonalnego pliku config.txt, który wczyta jądro do 0x0000 podobnie jak w pierwszych dniach rpi. Osobiście idę z domyślnym 0x8000, inni bare metalowcy podążają inną ścieżką ...

Mam bardzo prosty bootloader xmodem i taki, który ustawia piny jtag, dzięki czemu można użyć jtag (w obu przypadkach, aby uniknąć wykonywać setki tysięcy razy taniec karty SD podczas tworzenia aplikacji). Są inne, niektóre bardziej skomplikowane, a może nawet takie, które mają usb do punktu, w którym działa sieć.

Powiązane problemy