|
новый проект |
|
|
|
 |
Ответов
(1 - 55)
|
Feb 12 2014, 14:24
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(Kuzmi4 @ Feb 12 2014, 15:32)  2 _Anatoliy тут надо бы ещё лог сообщений Qsys (если есть варнинги), настройки NIOS2 и сообщения при сборке - какие там варнинги по ходу дела. А так если не ругается Qsys - значит 100% дело в настройках а не в соединении. Спасибо! Qsys при сборке выдаёт 4 варнинга,один о том что не задействовано прерывание SPI, и три касаемо епцс-загрузчика.Но что они означают? Вот настройки корки ниос. Альтера говорит что подобные варнинги вроде можно игнорировать.
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 13 2014, 10:02
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(_Anatoliy @ Feb 12 2014, 17:24)  После включения питания и загрузки хард-части начинает грузиться софт-часть,но как-то странно.На линии epcs_flash_controller_dclk идут пачки клока по 8 тактов и интервалом 2 мкс,этот процесс длится примерно 8 секунд после чего полная тишина.Причём линия epcs_flash_controller_sce так и остаётся в нуле. Мемори-эдитором смотрел область памяти - там только 0xFF ,т.е. загрузки из epcs не происходит.Посмотрите,плз,нет ли ошибок в qsys. А EPCS-ку каким образом прошивали? Если мне склероз не изменяет, с каких-то 12-х версий FlashProgrammer начал вести себя непонятным образом, и приходилось прошивать конфигуратор через JIC (предварительно нужно было преобразовывать sof и elf в формат flash, затем из flash в hex, затем объединять оба этих hex'а в jic).
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Feb 13 2014, 11:16
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(Stewart Little @ Feb 13 2014, 12:02)  А EPCS-ку каким образом прошивали? Если мне склероз не изменяет, с каких-то 12-х версий FlashProgrammer начал вести себя непонятным образом, и приходилось прошивать конфигуратор через JIC (предварительно нужно было преобразовывать sof и elf в формат flash, затем из flash в hex, затем объединять оба этих hex'а в jic). Ага,примерно так и делаю - sof и elf в формат flash, затем из эльфовской flash в hex, затем объединяю hex и sof в jic. Посмотрите,плз,скрипт на наличие косяков. Код sof2flash --epcs --input=nios_kit.sof --output=nios_kit_hw.flash --verbose elf2flash --input=nios_2s_app.elf --output=nios_kit_sw.flash --epcs --after=nios_kit_hw.flash --verbose nios2-elf-objcopy -I srec -O ihex nios_kit_sw.flash nios_2s_sw.hex --verbose Вот отчёт : Код BLOCK START ADDRESS END ADDRESS
Page_0 0x00000000 0x0003CFDB nios_2s_sw.hex 0x0003CFDC 0x0003F267 Пересборка qsys и bsp с нуля ничего не дала,на линии epcs_flash_controller_dclk идут пачки клока по 8 тактов и интервалом 2 мкс,этот процесс длится примерно 8 секунд после чего полная тишина.Причём линия epcs_flash_controller_sce так и остаётся в нуле. Я правильно понимаю что если epcs_flash_controller используется только для загрузки программы то его выход прерывания можно не подключать? Ещё добивает что предыдущий проект я делал именно в Q12.1 и всё загружалось и работало... И скрипты те же... Только камень другой,в прошлом проекте был EP3C55F484, а в новом EP3C25E144.Жаль железа уже нет,проверил бы на старом камне.
|
|
|
|
|
Feb 13 2014, 12:38
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(warrior-2001 @ Feb 13 2014, 13:54)  Совет прост. Начните отладку с ончип памяти! Причём убедитесь, что в начале она инициализируется реальным hex файлом, чтобы при старте и до прогрузки из Эклипса ниос не сошёл с ума от мусора в ончипе. Когда всё заработает - копайте в сторону скриптов и интерфейса FlashProgrammer. Бывало, что иногда только через меню получалось зашиться во флеш через программер, а скриптами - нифига. Разбираться было некогда. К тому же Эклипс умеет генерить сразу готовый файл .flash. Спасибо!В том то и дело что ончип память не инициализируется - epcs_flash_controller читает что-то из епцс целых 8 секунд,после этого в памяти нули. Я сейчас попробовал из Эклипса по jtag в режиме отладки приконнектиться,пишет что ошибка при загрузке.Вот репорт: Код !ENTRY com.altera.sbtgui.launch 1 0 2014-02-13 14:27:02.406 !MESSAGE Executing: [C:\altera\12.1\quartus\bin\cygwin\bin\bash.exe, -c, nios2-download '--cable=USB-Blaster on localhost [USB-0]' --device=1 --instance=0 --accept-bad-sysid --sidp=0x12070 /cygdrive/e/My_Designs/2014/ModulatorCOFDM-8K_2x/Nios_kit/software/nios_2s_app/nios_2s_app.elf]
!ENTRY com.altera.sbtgui.launch 4 0 2014-02-13 14:27:05.078 !MESSAGE Failed Executing: [nios2-download, '--cable=USB-Blaster on localhost [USB-0]', --device=1, --instance=0, --accept-bad-sysid, --sidp=0x12070, /cygdrive/e/My_Designs/2014/ModulatorCOFDM-8K_2x/Nios_kit/software/nios_2s_app/nios_2s_app.elf] return code: 4, 'other error'
!ENTRY com.altera.sbtgui.launch 4 0 2014-02-13 14:27:05.078 !MESSAGE Downloading ELF Process failed Как это понять?Может это быть причиной?
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 13 2014, 16:21
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Цитата(Golikov A. @ Feb 13 2014, 19:59)  а че альтеры правда к земле дном корпуса припаиваются? Честная, святая правда! И не припаявший будет горько о том сожалеть.
|
|
|
|
|
Feb 14 2014, 09:07
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(Golikov A. @ Feb 13 2014, 20:50)  че прям кладешь микруху и паяльником-феном греешь? как БГА? как ей пузо то нагреть  ? вот же придумают супостаты.... Ну не хватило ног у корпуса для земли. Вот ее на exposed pad и вывели  А паять - да, можно феном. Только при этом еще и плату подогревать надо (у меня из строительного фена сделан прехитер, а монтажный фен используется по назначению  ). Цитата(_Anatoliy @ Feb 13 2014, 19:53)  Блин,взведена... Не нужно было? Разумеется - если у Вас используется epcs_flash_controller, то эту галку взводить не надо. При взведении этой опции линкер будет располагать сегмент кода по адресу сброса, а там у Вас ПЗУ epcs_flash_controller'а, в котором копировщик лежит. Таким образом - конфликт налицо
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Feb 15 2014, 10:25
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Так и есть,если тормознуть epcs_flash_controller на некоторое время и просмотреть содержимое on-chip-ram то можно увидеть загруженный код. Правда выглядит он как-то для меня непонятно. Вот листинг стартовой секции: Код Disassembly of section .text:
00008020 <_start>: 8020: 06c00074 movhi sp,1 8024: dec00014 ori sp,sp,0 8028: 06800074 movhi gp,1 802c: d6889d14 ori gp,gp,8820 8030: 00800034 movhi r2,0 8034: 10a8a114 ori r2,r2,41604 8038: 00c00034 movhi r3,0 803c: 18e8c014 ori r3,r3,41728 8040: 10c00326 beq r2,r3,8050 <_start+0x30> 8044: 10000015 stw zero,0(r2) 8048: 10800104 addi r2,r2,4 804c: 10fffd36 bltu r2,r3,8044 <_start+0x24> 8050: 000a0640 call a064 <alt_main> Память on-chip-ram – 0x00008000…0x0000FFFF 1). В 32-битных словах из памяти наблюдается сдвижка на идин байт. 2). Весь блок кода должен начинаться с восьмого адреса on-chip-ram,реально начинается с адреса 0х800. Кто нибудь разбирался как реально мапится код в on-chip-ram?
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 17 2014, 09:13
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(vadimuzzz @ Feb 15 2014, 13:36)  исходники загрузчика есть в составе квартуса, можете сравнить с дизассемблером. такое впечатление, что баг программатора (заголовок битый или типа того). а вы оба способа пробовали - с jic и с nios2-flash-programmer?
upd: и да, crc - не показатель, я помню минимум 2 версии квартуса с корявым загрузчиком, контрольная сумма-то совпадает, только образ изначально битый/кривой. имеет смысл тот же проект прогнать на другой версии ПО Спасибо! Я пробовал только с jic и Run As. При выполнении Run As ниос работает нормально. А nios2-flash-programmer я ещё не пользовал,как-то обходился без него. Сейчас попробовал законнектиться - результат на картинке. От чего это может быть? Подскажите, плз, что ещё можно сделать?
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 17 2014, 10:40
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(_Anatoliy @ Feb 17 2014, 14:12)  Это hex файл перед подключением нужно переделать? Его нужно получить их эклипса. Результат компиляции вашего ПО для Ниоса. Сейчас не могу сказать, где там эти галочки.
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
Feb 18 2014, 00:30
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(_Anatoliy @ Feb 17 2014, 16:46)  Значит это допустимая ситуация? да, вообще не понимаю, зачем все это нужно. во всяком случае, с этим можно потом разобраться Цитата Пробовал ставить флажки ,но кнопка Start после refresh остаётся недоступной. в консоли вбейте: nios2-flash-programmer --verbose если покажет, что видит регистры EPCS, то накидайте скрипт а-ля: CODE #!/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"
и забудьте про этот корявый эклипсовский гуй
|
|
|
|
|
Feb 18 2014, 10:08
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(_Anatoliy @ Feb 18 2014, 11:15)  Огромное спасибо! Вот уважаю такие бескомпромиссные ответы. Сейчас попробую,только скажите как выбрать EPCS_BASE? Так это же адрес из системы Qsys для EPCS. Я не понимаю, отчего у вас получаются разные адреса в Qsys и в hex. Может в этом и косяк. Я с Ниосом работаю только в Quartus 11.1sp2.
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
Feb 19 2014, 01:23
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(_Anatoliy @ Feb 18 2014, 18:06)  Адрес чего?Епцс-контроллера?Для чего кому-то знать какой адрес на шине имеет контроллер? именно, сам адрес можно взять в system.h или из QSys выдернуть. смысл в том, что nios2-flash-programmer шьет "на горячую", используя контроллер EPCS (который на самом деле SPI). кстати, забыл написать, что sof уже должен быть загружен (при первой прошивке можно использовать nios2-configure-sof). при последующих манипуляциях sof нужно подгружать только если сменится адрес контроллера
|
|
|
|
|
Feb 20 2014, 11:08
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(vadimuzzz @ Feb 19 2014, 03:23)  именно, сам адрес можно взять в 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 , отвлекаюсь постоянно.
|
|
|
|
|
Feb 20 2014, 13:10
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(_Anatoliy @ Feb 20 2014, 15:08)  Кстати,а чем плох метод предложенный warrior-2001? По моему это самый короткий путь. Отвечу сам пожалуй. Минус в том, что ПО для процессора по сути хранится в самой конфигурации ПЛИС. И если захотите сменить ПО, не меняя прошивку(а вы захотите  ), то придётся перекомпиливать весь проект в квартусе с новым hex файлом. Так что в моём случае - это лишь первый этап.
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
Feb 20 2014, 13:39
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(warrior-2001 @ Feb 20 2014, 15:10)  А Вы не правы. Ведь есть же такая чудесная команда как Update Memory Initialization File. Цитата(_Anatoliy @ Feb 20 2014, 13:08)  Е.М.Н.И.П раньше скрипты были в файлах *.sh например elf2flash.sh , сейчас же есть только elf2flash без расширения с загадочным содержимым: Код #!/bin/sh . "${0%[\\/]*}/sh_jar.sh" Или так и должно быть и память опять подводит? WinXP32. Таки память меня подвела,скрипты нормальные. Цитата(vadimuzzz @ Feb 19 2014, 03:23)  Ваш метод заработал с полоборота Спасибо!
|
|
|
|
|
Feb 21 2014, 03:15
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(_Anatoliy @ Feb 20 2014, 18:08)  сейчас же есть только elf2flash без расширения с загадочным содержимым: Код #!/bin/sh . "${0%[\\/]*}/sh_jar.sh" это тоже shell-script, в *nix расширения не обязательны Цитата Кстати,а чем плох метод предложенный warrior-2001? По моему это самый короткий путь. Правда у меня ещё не получилось сделать *.hех из *.elf для инициализации ram , отвлекаюсь постоянно. мне скрипт удобнее тем, что он хоть напишет, если что не так пошло. а квартусовский программер выкинет что-нибудь типа "JTAG error $*&^*#%" и сиди думай. а еклипсовские приблуды имеют свойство падать вообще молча (не все, зависит от версии и погоды на Марсе).
|
|
|
|
|
Feb 21 2014, 09:29
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(vadimuzzz @ Feb 21 2014, 05:15)  мне скрипт удобнее тем, что он хоть напишет, если что не так пошло. а квартусовский программер выкинет что-нибудь типа "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); } С чем это может быть связано?
|
|
|
|
|
Feb 25 2014, 08:22
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(Kuzmi4 @ Feb 24 2014, 18:34)  Спасибо!Библиотечный компонент я закончил,всё скомпилилось нормально.Скажите, а как мне его теперь сохранить,если например ОС буду переустанавливать? Только теперь опять с загрузкой проблема.Не загружается *.elf в FPGA. Блин,как в сказке - нос вытащишь , хвост увязнет. Проект в Эклипсе пересобирал,не помогает.
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 25 2014, 08:54
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
2 _Anatoliy Я храню всё "хозяйство" проекта в соответствующих папках - то есть где сорцы, там и "*_hw.tcl"
А вообще имею в СВН-е простенький проект для корки с описанием и всем нужным. Далее, чтобы при генерации всё находилось как надо нужно вот такой скриптец
qusrcomp.7z ( 498 байт )
Кол-во скачиваний: 35запускать вот так из "Nios II х.х Command Shell" (например, в *.SH) Код .. quartus_sh --no_banner -t ../qusrcomp.tcl eth_gen_avs eth_mon_avs ... Приложил скриптец где вся генерация в куче (из того что было под рукой, для QII v9.0sp2)
process.7z ( 422 байт )
Кол-во скачиваний: 31Касательно вашей беды с nios2-download - попробуйте убрать ожидание после загрузки (--wait). У меня с *.elf и ключом "-g" работало всегда на любых конфигах.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|