2010-01-08 18 views
1

J'ai une application écrite en C pour un cœur XilinxMicroblaze. Cependant, la performance n'est pas tout à fait ce que je veux donc je pensais réécrire certaines des fonctions de base dans l'assemblage. Je n'arrive pas à comprendre comment Xilinx Platform Studio compile les deux en un seul fichier ELF.Xilinx Microblaze C et l'assemblage

Comment puis-je le faire?

+0

Quelle version de EDK utilisez-vous? – eepp

Répondre

1
  1. Vérifiez si le compilateur implémente l'assemblage en ligne. Essayez la fonction "asm". Vérifiez qu'il prend en charge le référencement des variables. Si votre compilateur est basé sur GCC, c'est facile.
  2. Vous pouvez toujours écrire un assembleur brut, l'assembler et le lier à votre application. Vous devez comprendre l'ABI de votre compilateur pour rendre les fonctions compatibles.
1

Avez-vous indiqué d'où vient exactement la mauvaise performance? D'après mon expérience, les fonctions de base sont assez rapides, donc votre code est probablement la source du problème. Essayez de compiler avec optimisation (-O3) ou de changer la taille du cache (si vous utilisez un cache).

2

Comme suggéré par Yann, vous pouvez utiliser l'assemblage en ligne. Voici comment:

http://www.xilinx.com/support/answers/18561.htm

Bien, essayez de profiler votre code pour déterminer où est votre goulot d'étranglement. Le SDK de Xilinx permet un profilage intrusif. Vous pouvez également utiliser des GPIO et un oscilloscope (ou Logic Analyzer avec une horloge de déclenchement rapide) pour profiler vos fonctions/sections de code.

Cheers, Erick

0

Je ne sais pas quelle fonction Microblaze vous voulez réécrire, mais vous pouvez toujours aller à Xilinx répertoire d'installation (par exemple, C: \ Xilinx \ 13.4 \ ISE_DS \ EDK \ sw \ lib \ bsp \ standalone_v3_00_a \ src \ microblaze) pour modifier les fonctions ou même inclure votre propre fichier asm dans la bibliothèque logicielle spécifique.