Introduction

L'auteur de cet article a entrepris un projet passionnant : exécuter le système d'exploitation DOS sur un appareil Behringer DDX3216, qui utilise un processeur AMD Elan SC300. Ce processeur est un SoC (System on Chip) 386 qui intègre divers composants, tels qu'un UART, un PCMCIA, des GPIO, etc.

Contexte Technique

Le DDX3216 est équipé d'un processeur AMD Elan SC300, d'une ROM de 64 ko, de 16 Mo de RAM, d'une SRAM pour la vidéo, de quatre flash ICs pour le logiciel principal, d'un écran LCD 4 bits et d'une interface UART externe. L'auteur a dû développer son propre BIOS pour le SC300, car il n'a pas pu trouver de BIOS existant pour ce processeur.

Le processeur x86 a un processus de démarrage bien défini. Après une réinitialisation, le CPU saute à la fin de l'espace mémoire à l'adresse 0xFFF0 et attend du code x86 exécutable. L'auteur a donc créé un vecteur de réinitialisation valide pour le SC300, qui désactive les interruptions matérielles et saute au début du code dans la ROM du BIOS.

Analyse et Implications

Le code du vecteur de réinitialisation est placé par un script de lien à l'adresse 0xFFF0 de la ROM finale. L'auteur a utilisé un compilateur GCC pour créer le code et a placé le code et les données dans la ROM de 64 ko. Le code compilé ressemble à ceci : 0000fff0 90 fa e9 0b 00 00 00 00 30 36 2f 30 34 2f 32 36. Ce code désactive les interruptions matérielles et saute au début du code dans la ROM du BIOS.

L'auteur a également appris que les segments x86 sont utilisés pour adresser plus de 64 ko de mémoire. Les segments sont des blocs de 64 ko qui se chevauchent de 16 octets, ce qui permet d'adresser jusqu'à 1 Mo de mémoire. Cependant, seulement les 640 premiers ko peuvent être utilisés comme mémoire conventionnelle, les adresses plus élevées étant réservées pour la mémoire vidéo, les ROMs d'extension et le BIOS lui-même.

Perspective

L'auteur a réussi à exécuter le système d'exploitation FreeDOS v1.4 sur le DDX3216 en utilisant son propre BIOS. Cela montre que le processeur AMD Elan SC300 est capable d'exécuter des systèmes d'exploitation x86. L'auteur prévoit de poursuivre son projet en ajoutant plus de fonctionnalités au BIOS et en explorant les possibilités du processeur SC300.