Alex_VI 0 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба Программа написана в Xilinx SDK, откомпилирована. Если загружаю FPGA из SDK, выбрав Program FPGA, то прошивается нормально, программа запускается, отрабатывает все что нужно. Далее нужно запрограммировать PROM. Для этого захожу в XPS, добавляю свой скомпилированный проект в формате elf и ставлю на нем галку Mark to Initialize BRAMs. Выбираю в меню Update bitstream. После чего XPS пишет ошибку: Microblaze.make:75: *** multiple target patterns. Stop. Done! На этом все останавливается. Даже если снять галку Mark to Initialize BRAMs с этого проекта, то все равно ругается, пока не удалишь его полностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 19 августа, 2010 Опубликовано 19 августа, 2010 · Жалоба Программа написана в Xilinx SDK, откомпилирована. Если загружаю FPGA из SDK, выбрав Program FPGA, то прошивается нормально, программа запускается, отрабатывает все что нужно. Далее нужно запрограммировать PROM. Для этого захожу в XPS, добавляю свой скомпилированный проект в формате elf и ставлю на нем галку Mark to Initialize BRAMs. Выбираю в меню Update bitstream. После чего XPS пишет ошибку: Microblaze.make:75: *** multiple target patterns. Stop. Done! На этом все останавливается. Даже если снять галку Mark to Initialize BRAMs с этого проекта, то все равно ругается, пока не удалишь его полностью. Каков размер elf-файла и BRAMs в проекте ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_VI 0 19 августа, 2010 Опубликовано 19 августа, 2010 · Жалоба Каков размер elf-файла и BRAMs в проекте ? BRAM - 16кб Размер elf файла 29кб.. Но, когда запускаю программу из SDK (в FPGA залит бутлоадер) у меня все влазит в память и работает (в линкере размер исполняемой части показывает в районе 6 кб). И когда в SDK собираю файл конфигурации (вместо бутлоадера выбираю исполняемый файл), чтобы его залить в FPGA тоже все собирается и работает. Может я вообще что-то не то делаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 19 августа, 2010 Опубликовано 19 августа, 2010 · Жалоба подойдём с другой стороны http://comments.gmane.org/gmane.comp.gcc.c...compiling/10857 и (или) http://www.edaboard.com/ftopic147769.html edk/ise/sdk всё делают через make-файл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_VI 0 19 августа, 2010 Опубликовано 19 августа, 2010 · Жалоба подойдём с другой стороны http://comments.gmane.org/gmane.comp.gcc.c...compiling/10857 и (или) http://www.edaboard.com/ftopic147769.html edk/ise/sdk всё делают через make-файл. Я понимаю, что через make все делается.. Только я не владею достаточными знаниями, чтобы разобраться с этим. Пути в проекте все прописаны корректно, никаких русских букв, никаких пробелов и подозрительных символов, сам файл программы копировал в ту же папку, где все остальное лежит. Это не помогло. По ссылкам в обоих случаях упоминается знак ":", но мне это ни о чем не говорит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mad_kvmg 0 20 августа, 2010 Опубликовано 20 августа, 2010 · Жалоба Прошить флэш вашей программой можно из XPS или SDK, в зависимости от версии, там должно быть что-то вроде Program Flash. Там же вам предложат создать программу загрузчика (bootloader). Загрузчик нужен для того, что вытащить вашу программу из флэша (как правило это Intel StrataFlash) и переписать в оперативную память с последующей передачей управления на адрес первой инструкции вашей программы. После компиляции проекта загрузчика, получается такой же elf файл (bootloader.elf). Вот этот файл вами надо скрестить с битстримом (.bit) и получить mcs файл для заливки платформенной prom (XCF....). Для того чтобы скрестить файлы нужно почитать про утилиту data2mem. В соответствующем УГ все доступно написано UG642. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 20 августа, 2010 Опубликовано 20 августа, 2010 · Жалоба Я понимаю, что через make все делается.. Только я не владею достаточными знаниями, чтобы разобраться с этим. Пути в проекте все прописаны корректно, никаких русских букв, никаких пробелов и подозрительных символов, сам файл программы копировал в ту же папку, где все остальное лежит. Это не помогло. По ссылкам в обоих случаях упоминается знак ":", но мне это ни о чем не говорит. Содержимое Microblaze.make в студию. По той информации что Вы дали можно предположить кривизну в создании make-файла и поэтому make.exe ругается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_VI 0 20 августа, 2010 Опубликовано 20 августа, 2010 · Жалоба Прошить флэш вашей программой можно из XPS или SDK, в зависимости от версии, там должно быть что-то вроде Program Flash. Там же вам предложат создать программу загрузчика (bootloader). .... Для того чтобы скрестить файлы нужно почитать про утилиту data2mem. В соответствующем УГ все доступно написано UG642. Вы не поняли. Я не храню программу во флэше, мне нужно, чтобы программа хранилась в конфигурации FPGA и хранилась в PROM вместо бутлоадера, т.е. нужно, чтобы в FPGA конфигурация заливалась сразу с программой. За UG642 спасибо, почитаю. Alex77 Содержимое Microblaze.make в студию. ################################################################# # Makefile generated by Xilinx Platform Studio # Project:E:\projects\FPGA\ISE121\AD9985_Flash\AD9985_Flash_ISE\Microblaze\Microblaze.xmp # # WARNING : This file will be re-generated every time a command # to run a make target is invoked. So, any changes made to this # file manually, will be lost when make is invoked next. ################################################################# # Name of the Microprocessor system # The hardware specification of the system is in file : # E:\projects\FPGA\ISE121\AD9985_Flash\AD9985_Flash_ISE\Microblaze\Microblaze.mhs # The software specification of the system is in file : # E:\projects\FPGA\ISE121\AD9985_Flash\AD9985_Flash_ISE\Microblaze\Microblaze.mss include Microblaze_incl.make ################################################################# # PHONY TARGETS ################################################################# .PHONY: dummy .PHONY: netlistclean .PHONY: bitsclean .PHONY: simclean .PHONY: exporttosdk ################################################################# # EXTERNAL TARGETS ################################################################# all: @echo "Makefile to build a Microprocessor system :" @echo "Run make with any of the following targets" @echo " " @echo " netlist : Generates the netlist for the given MHS " @echo " bits : Runs Implementation tools to generate the bitstream" @echo " exporttosdk: Export files to SDK" @echo " " @echo " libs : Configures the sw libraries for this system" @echo " program : Compiles the program sources for all the processor instances" @echo " " @echo " init_bram: Initializes bitstream with BRAM data" @echo " ace : Generate ace file from bitstream and elf" @echo " download : Downloads the bitstream onto the board" @echo " " @echo " sim : Generates HDL simulation models and runs simulator for chosen simulation mode" @echo " simmodel : Generates HDL simulation models for chosen simulation mode" @echo " behavioral_model : Generates behavioral HDL models with BRAM initialization" @echo " structural_model : Generates structural simulation HDL models with BRAM initialization" @echo " timing : Generates timing simulation HDL models with BRAM initialization" @echo " " @echo " netlistclean: Deletes netlist" @echo " bitsclean: Deletes bit, ncd, bmm files" @echo " hwclean : Deletes implementation dir" @echo " libsclean: Deletes sw libraries" @echo " programclean: Deletes compiled ELF files" @echo " swclean : Deletes sw libraries and ELF files" @echo " simclean : Deletes simulation dir" @echo " clean : Deletes all generated files/directories" @echo " " @echo " make <target> : (Default)" @echo " Creates a Microprocessor system using default initializations" @echo " specified for each processor in MSS file" bits: $(SYSTEM_BIT) ace: $(SYSTEM_ACE) exporttosdk: $(SYSTEM_HW_HANDOFF_DEP) netlist: $(POSTSYN_NETLIST) libs: $(LIBRARIES) program: $(ALL_USER_ELF_FILES) download: $(DOWNLOAD_BIT) dummy @echo "*********************************************" @echo "Downloading Bitstream onto the target board" @echo "*********************************************" impact -batch etc/download.cmd init_bram: $(DOWNLOAD_BIT) sim: $(DEFAULT_SIM_SCRIPT) simmodel: $(DEFAULT_SIM_SCRIPT) behavioral_model: $(BEHAVIORAL_SIM_SCRIPT) structural_model: $(STRUCTURAL_SIM_SCRIPT) clean: hwclean swclean simclean rm -f _impact.cmd hwclean: netlistclean bitsclean rm -rf implementation synthesis xst hdl rm -rf xst.srp $(SYSTEM).srp rm -f __xps/ise/_xmsgs/bitinit.xmsgs netlistclean: rm -f $(POSTSYN_NETLIST) rm -f platgen.log rm -f __xps/ise/_xmsgs/platgen.xmsgs touch __xps/ise/$(SYSTEM).xpssyn rm -f $(BMM_FILE) bitsclean: rm -f $(SYSTEM_BIT) rm -f implementation/$(SYSTEM).ncd rm -f implementation/$(SYSTEM)_bd.bmm rm -f implementation/$(SYSTEM)_map.ncd rm -f __xps/$(SYSTEM)_routed simclean: rm -rf simulation/behavioral rm -f simgen.log rm -f __xps/ise/_xmsgs/simgen.xmsgs touch __xps/ise/$(SYSTEM).xpssim swclean: libsclean programclean touch __xps/ise/$(SYSTEM).xpsupb libsclean: $(LIBSCLEAN_TARGETS) rm -f libgen.log rm -f __xps/ise/_xmsgs/libgen.xmsgs programclean: $(PROGRAMCLEAN_TARGETS) ################################################################# # SOFTWARE PLATFORM FLOW ################################################################# $(LIBRARIES): $(MHSFILE) $(MSSFILE) __xps/libgen.opt @echo "*********************************************" @echo "Creating software libraries..." @echo "*********************************************" libgen $(LIBGEN_OPTIONS) $(MSSFILE) microblaze_0_libsclean: rm -rf microblaze_0/ ################################################################# # SOFTWARE APPLICATION TESTAPP_MEMORY_MICROBLAZE_0 ################################################################# TestApp_Memory_microblaze_0_program: $(TESTAPP_MEMORY_MICROBLAZE_0_OUTPUT) $(TESTAPP_MEMORY_MICROBLAZE_0_OUTPUT) : $(TESTAPP_MEMORY_MICROBLAZE_0_SOURCES) $(TESTAPP_MEMORY_MICROBLAZE_0_HEADERS) $(TESTAPP_MEMORY_MICROBLAZE_0_LINKER_SCRIPT) \ $(LIBRARIES) __xps/testapp_memory_microblaze_0_compiler.opt @mkdir -p $(TESTAPP_MEMORY_MICROBLAZE_0_OUTPUT_DIR) $(TESTAPP_MEMORY_MICROBLAZE_0_CC) $(TESTAPP_MEMORY_MICROBLAZE_0_CC_OPT) $(TESTAPP_MEMORY_MICROBLAZE_0_SOURCES) -o $(TESTAPP_MEMORY_MICROBLAZE_0_OUTPUT) \ $(TESTAPP_MEMORY_MICROBLAZE_0_OTHER_CC_FLAGS) $(TESTAPP_MEMORY_MICROBLAZE_0_INCLUDES) $(TESTAPP_MEMORY_MICROBLAZE_0_LIBPATH) \ $(TESTAPP_MEMORY_MICROBLAZE_0_CFLAGS) $(TESTAPP_MEMORY_MICROBLAZE_0_LFLAGS) $(TESTAPP_MEMORY_MICROBLAZE_0_CC_SIZE) $(TESTAPP_MEMORY_MICROBLAZE_0_OUTPUT) @echo "" TestApp_Memory_microblaze_0_programclean: rm -f $(TESTAPP_MEMORY_MICROBLAZE_0_OUTPUT) ################################################################# # SOFTWARE APPLICATION TESTAPP_PERIPHERAL_MICROBLAZE_0 ################################################################# TestApp_Peripheral_microblaze_0_program: $(TESTAPP_PERIPHERAL_MICROBLAZE_0_OUTPUT) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_OUTPUT) : $(TESTAPP_PERIPHERAL_MICROBLAZE_0_SOURCES) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_HEADERS) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_LINKER_SCRIPT) \ $(LIBRARIES) __xps/testapp_peripheral_microblaze_0_compiler.opt @mkdir -p $(TESTAPP_PERIPHERAL_MICROBLAZE_0_OUTPUT_DIR) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_CC) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_CC_OPT) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_SOURCES) -o $(TESTAPP_PERIPHERAL_MICROBLAZE_0_OUTPUT) \ $(TESTAPP_PERIPHERAL_MICROBLAZE_0_OTHER_CC_FLAGS) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_INCLUDES) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_LIBPATH) \ $(TESTAPP_PERIPHERAL_MICROBLAZE_0_CFLAGS) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_LFLAGS) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_CC_SIZE) $(TESTAPP_PERIPHERAL_MICROBLAZE_0_OUTPUT) @echo "" TestApp_Peripheral_microblaze_0_programclean: rm -f $(TESTAPP_PERIPHERAL_MICROBLAZE_0_OUTPUT) ################################################################# # SOFTWARE APPLICATION AD9985 ################################################################# AD9985_program: $(AD9985_OUTPUT) $(AD9985_OUTPUT) : @echo "Sw App AD9985: No C-sources specified, but marked for BRAM initialization. Make sure elf file is compiled outside XPS" ################################################################# # BOOTLOOP ELF FILES ################################################################# $(MICROBLAZE_0_BOOTLOOP): $(MICROBLAZE_BOOTLOOP) @mkdir -p $(BOOTLOOP_DIR) cp -f $(MICROBLAZE_BOOTLOOP) $(MICROBLAZE_0_BOOTLOOP) ################################################################# # HARDWARE IMPLEMENTATION FLOW ################################################################# $(BMM_FILE) \ $(WRAPPER_NGC_FILES): $(MHSFILE) __xps/platgen.opt \ $(CORE_STATE_DEVELOPMENT_FILES) @echo "****************************************************" @echo "Creating system netlist for hardware specification.." @echo "****************************************************" platgen $(PLATGEN_OPTIONS) $(MHSFILE) $(POSTSYN_NETLIST): $(WRAPPER_NGC_FILES) @echo "Running synthesis..." bash -c "cd synthesis; ./synthesis.sh" $(SYSTEM_BIT): @echo "This project has been instantiated in Xilinx ISE Project Navigator. Please use ProjNav to generate the bitstream. " $(DOWNLOAD_BIT): $(SYSTEM_BIT) $(BRAMINIT_ELF_FILES) __xps/bitinit.opt @cp -f implementation/$(SYSTEM)_bd.bmm . @echo "*********************************************" @echo "Initializing BRAM contents of the bitstream" @echo "*********************************************" bitinit -p $(DEVICE) $(MHSFILE) $(SEARCHPATHOPT) $(BRAMINIT_ELF_FILE_ARGS) \ -bt $(SYSTEM_BIT) -o $(DOWNLOAD_BIT) @rm -f $(SYSTEM)_bd.bmm $(SYSTEM_ACE): @echo "In order to generate ace file, you must have:-" @echo "- exactly one processor." @echo "- opb_mdm, if using microblaze." ################################################################# # EXPORT_TO_SDK FLOW ################################################################# $(CYG_SYSTEM_HW_HANDOFF): $(MHSFILE) __xps/platgen.opt mkdir -p $(SDK_EXPORT_DIR) psf2Edward.exe -inp $(SYSTEM).xmp -edwver 1.2 -xml $(SDK_EXPORT_DIR)/$(SYSTEM).xml $(GLOBAL_SEARCHPATHOPT) xdsgen.exe -inp $(SYSTEM).xmp -report $(SDK_EXPORT_DIR)/$(SYSTEM).html $(GLOBAL_SEARCHPATHOPT) -make_docs_local exporttosdk: $(SYSTEM_HW_HANDOFF_DEP) @echo "This project has been instantiated in Xilinx ISE Project Navigator. Please use ProjNav to generate the bitstream and then copy the $(SYSTEM)_bd.bmm and $(SYSTEM).bit files manually... " ################################################################# # SIMULATION FLOW ################################################################# ################## BEHAVIORAL SIMULATION ################## $(BEHAVIORAL_SIM_SCRIPT): $(MHSFILE) __xps/simgen.opt \ $(BRAMINIT_ELF_FILES) @echo "*********************************************" @echo "Creating behavioral simulation models..." @echo "*********************************************" simgen $(SIMGEN_OPTIONS) -m behavioral $(MHSFILE) ################## STRUCTURAL SIMULATION ################## $(STRUCTURAL_SIM_SCRIPT): @echo "Structural simulation of complete design (including toplevel) flow should be done in ProjNav" ################## TIMING SIMULATION ################## $(TIMING_SIM_SCRIPT): @echo "Timing simulation of complete design (including toplevel) flow should be done in ProjNav" dummy: @echo "" Собственно, мое приложение в секции "SOFTWARE APPLICATION AD9985" описано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mad_kvmg 0 20 августа, 2010 Опубликовано 20 августа, 2010 · Жалоба BRAM - 16кб Размер elf файла 29кб.. По моему, цифры не сходятся или информация не актуальна? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 20 августа, 2010 Опубликовано 20 августа, 2010 · Жалоба AD9985_program: $(AD9985_OUTPUT) $(AD9985_OUTPUT) : @echo "Sw App AD9985: No C-sources specified, but marked for BRAM initialization. Make sure elf file is compiled outside XPS" Если действовать на ощупь - то между текстом $(AD9985_OUTPUT) и : есть пробел (али ещё что-либо) - убрать авось заработает. Иначе надо копать "глубже". PS; EDK обязательно должно быть версией 12.1 ? или может лучше взять что нибудь более стабильное и менее глючное типа 10 или 11 ? Тем паче что есть 12.2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_VI 0 20 августа, 2010 Опубликовано 20 августа, 2010 · Жалоба По моему, цифры не сходятся или информация не актуальна? Информация актуальна. Мне на самом деле, тоже не понятно, в SDK, когда смотрю размер модулей программы (правой кнопкой по проекту, дальше Generate Linker Script), размер исполняемой части всего 5.6 кб, плюс стек, плюс данные.. ну еще 3 кб наберется. Самое главное, программа то исполняется на этом размере BRAM, тогда как, если бы она не влазила, то компилятор не смог бы ее скомпилировать (проходил много раз). Значит я делаю вывод, что в elf файл при упаковки его еще что-то засовывается. Я не знаю, каким образом в mcs файл добавляется программа, поэтому не берусь судить о необходимых размерах.. Alex77 между текстом $(AD9985_OUTPUT) и : есть пробел (али ещё что-либо) - убрать авось заработает попробую PS; EDK обязательно должно быть версией 12.1 ? 12.2 пока не удалось скачать, а ранние версии у меня слетели из-за лицензий, похоже, отказываются что-либо компилировать, пытался переустанавливать, менять лицензию, но.. поэтому пока сижу на этой версии. пробел то я убрал, только файл пересоздается автоматом, когда пытаюсь Update bitstream сделать.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mad_kvmg 0 20 августа, 2010 Опубликовано 20 августа, 2010 · Жалоба Читайте UG, о котором говорилось выше, найдете ответы на все вопросы. data2mem берет три аргумента .bit, .elf. bmm (файл с описанием физического расположения брам на кристалле) на выходе отдает .mcs который содержит битстриим в котором блочная память проинициализирована вашей программой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_VI 0 24 августа, 2010 Опубликовано 24 августа, 2010 · Жалоба Проблему решил немножко иначе.. Подумав, что SDK перед заливкой в FPGA должна формировать bit файл содержащий программу, порылся в ее папках и нашел его. download.bit называется. Его и добавил в mcs. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slkhome 0 10 августа, 2011 Опубликовано 10 августа, 2011 · Жалоба А если она не влазит в блочную память, что делать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 11 августа, 2011 Опубликовано 11 августа, 2011 · Жалоба А если она не влазит в блочную память, что делать? "В трёх литровую банку не налить четыре литра пива" Вопрос: Что делать ??? Ответ: искать бутыль или пить меньше пива. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться