Conversion de fichiers OMF vers SIG pour émulateurs 8051 dans Keil µVision

Introduction aux formats OMF et SIG

Dans le développement de systèmes embarqués, les émulateurs 8051 de Signum Systems sont fréquemment utilisés pour le débogage. Lors de l'utilisation de l'environnement Keil µVision, il est souvent nécessaire de convertir les fichiers object absolus (OMF) générés par l'éditeur de liens en un format spécifique pour l'émulateur, tel que le format SIG. Cette conversion permet d'assurer la compatibilité et de conserver les informations de débogage essentielles.

Compréhension des fichiers de projet

Dans Keil µVision, les projets sont généralement stockés avec l'extension .PRJ. Après la compilation et l'édition des liens, l'éditeur de liens produit un fichier OMF absolu, qui contient le code machine et les symboles de débogage. Ce fichier porte le même nom que le projet mais sans extension. Par exemple, un projet nommé MONPROJET.PRG génère un fichier OMF appelé MONPROJET.

Il est crucial de distinguer ce fichier des fichiers .OBJ, qui sont des fichiers object intermédiaires générés par le compilateur pour chaque source individuelle. Le fichier OMF résulte de la combinaison de tous les fichiers .OBJ.

Configuraton des options de débogage

Pour garantir que le fichier converti contienne des informations complètes, activez les options suivantes dans les paramètres du compilateur et de l'assembleur :

  • Pour les fichiers assembleur : Dans l'onglet "Object", cochez "Include Debug Information".
  • Pour les fichiers C : Dans l'onglet "Object", cochez "Include Debug Information" et "Include Extended Debug Information".

Ces options assurent que le fichier OMF inclut la table des symboles, les numéros de ligne et d'autres données nécessaires au débogage au niveau source.

Processus de conversion

Méthode manuelle

Pour effectuer la conversion manuellement :

  1. Compilez et liez le projet dans µVision pour générer le fichier OMF.
  2. Utilisez l'outil de conversion fourni par Signum, comme omf2sig.
  3. Exécutez la commande : omf2sig MONPROJET MONPROJET.sig.
  4. Chargez le fichier .sig généré dans l'émulateur.

Automatisation avec des scripts

Pour améliorer l'efficacité, il est recommandé d'automatiser la conversion à l'aide de scripts. Un script de base pourrait ressembler à :

@echo off
set FICHIER_ENTREE=%1
set FICHIER_SORTIE=%FICHIER_ENTREE%.sig
omf2sig %FICHIER_ENTREE% %FICHIER_SORTIE%
echo Conversion terminée.

Pour intégrer ce script dans µVision, allez dans l'onglet "Output", secsion "After Build", et spécifiez le chemin du script avec le nom du projet comme paramètre. Cochez l'option "Run User Program #1" pour qu'il s'exécute automatiquement après chaque construction.

Dépannage des problèmes courants

Perte d'informations de débogage

Symptôme : L'émulateur exécute le programme, mais les sources et variables ne s'affichent pas.

Causes possibles :

  • Options de débogage non activées lors de la compilation.
  • Incompatibilité de version de l'outil de conversion.
  • Chemin du projet contenant des caractères spéciaux ou non-ASCII.

Solutions :

  1. Vérifiez que les options de débogage sont activées pour tous les fichiers sources.
  2. Mettez à jour l'outil de conversion vers une version plus récente.
  3. Déplacez le projet vers un chemin composé uniquement de caractères ASCII.

Erreurs de l'outil de conversion

Des erreurs courantes comme "Format OMF invalide" ou "Table de symboles introuvable" peuvent survenir. Assurez-vous d'utiliser le fichier OMF correct (nom du projet sans extension) et que le fichier n'est pas corrompu. Essayez de recompiler le projet si nécessaire.

Techniques avancées et optimisation

Script de conversion renforcé

Pour une robustesse accrue, ajoutez des vérifications d'erreur dans le script :

@echo off
set FICHIER=%1
if not exist %FICHIER% (
    echo Erreur : Fichier OMF %FICHIER% introuvable.
    exit /b 1
)

omf2sig %FICHIER% %FICHIER%.sig
if errorlevel 1 (
    echo Échec de la conversion.
    exit /b 1
)

echo Conversion réussie.

Gestion de projets multiples

Pour les environnements avec plusieurs projets, personnalisez le script avec des options spécifiques :

@echo off
set NOM_PROJET=%1
set OPTIONS_SPECIFIQUES=

if "%NOM_PROJET%"=="PROJET_A" (
    set OPTIONS_SPECIFIQUES=-v -x
) else if "%NOM_PROJET%"=="PROJET_B" (
    set OPTIONS_SPECIFIQUES=-c
)

omf2sig %OPTIONS_SPECIFIQUES% %NOM_PROJET% %NOM_PROJET%.sig

Intégration avec le contrôle de version

Lors de l'utilisation de systèmes comme Git, ignorez les fichiers OMF bruts dans le fichier .gitignore et ne versionnez que les fichiers .sig. Cela évite les conflits liés aux fichiers binaires et assure que l'équipe dispose des fichiers corrects pour l'émulateur.

Optimisations de performance

Pour les projets de grande taille, envisagez des améliorations telles que :

  • Conversion incrémentielle : Ne convertir que les fichiers modifiés pour réduire le temps de construction.
  • Traitement parallèle : Sur les machines multi-cœurs, paralléliser la conversion de plusieurs modules.
  • Journalisation : Ajouter un journal pour enregistrer les horodatages et les résultats des conversions, ce qui aide au diagnostic.

Ces optimisations peuvent réduire significativement le temps de construction, passant par exemple de 15 secondes à 5 secondes dans certains scénarios.

Étiquettes: 8051 émulateur OMF SIG Keil µVision

Publié le 1 juin à 02h47