2011-04-13 2 views
0

Je voudrais connaître la procédure appropriée pour créer un fichier PROM (.MCS) pour un flash SPI série inclure à la fois le flux binaire de configuration FPGA et le logiciel à utiliser par le processeur Microblaze. Cela suppose que ma conception matérielle et logicielle est terminée. J'utilise une carte d'évaluation Xilinx Spartan-6, la SP605, qui a plusieurs périphériques de mémoire non volatile et je souhaite utiliser le flash SPI série pour stocker à la fois le train binaire FPGA et le logiciel Microblaze qui doit être chargé en mémoire. Je ne peux y parvenir que si le code du Microblaze réside dans les BRAM internes. Si je crée mon script de lien de sorte qu'il place le code ou les sections de données dans la RAM DDR3 externe, il échoue.Flux de conception pour créer un fichier Flash SPI amorçable (fichier PROM) pour une configuration bitstream Xilinx contenant Spartan-6 et logiciel Microblaze

- EDIT -

OK, donc j'ai essayé deux choses différentes et j'ai une meilleure compréhension de ce que je dois faire, mais toujours sans succès (qui, d'ailleurs, merci pour votre réponse Andy). Donc, j'ai essayé 2 choses différentes. Pour les deux, je fusionne d'abord le bitstream du système avec le programme bootloader pour générer un nouveau fichier .bit (download.bit) qui fonctionne bien (lorsque vous cliquez sur programme dans SDK et que vous choisissez le bootloader pour charger le BRAM, il appelle data2mem générer le nouveau fichier download.bit).

APPROCHE PREMIER - CORBEILLE FICHIER

Une fois que mon programme principal est fait (avec un script de liaison ciblant la RAM DDR et tout) j'appelle mb-objcopy pour générer un fichier bin du .elf un:

mb-objcopy -O binary program -R .vectors_reset -R .vectors.sw_exception -R vectors.interrupt -R .vectors.hw_exception dummy.elf dummy.b 

Puis j'utilise iMPACT pour créer et fichier MCS en utilisant download.bit et dummy.b. Je place download.bit à l'adresse de départ du SPI Flash et de dummy.b plus bas (le bootloader pointe déjà vers cette adresse). Ensuite, je graver le MCS à la série SPI FLash, redémarrer et le chargeur de démarrage s'exécute et soi-disant copie tout à la RAM DDR, mais, le programme principal ne fonctionne pas. Est-ce que j'ai râté quelque chose? Si j'essaie d'utiliser iMPACT sans changer le programme principal de .elf à BIN, le PC se bloque (parfois je dois même complètement réinitialiser l'ordinateur) et j'ai un PC très rapide et équipé de mémoire.

Le chargeur de démarrage que j'ai utilisé était le même que celui lié dans le document Xilinx XAPP1146.

APPROCHE DEUXIÈME - DOSSIER SREC

Les étapes sont à peu près les mêmes, sauf que j'utilise la même commande mb-objcopy pour générer un SREC au lieu d'un fichier BIN (cette fois, je ne supprimer aucun des les secteurs, ce que je devais faire pour le fichier BIN sinon cela générerait un énorme fichier).

Le chargeur de démarrage que j'ai utilisé est celui que possède le logiciel SDK.

Veuillez me faire savoir si vous avez créé un chargeur de démarrage pour le Microblaze.

Merci à l'avance, Erick

+0

Cela pourrait faire mieux sur electronics.se. Vous pouvez le marquer et demander à un modérateur de le faire migrer. – Andy

+0

Pouvez-vous mettre à jour votre question en détail sur la façon dont vous générez le fichier MCS et les erreurs que vous obtenez? Utilisez-vous l'option '-data_file' ou son équivalent graphique? Une erreur de dépassement de capacité semble indiquer que le flash n'est peut-être pas assez grand. Voici quelques ressources: [AR 36210] (http://www.xilinx.com/support/answers/36210.htm), [AR 35345] (http://www.xilinx.com/support/answers/35345 .htm), [Programmer les données de l'utilisateur en flash interne ...] (http://forums.xilinx.com/t5/Design-Tools-Others/Program-user-data-into-in-internal-flash-of-Spartan3an -xc3s200an/td-p/118996) – Andy

Répondre

0

J'ai construit bootloader, mais avec deux différences par rapport à vous:

  • Ils ne prennent pas le programme du même dispositif flash que le bitstream vient.
  • J'utilise un code personnalisé pour programmer le flash plutôt que d'utiliser l'impact.

Dans le cas où il vous donne des idées, voici ce que je fais:

J'ai un dispositif séparé flash SPI à partir de laquelle j'ai lu un fichier ELF, que je parse puis à la volée et transférer le code correspondant/sections d'initialisation dans la DRAM. Il n'y a aucune raison pour que votre bootloader ne puisse pas charger depuis le même périphérique flash que la configuration. Il ne s'agit pas d'un analyseur ELF totalement flexible car il suppose que les sections sont dans le même ordre que la table d'en-tête de section les signale, mais c'est comme cela que les outils Microblaze produisent les fichiers.

(Et ne pas oublier de dépouiller les informations de débogage à partir du fichier avant de le programmer pour flasher!)

0

Il est waaaay plus facile que tout cela.

  1. à partir du SDK, créez un bootloader (srec_bootloader)
  2. programme FPGA w/le fichier binaire du système et le bootloader SREC.
  3. Prenez le fichier download.bit de la plate-forme matérielle
  4. Exécutez les commandes suivantes

impact -batch make_bpi_up.impact

xmcsutil -accept_notice -18 pi outfile.hex -o bootloader.bin

(La dernière commande ci-dessus crée une image de démarrage w/votre bit FPGA fichier et le chargeur de démarrage)

Puis programmez votre application @ l'offset spécifié par votre bootl oader utilisant XSDK Ensuite, programmez le bootloader @ 0x0 en utilisant XSDK - notez que lorsque vous sélectionnez "Program Flash" depuis XSDK, vous devez parcourir le fichier bootloader.bin et sélectionner * par opposition à .bin; .elf; *. Srec dans le filtre de type de fichier dans la fenêtre du navigateur afin que vous puissiez sélectionner le bootloader.bin

Faites-moi savoir si vous avez besoin de moi pour clarifier l'une des étapes. En cours d'ajout à mon blog w/screenshots au cours de la semaine prochaine.

Le fichier make_bpi_up.impact se compose des éléments suivants

setMode -pff         
setSubmode -pffparallel       
setPreference -pref StartupClock:Auto_Correction 
addPromDevice -p 1 -size 32768 
addDesign -version 0 -startaddress 000000 
addDeviceChain -index 0 
addDevice -p 1 -file download.bit 
generate -format hex -fillvalue FF -output outfile 
quit 

MacGyverQue

0

clic droit sur MicroBlaze, cliquez sur le fichier ELF associé ajoutez votre fichier .elf et configurer le mode .generate bitstream. et convertir .bit en .mcs et télécharger le fichier .. le fichier .elf et le fichier .mcs sont stockés dans le flash

Questions connexes