2016-08-18 5 views
-2

Le point est de générer un hex sans fonction principale en utilisant IAR linker - xlink? Ce code doit être chargé dans la mémoire RAM du RL78 MCU.Comment générer un hexagone sans fonction principale en utilisant IAR linker - xlink?

+0

Qu'est-ce que vous avez déjà travaillé? Je suppose que vous avez un projet de bibliothèque qui génère quelque chose comme 'library.a'? – rjp

+0

Ressemble à une question XY; qu'est-ce que vous essayez réellement d'accomplir? Chargement dynamique/liaison peut-être? Une application entièrement liée doit avoir un point d'entrée. L'éditeur de liens GNU prend en charge une option connue sous le nom de "liaison partielle", pas sûr de la vôtre. – Clifford

Répondre

1

Une recherche rapide sur Google de iar generate hex from library m'a amené à this document, "Creating an Absolutely Placed Library", comme un premier résultat. Il contient toutes les informations dont vous avez besoin, ainsi que des informations sur l'utilisation d'un CRC pour la vérification de cohérence. Le document concerne la variante IAR EWRX, mais les concepts doivent tous être les mêmes.

Le processus de base consiste à compiler votre bibliothèque en tant qu'exécutable, mais sans fonction main(). Vous devez définir la configuration de votre bibliothèque sous Général -> Options de bibliothèque sur None. Vous pouvez également configurer vos paramètres de conversion de fichiers à ce stade. Comme vous n'avez pas de fonction main() pour un point d'entrée de programme, vous devez créer une fonction d'entrée pour appeler la fonction d'initialisation de l'exécution IAR C, __iar_data_init2(), puis définir l'éditeur de liens pour utiliser cette fonction comme entrée point (qui peut être trouvé sous Options du lieur -> Options de la bibliothèque). Lors de la construction d'une bibliothèque, tous les symboles seront conservés jusqu'à l'étape de liaison finale pour l'application qui l'utilise, mais comme vous construisez ce fichier en tant qu'exécutable, il est important que les symboles que vous voulez conserver aient le mot-clé __root ou sous Liaison -> Options supplémentaires, vous pouvez spécifier --no-remove pour conserver tous les symboles.

Dans l'étape suivante, vous devez utiliser isymexport pour exporter les symboles souhaités. Vous aurez besoin d'un fichier pour diriger l'outil à exporter. Dans l'exemple, ils ont un fichier qui contient tout ce qui suit:

show lib_* 
show __checksum* 

Ceci dirigera l'outil pour exporter tous les symboles commençant par lib_ et tous les symboles commençant par __checksum. Ils notent que __iar_data_init2() devrait être et non être exporté, car cela provoquerait des conflits avec l'application qui utilisera finalement ce code. Vous invoquer l'outil comme ceci:

isymexport <path to .out file> <path to output from tool> --edit <path to file created above> 

Maintenant vous devriez avoir la sortie de isymexport et le fichier de bibliothèque que vous recherchez. Pour l'application utilisant cette bibliothèque, vous devrez ajouter la sortie de isymexport en tant que bibliothèque sous Lieur -> Bibliothèque, et dans votre application, vous devrez appeler votre fonction d'entrée dans la bibliothèque avant d'essayer d'utiliser l'une des les symboles de la bibliothèque.

Cela doit être l'information dont vous avez besoin pour générer une bibliothèque qui réside dans un fichier hex et qui peut être chargée séparément, ainsi que la façon d'utiliser cette bibliothèque. Le document référencé a beaucoup plus de détails, donc s'il est disponible à ce lien (ou peut être trouvé ailleurs par titre), il sera une meilleure référence que mon résumé ici.

+0

Bien qu'un lien vers la documentation soit utile, vous devriez aussi * répondre * à la question sur SO afin qu'elle soit isolée (si le lien est rompu par exemple). Entourer le lien avec un commentaire superflu sur la façon dont vous l'avez trouvé, et des suggestions sans rapport ne l'empêche pas d'être une réponse de lien seulement. – Clifford

+0

Je vais ajouter un résumé à la réponse. – rjp