2010-02-03 11 views
14

Czy ktoś mógłby wskazać mi ścieżkę/kroki, które należy wykonać, aby stworzyć prosty program do rozruchu Hello World? Mam podstawową wiedzę o C/C++.Pierwsze kroki w tworzeniu prostego bootowalnego programu C

Moim celem jest stworzenie bardzo prostego systemu operacyjnego: .

Chciałbym uzyskać jak najwięcej odnośników do referencji i próbek.

+3

Wyszukaj termin program ładujący. Mnóstwo zasobów dostępnych online. Zobacz: http://www.codeproject.com/KB/tips/boot-loader.aspx – dirkgently

+0

Myślę, że najważniejsze pytanie brzmi "na jakim procesorze?" W większości przypadków proponuję zajrzeć do bootloadera dla tego procesora, aby uzyskać pewien pomysł - i tak, będziesz pisać asembler, twoje podstawowe procedury wyjściowe, itp., Jeśli chcesz, aby program naprawdę pozostał sam. –

+0

Nieco powiązane http://stackoverflow.com/questions/2145501/writing-an-operating-system-in-c/2145556#2145556 – sud03r

Odpowiedz

5

Zobacz: this. To samouczek dla bardzo prostego programu ładującego. Nie ma to wiele wspólnego z C/C++, ale ma naprawdę dobrą informację na temat podstawowych bloków bootloadera.

Jeśli naprawdę interesują cię bloki konstrukcyjne, znajdziesz więcej szczegółowych materiałów w formie podręczników. Ten samouczek nie wyjaśnia na przykład, dlaczego program ładujący musi się zakończyć z 55 AA. Ponadto jest stosunkowo wąski.

+1

Dzięki za podłączenie OSdever.net. Jeśli ktoś ma jakieś pytania, spróbuj forums.osdever.net. Jesteśmy całkiem dobrzy w pomaganiu sobie nawzajem;) – Brenden

+1

Ta odpowiedź nie jest tak naprawdę w duchu SO. Jestem spóźniony, wiem. – corazza

0

Chcesz zbudować statycznie połączony plik binarny (nie dotyczy to ld.so) i uruchamiasz go, przeskakując do punktu wejścia. Punktem wejścia jest zwykle początek sekcji .text. Maye uruchomić objdump --section-headers obrazu na nim, aby dowiedzieć się jego adres.

Jeśli próbujesz uruchomić urządzenie wbudowane, sprawdź, jak zbudowane i uruchomione jest jądro wbudowanego systemu operacyjnego. Na przykład zobacz, jak U-Boot wyświetla system oparty na Linuksie Ångström.