|
|
  |
Как добавить программу Microblaze в конфигурационный файл PROM?, bit + elf = mcs |
|
|
|
Aug 18 2010, 12:14
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710

|
Программа написана в 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 с этого проекта, то все равно ругается, пока не удалишь его полностью.
|
|
|
|
|
Aug 19 2010, 05:25
|
Местный
  
Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695

|
Цитата(Alex_VI @ Aug 18 2010, 16:14)  Программа написана в 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 в проекте ?
|
|
|
|
|
Aug 19 2010, 06:52
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710

|
Цитата(Alex77 @ Aug 19 2010, 09:25)  Каков размер elf-файла и BRAMs в проекте ? BRAM - 16кб Размер elf файла 29кб.. Но, когда запускаю программу из SDK (в FPGA залит бутлоадер) у меня все влазит в память и работает (в линкере размер исполняемой части показывает в районе 6 кб). И когда в SDK собираю файл конфигурации (вместо бутлоадера выбираю исполняемый файл), чтобы его залить в FPGA тоже все собирается и работает. Может я вообще что-то не то делаю?
|
|
|
|
|
Aug 19 2010, 09:14
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710

|
Цитата(Alex77 @ Aug 19 2010, 11:31)  Я понимаю, что через make все делается.. Только я не владею достаточными знаниями, чтобы разобраться с этим. Пути в проекте все прописаны корректно, никаких русских букв, никаких пробелов и подозрительных символов, сам файл программы копировал в ту же папку, где все остальное лежит. Это не помогло. По ссылкам в обоих случаях упоминается знак ":", но мне это ни о чем не говорит.
|
|
|
|
|
Aug 20 2010, 10:53
|
Местный
  
Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695

|
Цитата(Alex_VI @ Aug 19 2010, 13:14)  Я понимаю, что через make все делается.. Только я не владею достаточными знаниями, чтобы разобраться с этим. Пути в проекте все прописаны корректно, никаких русских букв, никаких пробелов и подозрительных символов, сам файл программы копировал в ту же папку, где все остальное лежит. Это не помогло.
По ссылкам в обоих случаях упоминается знак ":", но мне это ни о чем не говорит. Содержимое Microblaze.make в студию. По той информации что Вы дали можно предположить кривизну в создании make-файла и поэтому make.exe ругается.
|
|
|
|
|
Aug 20 2010, 11:48
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710

|
Цитата(Mad_max @ Aug 20 2010, 14:03)  Прошить флэш вашей программой можно из 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" описано.
|
|
|
|
|
Aug 20 2010, 12:12
|
Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811

|
Цитата(Alex_VI @ Aug 19 2010, 10:52)  BRAM - 16кб
Размер elf файла 29кб.. По моему, цифры не сходятся или информация не актуальна?
|
|
|
|
|
Aug 20 2010, 12:48
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710

|
Цитата(Mad_max @ Aug 20 2010, 16:12)  По моему, цифры не сходятся или информация не актуальна? Информация актуальна. Мне на самом деле, тоже не понятно, в SDK, когда смотрю размер модулей программы (правой кнопкой по проекту, дальше Generate Linker Script), размер исполняемой части всего 5.6 кб, плюс стек, плюс данные.. ну еще 3 кб наберется. Самое главное, программа то исполняется на этом размере BRAM, тогда как, если бы она не влазила, то компилятор не смог бы ее скомпилировать (проходил много раз). Значит я делаю вывод, что в elf файл при упаковки его еще что-то засовывается. Я не знаю, каким образом в mcs файл добавляется программа, поэтому не берусь судить о необходимых размерах.. Alex77
Цитата между текстом $(AD9985_OUTPUT) и : есть пробел (али ещё что-либо) - убрать авось заработает
попробую
Цитата PS; EDK обязательно должно быть версией 12.1 ?
12.2 пока не удалось скачать, а ранние версии у меня слетели из-за лицензий, похоже, отказываются что-либо компилировать, пытался переустанавливать, менять лицензию, но.. поэтому пока сижу на этой версии. пробел то я убрал, только файл пересоздается автоматом, когда пытаюсь Update bitstream сделать..
|
|
|
|
|
Aug 24 2010, 12:14
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710

|
Проблему решил немножко иначе.. Подумав, что SDK перед заливкой в FPGA должна формировать bit файл содержащий программу, порылся в ее папках и нашел его. download.bit называется. Его и добавил в mcs.
|
|
|
|
|
Aug 10 2011, 22:42
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 10-08-11
Пользователь №: 66 659

|
А если она не влазит в блочную память, что делать?
|
|
|
|
|
Aug 11 2011, 06:50
|
Местный
  
Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695

|
Цитата(slkhome @ Aug 11 2011, 02:42)  А если она не влазит в блочную память, что делать? "В трёх литровую банку не налить четыре литра пива" Вопрос: Что делать ??? Ответ: искать бутыль или пить меньше пива.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|