8
votes

X86 Emulateur pour la formation Embedded Development

Je souhaite en apprendre davantage sur le fonctionnement intérieur de l'ordinateur, pour améliorer mes connaissances sur le développement du système intégré.

Au travail, je ne m'implique jamais avec les détails de bas niveau (tels que le GDT, le chargeur du code de Flash à la RAM, etc.), car tous ceux-ci sont déjà écrits.

Je préfère ne pas acheter d'autre matériel actuellement. Y a-t-il un émulateur et un système d'exploitation très simple, je peux jouer avec, afin de maîtriser tous les aspects de faible niveau du programme intégré? Y a-t-il un didacticiel qui peut me promener dans la définition d'un environnement intégré très simple (régler les segments de mémoire, le GDT, passer en mode protégé et exécuter Main () )


0 commentaires

4 Réponses :


6
votes

Les suspects Ususal des émulateurs X86 seraient bochs et qemu .

Vous voudrez peut-être aussi consulter Tutoriel de développement du noyau de James Molloy et les ressources qu'il relie.


1 commentaires

Le débogueur intégré de Bochs est bon et comprend la segmentation. bochs.sourceforge.io/doc/docbook/user/internal-debugger. HTML (GDB ne fait pas, même lorsque vous déboguez à distance d'un invité QEMU en mode réel, ce qui ne permet pas de déboguer du code avant et pendant le passage à la mode protégé). Le débogueur de Bochs peut également faire des choses telles que Parse GDT et les tables de page pour vous assurer de configurer ce que vous avez voulu et vous disent pourquoi vous double ou triple-panned.



2
votes

Pour notre cours de systèmes d'exploitation, nous utilisons actuellement un système d'exploitation jouet appelé pommes de terre . C'est assez basique et afaik basé sur les tutoriels de noyau de James Molloy. Vous pourriez avoir un coup d'oeil sur IT ici .

De plus, je peux recommander le wiki et Conseil de discussion à Osdev.org.

Edit: Vous trouverez de bonnes informations sur l'architecture X86 dans le volume 3 de Intel's IA -32 Architectures Manuels du développeur de logiciels . Le volume 1 présente l'architecture de base et en volume 2, vous trouverez une référence complète du jeu d'instructions de montage X86.


0 commentaires

1
votes

dans le développement du système embarqué émulateur a une signification très spécifique; En fait, vous parlez d'un "simulateur"? Mais si vous développez sur un X86 et que l'instruction Set Simulator est inutile et limitée lorsque vous pouvez plutôt utiliser un VM.

En fait, si vous vouliez " un environnement intégré très simple ", vous ne choisiriez pas un X86. Bootsting et configuration de ces périphériques complexes (et leurs jeux de puce et mémoire associés) sont non triviaux.

Si votre plate-forme est X86, la chose la plus simple à faire est d'utiliser une machine virtuelle en cours d'exécution sur un vrai X86. La machine virtuelle la plus flexible et la plus robuste est disponible gratuitement de VMware , et un autre gratuit de < Un href = "http://www.microsoft.com/windows/virtual-pc/" rel = "nOfollow Noreferrer"> Microsoft . Le PC virtuel de Microsoft est toutefois optimisé pour exécuter des fenêtres, que Linux fonctionne de fonctionner peut être gênant, sans parler de certaines nichées RTOS.


3 commentaires

Je parle bien sur une machine virtuelle complète, telle que VirtualBox / QEMU / Bochs / VMware, etc. Je pensais simplement qu'il y a quelque chose de plus orienté pour les systèmes embarqués.


Et bien sûr, X86 est compliqué, c'est pourquoi je veux apprendre toutes ses caractéristiques intrigantes (segments, mode protégé de pagination, oh mon ...)


Si vous avez un budget, le matériel réel peut-être peut-être plus approprié - une carte PC industrielle, par exemple, des panneaux facteurs de formulaire PC / 104 bas ne doivent pas nécessairement être coûteux.



1
votes

Vous pourriez être mieux en train d'utiliser une véritable machine intégrée. Un environnement de développement pour un Arduino est robuste coûteux et vous devez travailler jusqu'au métal: http://www.sparkfun.com/commerce/product_info.php?product_info.php?products_id=9284

AVR est un début raisonnable dans cet espace, X86 n'est pas.


0 commentaires