2010-02-03 7 views
14

Quelqu'un pourrait-il me guider sur le chemin/les étapes à suivre pour créer un simple programme bootable Hello World? J'ai les connaissances de base de C/C++.Premiers pas dans la création d'un programme C amorçable simple

Mon but est de créer un très simple OS.

Je voudrais autant de liens pertinents vers des références et des échantillons que possible.

+3

Rechercher le terme bootloader. Des tonnes de ressources disponibles en ligne. Voir: http://www.codeproject.com/KB/tips/boot-loader.aspx – dirkgently

+0

Je pense que la grande question ici serait "sur quel processeur?" Dans la plupart des cas, je suggère de regarder un chargeur de démarrage pour que ce processeur ait une idée - et oui, vous écrirez un assembleur, vos routines de sortie de base, etc. si vous voulez que le programme soit vraiment autonome. –

+0

Un peu en rapport http://stackoverflow.com/questions/2145501/writing-an-operating-system-in-c/2145556#2145556 – sud03r

Répondre

5

Voir this. C'est un tutoriel pour un chargeur de démarrage très basique. Cela n'a pas grand chose à voir avec le C/C++, mais il contient de très bonnes informations sur les blocs de construction de base d'un bootloader.

Si vous êtes vraiment curieux au sujet des blocs de construction, il y a des ressources plus détaillées sous la forme de manuels. Ce tutoriel, par exemple, n'explique pas pourquoi le chargeur de démarrage doit se terminer par 55 AA. De plus, c'est relativement étroit.

+1

Merci d'avoir branché OSdever.net. Si quelqu'un a des questions, essayez forums.osdever.net. Nous sommes assez bons pour aider chacun à sortir;) – Brenden

+1

Cette réponse n'est pas vraiment dans l'esprit de SO. Je suis en retard, je sais. – corazza

0

Vous voulez construire un binaire lié statiquement (pas de ld.so impliqué), et vous le lancez en sautant à son point d'entrée. Le point d'entrée est généralement le début de la section .text. Maye run objdump --section-headers image dessus pour trouver son adresse.

Si vous essayez d'exécuter sur un périphérique intégré, vérifiez comment le noyau d'un système d'exploitation intégré est construit et démarré. Par exemple, voyez comment U-Boot fait apparaître un système basé sur Ångström Linux.