IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation d'OS Assembleur Discussion :

Bug entre le bootloader et mon kernel ?


Sujet :

Programmation d'OS Assembleur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Bug entre le bootloader et mon kernel ?
    Bonjour,
    voilà j'ai essayer de suivre le tut de inferno sur les OS
    et donc le boot sur la disquette est ok !

    mais dès que je veux mettre un kernel il ne le lit pas et en plus il me met l'affichage du message de boot.asm en boucle infini !!!

    je comprends pas trop pourquoi !

    j'ai fais tout ce qu'il est expliqué pourtant !
    voici les sources :
    Boot.asm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     %define BASE	0x100  
    %define KSIZE	1	; nombre de secteurs de 512 octets a charger
     
    [BITS 16]
    [ORG 0x0]
     
    jmp start
    %include "UTIL.INC"
    start:
    	mov [bootdrv],dl	; recuparation de l'unite de boot
     
    ; initialisation des segments en 0x07C0
    	mov ax,0x07C0
    	mov ds,ax
    	mov es,ax
    	mov ax,0x8000	; stack en 0xFFFF
    	mov ss,ax
    	mov sp, 0xf000
     
    ; affiche un msg
    	mov si,msgDebut
    	call afficher
     
    ; charger le noyau
    	xor ax,ax
    	int 0x13
     
    	push es
    	mov ax,BASE
    	mov es,ax
    	mov bx,0
     
    	mov ah,2
    	mov al,KSIZE
    	mov ch,0
    	mov cl,2
    	mov dh,0
    	mov dl,[bootdrv]
    	int 0x13
    	pop es
     
    ; saut vers le kernel
    	jmp dword BASE:0
     
     
    msgDebut	db	"Chargement du kernel",13,10,0
     
    bootdrv: db 0
     
    ;; NOP jusqu'a 510
    times 510-($-$$) db 144
    dw 0xAA55
    et enfin le kernel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    [BITS 16]
    [ORG 0x0]
     
    jmp start
     
    %include "UTIL.INC"
     
    start:
    ; initialisation des segments en 0x100
    	mov ax,0x100
    	mov ds,ax
    	mov es,ax
    	mov ax,0x8000	; stack en 0xFFFF
    	mov ss,ax
    	mov sp, 0xf000
     
    ; affiche un msg
    	mov si,msg00
    	call afficher
     
    end:
    	jmp end
     
     
    msg00: db 'Kernel is speaking !',10,0

    puis le fichier util.inc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    ;---------------------------------------------------------
    	; Synopsis: Affiche une chaine de caracteres se terminant par 0x0
    	; Entree:   DS:SI -> pointe sur la chaine a afficher
    	;---------------------------------------------------------
    	afficher:
    		push ax
    		push bx
    	.debut:
    		lodsb		; ds:si -> al
    		cmp al,0	; fin chaine ?
    		jz .fin
    		mov ah,0x0E	; appel au service 0x0e, int 0x10 du bios
    		mov bx,0x07	; bx -> attribut, al -> caractere ascii
    		int 0x10
    	        jmp .debut
     
    	.fin:
    		pop bx
    		pop ax
    		ret
    voilà seulement je suis sous win98 + nasm
    et je complie bien les 2

    nasm -f bin -o boot boot.asm
    nasm -f bin -o kernel kernel.asm
    puis je fais :
    debug boot
    -w cs:100 0 0 1
    -q
    puis copy kernel a:
    et enfin copy util.inc a:
    sous dos je n'arrive pas à faire ce signe "\"...

    si quelqu'un vois le problème...merci de m'aider ce serait sympa !
    bye

  2. #2
    sdx
    sdx est déconnecté
    Membre régulier Avatar de sdx
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 90
    Points
    90
    Par défaut
    Salut

    Ton problème (il y en a peut être plusieurs ...) vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     mov ah,2
    mov al,KSIZE
    mov ch,0
    mov cl,2
    mov dh,0
    mov dl,[bootdrv]
    int 0x13
    pop es
    ici, tu demandes au BIOS de lire KSIZE secteurs, a partir de la tête 0, cylindre 0, secteur 2. Donc ton noyau doit se trouver sur le secteur n°2

    Or, pour copier ton noyau, tu utilises
    copy kernel a:
    ce qui ne revient pas à le copier sur le secteur 2, mais là où il y aura de la place sur la partition de ta disquette.

    Donc, tu devrais plutôt copier ton noyau avec debug, comme tu le fais pour le fichier boot, mais sur le deuxième secteurs !

    il y a peut être d'autres erreurs, je n'ai pas fait le test


    sous dos je n'arrive pas à faire ce signe "\"...
    Alt Gr + 8
    salut

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    merci pour ta réponse pertinente !!

    mais comment faire avec debug pour copier le kernel secteur 2 ?

    -> debug kernel
    - w cs:100 0 0 2 ??????
    -q

    merci beaucoup !!!

  4. #4
    sdx
    sdx est déconnecté
    Membre régulier Avatar de sdx
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 90
    Points
    90
    Par défaut
    -> debug kernel
    - w cs:100 0 0 2 ??????
    -q
    Il me semble que c'est ça ... (je ne me suis presque jamais servi de cet outil !)

    essaie et tu verras bien.

    au fait :
    copy util.inc a:
    c'est inutile: ce fichier est déjà compilé et inséré dans tes binaires, donc tu n'en a pas besoin sur la disquette !

  5. #5
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 409
    Points
    59 409
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Il se peut que je me trompe mais j'écrirais plutôt :
    -> debug kernel
    - w cs:100 0 1 1
    - q
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    merci pour votre aide !!
    concernant :

    debug kernel
    -w cs:100 0 0 2
    cela n'a pas marché
    je vais tenter l'autre solution !!!

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    bon donc..
    debug kernel
    -w cs:100 0 1 1
    ne marche pas j'ai une erreur de protection lors de l'ecriture sur le lecteur A

    idem avec -w cs:100 0 2 1
    et -w cs:100 0 0 2

    que faire ???

  8. #8
    sdx
    sdx est déconnecté
    Membre régulier Avatar de sdx
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par hudson
    que faire ???
    Déplacer la languette en bas à gauche de la disquette

    ps: C'est peut être autre chose, mais alors je ne vois pas ...

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    bon pour le coup de la languette faut quand même pas pousser !!!

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    De toute facon, debug est un vieil outil qui n'est plus utilisé !
    Je ne me rappelle même plus comment on l'utilise...
    Utilise plutot dd (sous nux), ou l'IDE de notre cher modérateur : http://www.astase.com/products/?AsmEditor
    ou encore rawrite pour windows... mais tu dois t'arranger pour avoir une image de 1440ko je crois (pas sur).
    Sinon le code a l'air correct...

    Je te conseillerais de passer sous linux, rien que pour utiliser dd, qui est une commande vraiment pratique ! Sinon, j'ai vu ca: http://uranus.it.swin.edu.au/~jn/linux/rawwrite/dd.htm
    Mais je ne sais pas ce que ca vaut....

    Ou sinon install cygwin il doit y avoir un dd dedans ...
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  11. #11
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Points : 78
    Points
    78
    Par défaut
    Salut,

    tu n'es pas obliger de passer a Linux, tous les outils Linux sont dispo sous Windows, c'est exactement ce que je fais.

    cat bin/boot.bin bin/loader.bin /dev/zero | dd of=img/floppy.img bs=512 count=2880

    Voila un example qui concatene le boot et le loader (kernel...) dans un fichier floppy.img d'une taille de 1.44Mo.

    Mais tu peux tres bien redirige le tout vers une disquette.

    PS: pour ma part le passage sur D7/HD se fait quand le developpement et deja bien avance, de plus je n'ai qu'un PC, donc pas trop envie de passer mon temps a allumer eteindre mon PC, je te conseille donc d'essayer BOCHS, excellent simulateur de PC. Si tu veux un coup de main n'hesite pas.

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    merci pour ta réponse !!

    tu utilisesdonc cygwin ? pour te servir de cat ? car sous dos nada !!!!

    pour bochs..j'ai abandonné je me sert d'une version de vmware workstation eval c'est plus simple !!!

    a+

  13. #13
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Points : 78
    Points
    78
    Par défaut
    Exactement j'utilise CygWin, tres pratique

    L'avantage de Bochs, c'est que la communeaute est tres active, c'est de l'open source (tu peux tester n'importe quel proc avec une seule machine)

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    c'est clair..mais bon j'vais acheter peut être la licence de vmware car il est vraiment pratique !!
    merci pour cygwin je l'ai télécharger..
    bon va falloir que je trouve un site qui me dit tout !!!
    merci encore pour votre aide à tous


    bye

Discussions similaires

  1. Bug entre IE et FireFox
    Par ultrasrouche dans le forum Webdesign & Ergonomie
    Réponses: 1
    Dernier message: 19/07/2007, 23h34
  2. [Conception] Lien entre ma BD et mon site web
    Par martoune dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/04/2007, 17h13
  3. Probléme d'execution de mon Kernel perso
    Par bouazza92 dans le forum C
    Réponses: 54
    Dernier message: 05/08/2006, 12h16
  4. Réponses: 7
    Dernier message: 10/07/2006, 17h33
  5. [C++.NET] Relation entre 2 colonnes de mon data
    Par raboin dans le forum VC++ .NET
    Réponses: 21
    Dernier message: 15/05/2006, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo