warrior-2001 0 17 февраля, 2014 Опубликовано 17 февраля, 2014 · Жалоба Вот что-то каши много теперь стало. 1 - я предлагал грузиться имеено из ончипа! Сразу! Это когда ончип память инициализируется вашим кодом для Ниоса сразу. Это hex файл подключить надо в Qsys при создании самой ончип памяти. 2 - Раз теперь загрузка есть - смотрите, что вам генерит программер. Его нутро не сложное и по коду множно понять где заголовок загрузчика, какого размера сам код, где закончился код, что доливается после кода до кратного числа в память. Там вроде всё просто. Бывало - приходилось писать свой генератор .bin файлов для заливки во флеш память. По разным причинам. Но удалось и всё работает. Возможно, что размер указан неверно. Или у программера указано перелить всё содержимое флеши в ончип. У альтеры есть мануал по способам загрузки: Alternate Nios Boot Methods. Может покурить его. Ну и багрепорт почитать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 17 февраля, 2014 Опубликовано 17 февраля, 2014 · Жалоба Сразу после добавления проекта Квартус в Hardware Connections появляются такие ошибки. 1 - я предлагал грузиться имеено из ончипа! Сразу! Это когда ончип память инициализируется вашим кодом для Ниоса сразу. Это hex файл подключить надо в Qsys при создании самой ончип памяти. Это hex файл перед подключением нужно переделать?У того что у меня сейчас стартовый адрес 0х8020. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 17 февраля, 2014 Опубликовано 17 февраля, 2014 · Жалоба Это hex файл перед подключением нужно переделать? Его нужно получить их эклипса. Результат компиляции вашего ПО для Ниоса. Сейчас не могу сказать, где там эти галочки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 17 февраля, 2014 Опубликовано 17 февраля, 2014 · Жалоба Его нужно получить их эклипса. Результат компиляции вашего ПО для Ниоса. Сейчас не могу сказать, где там эти галочки. Флажок enable_alt_load в настройках bsp?Попробовал несколько вариантов,всегда у *.hex стартовый адрес 0х0003EE53. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 18 февраля, 2014 Опубликовано 18 февраля, 2014 · Жалоба Значит это допустимая ситуация? да, вообще не понимаю, зачем все это нужно. во всяком случае, с этим можно потом разобраться Пробовал ставить флажки ,но кнопка Start после refresh остаётся недоступной. в консоли вбейте: nios2-flash-programmer --verbose если покажет, что видит регистры EPCS, то накидайте скрипт а-ля: #!/bin/sh EPCS_BASE=0x100a800 cd /home/vadik/Qdesigns/L150_220_test # Creating .flash file for the FPGA configuration "$SOPC_KIT_NIOS2/bin/sof2flash" --epcs --input="./L150_220_test.sof" --output="L150_220_test.flash" # Programming flash with the FPGA configuration "$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --epcs --base=$EPCS_BASE "L150_220_test.flash" # Creating .flash file for the project "$SOPC_KIT_NIOS2/bin/elf2flash" --epcs --after="L150_220_test.flash" --input="./software/L150_220_sw/L150_220_sw.elf" --output="epcs_flash_controller_0.flash" # Programming flash with the project "$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --epcs --base=$EPCS_BASE "epcs_flash_controller_0.flash" и забудьте про этот корявый эклипсовский гуй Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 18 февраля, 2014 Опубликовано 18 февраля, 2014 · Жалоба и забудьте про этот корявый эклипсовский гуй Огромное спасибо! Вот уважаю такие бескомпромиссные ответы. Сейчас попробую,только скажите как выбрать EPCS_BASE? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 18 февраля, 2014 Опубликовано 18 февраля, 2014 · Жалоба Огромное спасибо! Вот уважаю такие бескомпромиссные ответы. Сейчас попробую,только скажите как выбрать EPCS_BASE? Так это же адрес из системы Qsys для EPCS. Я не понимаю, отчего у вас получаются разные адреса в Qsys и в hex. Может в этом и косяк. Я с Ниосом работаю только в Quartus 11.1sp2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 18 февраля, 2014 Опубликовано 18 февраля, 2014 · Жалоба Так это же адрес из системы Qsys для EPCS. Я не понимаю, отчего у вас получаются разные адреса в Qsys и в hex. Может в этом и косяк. Адрес чего?Епцс-контроллера?Для чего кому-то знать какой адрес на шине имеет контроллер? Я выше приводил скрипты,там ключа --base нет,скрипты брал на www.naliwator.narod.ru Пока беру тайм-аут,буду переустанавливать ОС на компе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 19 февраля, 2014 Опубликовано 19 февраля, 2014 · Жалоба Адрес чего?Епцс-контроллера?Для чего кому-то знать какой адрес на шине имеет контроллер? именно, сам адрес можно взять в system.h или из QSys выдернуть. смысл в том, что nios2-flash-programmer шьет "на горячую", используя контроллер EPCS (который на самом деле SPI). кстати, забыл написать, что sof уже должен быть загружен (при первой прошивке можно использовать nios2-configure-sof). при последующих манипуляциях sof нужно подгружать только если сменится адрес контроллера Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 20 февраля, 2014 Опубликовано 20 февраля, 2014 · Жалоба именно, сам адрес можно взять в system.h или из QSys выдернуть. смысл в том, что nios2-flash-programmer шьет "на горячую", используя контроллер EPCS (который на самом деле SPI). кстати, забыл написать, что sof уже должен быть загружен (при первой прошивке можно использовать nios2-configure-sof). при последующих манипуляциях sof нужно подгружать только если сменится адрес контроллера Ясно,спасибо! Переустановил у себя ОС,Квартус и т.д. Е.М.Н.И.П раньше скрипты были в файлах *.sh например elf2flash.sh , сейчас же есть только elf2flash без расширения с загадочным содержимым: #!/bin/sh . "${0%[\\/]*}/sh_jar.sh" Или так и должно быть и память опять подводит? WinXP32. Кстати,а чем плох метод предложенный warrior-2001? По моему это самый короткий путь. Правда у меня ещё не получилось сделать *.hех из *.elf для инициализации ram , отвлекаюсь постоянно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 20 февраля, 2014 Опубликовано 20 февраля, 2014 · Жалоба Кстати,а чем плох метод предложенный warrior-2001? По моему это самый короткий путь. Отвечу сам пожалуй. Минус в том, что ПО для процессора по сути хранится в самой конфигурации ПЛИС. И если захотите сменить ПО, не меняя прошивку(а вы захотите ;) ), то придётся перекомпиливать весь проект в квартусе с новым hex файлом. Так что в моём случае - это лишь первый этап. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 20 февраля, 2014 Опубликовано 20 февраля, 2014 · Жалоба И если захотите сменить ПО, не меняя прошивку(а вы захотите ;) ), то придётся перекомпиливать весь проект в квартусе с новым hex файлом. hex можно обновить и без полной пересборки проекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 20 февраля, 2014 Опубликовано 20 февраля, 2014 · Жалоба А Вы не правы. Ведь есть же такая чудесная команда как Update Memory Initialization File. Е.М.Н.И.П раньше скрипты были в файлах *.sh например elf2flash.sh , сейчас же есть только elf2flash без расширения с загадочным содержимым: #!/bin/sh . "${0%[\\/]*}/sh_jar.sh" Или так и должно быть и память опять подводит? WinXP32. Таки память меня подвела,скрипты нормальные. Ваш метод заработал с полоборота :rolleyes: Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 21 февраля, 2014 Опубликовано 21 февраля, 2014 · Жалоба сейчас же есть только elf2flash без расширения с загадочным содержимым: #!/bin/sh . "${0%[\\/]*}/sh_jar.sh" это тоже shell-script, в *nix расширения не обязательны Кстати,а чем плох метод предложенный warrior-2001? По моему это самый короткий путь. Правда у меня ещё не получилось сделать *.hех из *.elf для инициализации ram , отвлекаюсь постоянно. мне скрипт удобнее тем, что он хоть напишет, если что не так пошло. а квартусовский программер выкинет что-нибудь типа "JTAG error $*&^*#%" и сиди думай. а еклипсовские приблуды имеют свойство падать вообще молча (не все, зависит от версии и погоды на Марсе). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 февраля, 2014 Опубликовано 21 февраля, 2014 · Жалоба мне скрипт удобнее тем, что он хоть напишет, если что не так пошло. а квартусовский программер выкинет что-нибудь типа "JTAG error $*&^*#%" и сиди думай. а еклипсовские приблуды имеют свойство падать вообще молча (не все, зависит от версии и погоды на Марсе). Это да,но команду Update Memory Initialization File можно и скриптом выполнить. Помогите,плз,разобраться с прерываниями.Получается так что прерывания возникают всегда,даже когда нет принимаемых данных.Как такое может быть,ведь при чтении данных флаг RRDY сниматься должен? static void spi_slave_isr(void* isr_context) { volatile alt_u8 data_rx; RES_BIT_OUTPORT(21); data_rx = (char)(IORD_ALTERA_AVALON_SPI_RXDATA(SPI_SLAVE_BASE))&0x000000ff; IOWR_ALTERA_AVALON_SPI_STATUS(SPI_SLAVE_BASE, 0x0); *isr_context = (alt_u16)data_rx; SET_BIT_OUTPORT(21); } Выяснилось что SPI здесь не виноват,прерывания возникают даже если в регистре SPI снять все маски прерываний. Они возникают сразу после регистрации обработчика. void Irq_init() { // IOWR_ALTERA_AVALON_SPI_CONTROL(SPI_SLAVE_BASE, ALTERA_AVALON_SPI_CONTROL_IRRDY_MSK | ALTERA_AVALON_SPI_CONTROL_IE_MSK); // Регистрация обработчика прерываний t1=alt_ic_isr_register( SPI_SLAVE_IRQ_INTERRUPT_CONTROLLER_ID, SPI_SLAVE_IRQ, spi_slave_isr, spi_buf_rx, flags); } С чем это может быть связано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться