|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Nouveau Membre du Club
![]() Romain Inscription : avril 2011 Messages : 60 ![]() |
Salut a tous. Moi c'est Romain, j'approche les 20 ans, je ne fais aucune étude, et actuellement je me suis lancé un petit défi que j'ai vite beaucoup apprécié : un mini OS entièrement fait par moi.
Alors dans ce sens j'entend système de fichier fat12 ou fat16 et quelques utilitaires, ça serait niquel :p Je suis débutant en asm mais j'aime ça Actuellement j'ai un secteur de boot qui charge une IDT, initialise les segments, charge les secteurs suivants en 0x1000 et y saute. Puis c'est mon noyau précédement chargé qui prend la main, il charge une GDT, rempli juste les descripteurs d'interruptions qui seront utiles au timer et au clavier (IRQ0 et IRQ1), programme les PICS (le pic maitre pointe sur mes descripteurs préalablement remlis, et je masque toutes les interruptions sauf le clavier et le timer), puis je démare les interruptions. J'ai également fais quelques fonctions dont j'ai eu besoin. Mon driver clavier gère quelques touches de base. Biensur le code n'a pas été revu, tout cela est assez brouillon, mais je le poste pour avoir des critiques sur ma facon de coder. boot32.asm: Code :
Code :
Code :
Code :
Edit : tout est en assembleur pour 2 raison : je voulais le faire pour m'y familiariser et étant sous windows actuelement j'ai des soucis lors du linkage... Je me pencherais la dessus quand mon OS aura une taille conséquente Re-edit : Apparement Cygwin serait une bonne idée pour pouvoir compiler sous windows des fichiers linkables avec des binaires asm. Si quelqu'un pouvait m'en parler car je l'ai lu sur un site en anglais et je ne suis pas sur de tout comprendre. |
||||||||
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Romain Inscription : avril 2011 Messages : 60 ![]() |
Bonjour,
Petit avancement pour mon OS qui stock désormais la dernière ligne dans un buffer. Du coups j'ai enfin ma 1ère commande qui fonctionne (j'ai implementé strncmp et non strcmp pour le moment. Par contre je ne sais pas pourquoi mais je n'arrive plus a demarer mon os sur mon disque dur externe alors que hier encore cela marchait... Avec une taille de 4,5 ko je devrais pas avoir de soucis nan ? Je précise que je copie directement mon bootloader au début et que je vire le mbr du coups, j'utilise "dd" pour la copie. Le soucis viendrait il du fait qu'il n'y a pas de MBR, mais directement un jmp pour une initialisation en 7c00 ? Pourtant cela marchait hier, j'ai juste formaté une nouvelle fois mon disque, chose que javais déjà faite plusieurs fois... |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() |
salut romain
sur quel livre tu t'es basé sur l'architecture de ton OS? |
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Romain Inscription : avril 2011 Messages : 60 ![]() |
Salut,
Pour te répondre, je n'ai encore aucun livre sur l'assembleur. J'ai juste utilisé les tutos du site ou nous nous trouvons, et OSDev qui est un super site je trouve. Actuellement j'en suis toujours a la gestion de la mémoire, bien que j'ai toujours mon soucis de boot sur un vrai pc (pas une machine virtuelle). En effet meme avec le bootloader du formatage (celui que le formatage écrit sur mon disque) ou mon bootloader, peut importe, ni mon disque dur USB, ni ma clée USB ne bootent. Par contre tout est niquel en machine virtuelle. |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Étudiant Inscription : janvier 2012 Messages : 5 ![]() |
Bonjour romfox17,
Alors voila pour faire court moi aussi je suis en train de développer un OS. Et pour le tester depuis une clé USB, je modifie son Bootsecteur (1er secteur) avec un éditeur Hexadécimal qui est HxD : http://mh-nexus.de/en/hxd Tuto pour modifier le Bootsecteur: 1. Ouvrez HxD.exe, ensuite cliquer sur l'icone en forme de disk (OpenDisk en infobulle). 2. Next choisissez votre clé en décochant 'Open as Readonly'. 3. Puis ouvrez votre binaire, donc le bootloader et le kernel 4. Copy/paste le bootloader à l'offset 0 de la clé USB, et le kernel au début du secteur-1, secteur que vous avez choisi dans les paramètres passer à 'Fonctions 02h de int 0x13 (Écrit dans la RAM) 5. REBOOT That's all En espérant que cela t'a aidé A++ |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com