by legacy » 09 Oct 2013, 16:48
Per un sistema molto piu' semplice mi sono scritto io un tool in C che converte un file hex contenente il firmware del SoftCore (macinino ad 8 bit) in una mappa di memoria verilog, in questo modo viene descritto il contenuto della ram e al reset il softCore e' felice e saluta in seriale con "hAllo".
Ma tra parentesi, sui sistemi Xilinx come fai ? Io avevo lo stesso problema ed ho risolto allo stesso modo, generando un file verilog o vhdl che descrive il contenuto della ram a partire da un file hex sputato fuori dall'asm. Ho usato picoBlaze, dovevo quasi per forza giocare con l'asm, i compilatori C per quella architettura arrancano.
Per la Xilinx sia se lanci Isim da EDK sia da Project Navigator (una volta creato il tuo sistema programmabile con Microblaze in EDK e il suo sw applicativo con SDK), l'ambiente di sviluppo ti permette di caricarti il file .elf risultato della compilazione che va a costituire il contenuto della memoria BRAM. Fatto ciò, lanci Isim e simuli come un qualsiasi circuito digitale (naturalmente Microblaze eseguirà il programma che gli hai messo in memoria!).
Mai usato EDK, ho sempre costruito io le BRAM contents. Se parti da un elf e' peggio, hai le sections ed i symbols da gestire, secondo me ti conviene chiedere alla toolchain di sfornare un hex per poi convertirlo in bin ad esempio con un tool hex-to-bin tool (formato intel), infine farti un programmino o uno script (p.e. python) per riversare il bin nel BRAM stuffing code.