Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: новый проект
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Страницы: 1, 2
_Anatoliy
Всем доброго дня!
Делаю новый проект с nios,похоже снова что то напутал,застрял на загрузке.
После включения питания и загрузки хард-части начинает грузиться софт-часть,но как-то странно.На линии epcs_flash_controller_dclk идут пачки клока по 8 тактов и интервалом 2 мкс,этот процесс длится примерно 8 секунд после чего полная тишина.Причём линия epcs_flash_controller_sce так и остаётся в нуле. Мемори-эдитором смотрел область памяти - там только 0xFF ,т.е. загрузки из epcs не происходит.Посмотрите,плз,нет ли ошибок в qsys.
Kuzmi4
2 _Anatoliy
тут надо бы ещё лог сообщений Qsys (если есть варнинги), настройки NIOS2 и сообщения при сборке - какие там варнинги по ходу дела. А так если не ругается Qsys - значит 100% дело в настройках а не в соединении.
_Anatoliy
Цитата(Kuzmi4 @ Feb 12 2014, 15:32) *
2 _Anatoliy
тут надо бы ещё лог сообщений Qsys (если есть варнинги), настройки NIOS2 и сообщения при сборке - какие там варнинги по ходу дела. А так если не ругается Qsys - значит 100% дело в настройках а не в соединении.

Спасибо! Qsys при сборке выдаёт 4 варнинга,один о том что не задействовано прерывание SPI, и три касаемо епцс-загрузчика.Но что они означают?

Вот настройки корки ниос.

Альтера говорит что подобные варнинги вроде можно игнорировать.
Kuzmi4
2 _Anatoliy
На счёт варнингов - так оно и есть, это частично AV-ST интерфейс, он вам не надо.
В принципе классическая конфигурация, как по документам, должен быть автоматом сгенерирован загрузчик и всё должно работать.
А версия софта у вас какая (там просто в 13м квартусе помнится epcs_flash_controller сильно "доработан" - не исключено что что-то поломали когда "дорабатывали")? Если 13я - возможно есть смысл откатиться на более позднюю версию..
_Anatoliy
Цитата(Kuzmi4 @ Feb 12 2014, 17:19) *

Квартус 12.1
А таки похоже что-то в qsys не сростается.Не меняя ничего остального просто добавил в qsys ещё три компонента : sysid,jtag_uart и spi_slave - поведение изменилось коренным образом.Теперь после взвода CONF_DONE вообще нет обращения к epcs.Я в шоке - каждый новый проект как новый бой.Что ещё можно сделать?Пока попробую с нуля собрать qsys(сейчас использовал заготовку от прошлого проекта).
Kuzmi4
Цитата(_Anatoliy @ Feb 13 2014, 10:15) *
..Что ещё можно сделать?..

Можно в принципе попробовать в 9/10 квартусе - там точно всё работало, потом посмотреть хекс-файло которое сделано в новой и в старой вериях. Возможно его замена в 12й версии даст какие то результаты..
Golikov A.
у ксалинкса взять старый проект и адаптировать под новый - 100% гарантия глюков. Всегда проект делаю заново, и ксалинкс еще библиотеки перекомпиливает постоянно под разные конфигурации с отладкой и без, потому старое в новое - лучше заново. Думаю что они не сами это придумали и у альтеры подобные проблемы)
Stewart Little
Цитата(_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).
_Anatoliy
Цитата(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.Жаль железа уже нет,проверил бы на старом камне.
warrior-2001
Совет прост.
Начните отладку с ончип памяти!
Причём убедитесь, что в начале она инициализируется реальным hex файлом, чтобы при старте и до прогрузки из Эклипса ниос не сошёл с ума от мусора в ончипе.
Когда всё заработает - копайте в сторону скриптов и интерфейса FlashProgrammer.
Бывало, что иногда только через меню получалось зашиться во флеш через программер, а скриптами - нифига. Разбираться было некогда.
К тому же Эклипс умеет генерить сразу готовый файл .flash.
_Anatoliy
Цитата(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

Как это понять?Может это быть причиной?
Stewart Little
Цитата(_Anatoliy @ Feb 13 2014, 15:16) *
Только камень другой,в прошлом проекте был EP3C55F484, а в новом EP3C25E144.Жаль железа уже нет,проверил бы на старом камне.

Стандартный вопрос - брюхо у EP3C25E144 не забыли к земле припаять?
_Anatoliy
Цитата(Stewart Little @ Feb 13 2014, 15:29) *
Стандартный вопрос - брюхо у EP3C25E144 не забыли к земле припаять?

Не,это святое rolleyes.gif
Stewart Little
Цитата(_Anatoliy @ Feb 13 2014, 16:38) *
Спасибо!В том то и дело что ончип память не инициализируется - epcs_flash_controller читает что-то из епцс целых 8 секунд,после этого в памяти нули.

1. Ну а конфигурация ПЛИСки происходит корректно? CONF_DONE и INIT_DONE взводятся?
2. А если сперва залить конфигурацию по JTAGу, то после этого будет с эклипсом коннектиться?
_Anatoliy
Цитата(Stewart Little @ Feb 13 2014, 16:40) *
1. Ну а конфигурация ПЛИСки происходит корректно? CONF_DONE и INIT_DONE взводятся?
2. А если сперва залить конфигурацию по JTAGу, то после этого будет с эклипсом коннектиться?

1). Всё корректно и всё взводится.
2). Так тоже не коннектится.

Пока мыслей нет решил захватить сигналы чтения из епцс сигналтапом,может что и прояснится.
Stewart Little
Цитата(_Anatoliy @ Feb 13 2014, 18:49) *
Пока мыслей нет решил захватить сигналы чтения из епцс сигналтапом,может что и прояснится.

А в настройках bsp случайно галка "Allow code at reset" не взведена?
_Anatoliy
Цитата(Stewart Little @ Feb 13 2014, 16:58) *
А в настройках bsp случайно галка "Allow code at reset" не взведена?

Блин,взведена... Не нужно было?

После того как убрал эту палку ситуация изменилась. После взвода CONF_DONE обращения к епцс совсем нету секунд 20.После этого начинается какой-то обмен с епцс и идёт бесконечно долго.

Зато по Jtag вроде законнектился,спасибо.Завтра досмотрю.
Golikov A.
Цитата(Stewart Little @ Feb 13 2014, 17:29) *
Стандартный вопрос - брюхо у EP3C25E144 не забыли к земле припаять?

а че альтеры правда к земле дном корпуса припаиваются?
Копейкин
Цитата(Golikov A. @ Feb 13 2014, 19:59) *
а че альтеры правда к земле дном корпуса припаиваются?

Честная, святая правда!
И не припаявший будет горько о том сожалеть.
Golikov A.
че прям кладешь микруху и паяльником-феном греешь? как БГА? как ей пузо то нагретьsm.gif?

вот же придумают супостаты....
Stewart Little
Цитата(Golikov A. @ Feb 13 2014, 20:50) *
че прям кладешь микруху и паяльником-феном греешь? как БГА? как ей пузо то нагретьsm.gif?
вот же придумают супостаты....

Ну не хватило ног у корпуса для земли. Вот ее на exposed pad и вывели sm.gif
А паять - да, можно феном. Только при этом еще и плату подогревать надо (у меня из строительного фена сделан прехитер, а монтажный фен используется по назначению sm.gif ).

Цитата(_Anatoliy @ Feb 13 2014, 19:53) *
Блин,взведена... Не нужно было?

Разумеется - если у Вас используется epcs_flash_controller, то эту галку взводить не надо.
При взведении этой опции линкер будет располагать сегмент кода по адресу сброса, а там у Вас ПЗУ epcs_flash_controller'а, в котором копировщик лежит.
Таким образом - конфликт налицо sm.gif
_Anatoliy
Цитата(Stewart Little @ Feb 14 2014, 11:07) *
Разумеется - если у Вас используется epcs_flash_controller, то эту галку взводить не надо.
При взведении этой опции линкер будет располагать сегмент кода по адресу сброса, а там у Вас ПЗУ epcs_flash_controller'а, в котором копировщик лежит.
Таким образом - конфликт налицо sm.gif

Ясно,спасибо! С JTAG сейчас проблем нет,коннектится нормально. А вот с epcs_flash_controller проблема так и осталась,загрузка в onchip ram не выполняется,хотя обращение к епцс есть. Нет ли у Вас ещё каких мыслей?
_Anatoliy
Вот захватил сигналы on-chip-ram, видно что epcs_flash_controller всё-таки записывает данные в память,причём данные соответствуют содержимому епцс и идут в нужном порядке. При этом мемори-эдитор показывает что в памяти либо нули либо 0хFF и ниос не работает. Бред какой-то...
vadimuzzz
а содержимое флешки проверяли?
_Anatoliy
Цитата(vadimuzzz @ Feb 15 2014, 02:22) *
а содержимое флешки проверяли?

После программирования выполняется контроль CRC,всё нормально.
Тут очень похоже что epcs_flash_controller считывает данные в on-chip-ram , но после этого он не останавливается а продолжает шелестеть дальше. И on-chip-ram по новой забивается 0хFF из пустой области епцс. Это видно осциллом,клок на епцс идёт порядка 5-8 секунд. Коллеги,можете подсказать кто и каким образом указывает epcs_flash_controller-у количество байт данных , которое он должен считать?
_Anatoliy
Так и есть,если тормознуть 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?
vadimuzzz
исходники загрузчика есть в составе квартуса, можете сравнить с дизассемблером. такое впечатление, что баг программатора (заголовок битый или типа того). а вы оба способа пробовали - с jic и с nios2-flash-programmer?

upd: и да, crc - не показатель, я помню минимум 2 версии квартуса с корявым загрузчиком, контрольная сумма-то совпадает, только образ изначально битый/кривой. имеет смысл тот же проект прогнать на другой версии ПО
_Anatoliy
Цитата(vadimuzzz @ Feb 15 2014, 13:36) *
исходники загрузчика есть в составе квартуса, можете сравнить с дизассемблером. такое впечатление, что баг программатора (заголовок битый или типа того). а вы оба способа пробовали - с jic и с nios2-flash-programmer?

upd: и да, crc - не показатель, я помню минимум 2 версии квартуса с корявым загрузчиком, контрольная сумма-то совпадает, только образ изначально битый/кривой. имеет смысл тот же проект прогнать на другой версии ПО

Спасибо!
Я пробовал только с jic и Run As. При выполнении Run As ниос работает нормально. А nios2-flash-programmer я ещё не пользовал,как-то обходился без него. Сейчас попробовал законнектиться - результат на картинке. От чего это может быть? Подскажите, плз, что ещё можно сделать?
vadimuzzz
галочки поставьте, чтоб он игнорировал ID и прочее
_Anatoliy
Цитата(vadimuzzz @ Feb 17 2014, 11:37) *
галочки поставьте, чтоб он игнорировал ID и прочее

Значит это допустимая ситуация?
Пробовал ставить флажки ,но кнопка Start после refresh остаётся недоступной.
warrior-2001
Вот что-то каши много теперь стало.
1 - я предлагал грузиться имеено из ончипа! Сразу! Это когда ончип память инициализируется вашим кодом для Ниоса сразу. Это hex файл подключить надо в Qsys при создании самой ончип памяти.
2 - Раз теперь загрузка есть - смотрите, что вам генерит программер.
Его нутро не сложное и по коду множно понять где заголовок загрузчика, какого размера сам код, где закончился код, что доливается после кода до кратного числа в память. Там вроде всё просто. Бывало - приходилось писать свой генератор .bin файлов для заливки во флеш память. По разным причинам. Но удалось и всё работает. Возможно, что размер указан неверно. Или у программера указано перелить всё содержимое флеши в ончип.
У альтеры есть мануал по способам загрузки:
Alternate Nios Boot Methods. Может покурить его. Ну и багрепорт почитать.
_Anatoliy
Сразу после добавления проекта Квартус в Hardware Connections появляются такие ошибки.

Цитата(warrior-2001 @ Feb 17 2014, 11:50) *
1 - я предлагал грузиться имеено из ончипа! Сразу! Это когда ончип память инициализируется вашим кодом для Ниоса сразу. Это hex файл подключить надо в Qsys при создании самой ончип памяти.

Это hex файл перед подключением нужно переделать?У того что у меня сейчас стартовый адрес 0х8020.
warrior-2001
Цитата(_Anatoliy @ Feb 17 2014, 14:12) *
Это hex файл перед подключением нужно переделать?


Его нужно получить их эклипса. Результат компиляции вашего ПО для Ниоса. Сейчас не могу сказать, где там эти галочки.

_Anatoliy
Цитата(warrior-2001 @ Feb 17 2014, 12:40) *
Его нужно получить их эклипса. Результат компиляции вашего ПО для Ниоса. Сейчас не могу сказать, где там эти галочки.

Флажок enable_alt_load в настройках bsp?Попробовал несколько вариантов,всегда у *.hex стартовый адрес 0х0003EE53.
vadimuzzz
Цитата(_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"

и забудьте про этот корявый эклипсовский гуй
_Anatoliy
Цитата(vadimuzzz @ Feb 18 2014, 02:30) *
и забудьте про этот корявый эклипсовский гуй

Огромное спасибо!
Вот уважаю такие бескомпромиссные ответы.
Сейчас попробую,только скажите как выбрать EPCS_BASE?
warrior-2001
Цитата(_Anatoliy @ Feb 18 2014, 11:15) *
Огромное спасибо! Вот уважаю такие бескомпромиссные ответы. Сейчас попробую,только скажите как выбрать EPCS_BASE?





Так это же адрес из системы Qsys для EPCS.

Я не понимаю, отчего у вас получаются разные адреса в Qsys и в hex. Может в этом и косяк. Я с Ниосом работаю только в Quartus 11.1sp2.

_Anatoliy
Цитата(warrior-2001 @ Feb 18 2014, 12:08) *
Так это же адрес из системы Qsys для EPCS.
Я не понимаю, отчего у вас получаются разные адреса в Qsys и в hex. Может в этом и косяк.

Адрес чего?Епцс-контроллера?Для чего кому-то знать какой адрес на шине имеет контроллер?
Я выше приводил скрипты,там ключа --base нет,скрипты брал на www.naliwator.narod.ru
Пока беру тайм-аут,буду переустанавливать ОС на компе.
vadimuzzz
Цитата(_Anatoliy @ Feb 18 2014, 18:06) *
Адрес чего?Епцс-контроллера?Для чего кому-то знать какой адрес на шине имеет контроллер?

именно, сам адрес можно взять в system.h или из QSys выдернуть. смысл в том, что nios2-flash-programmer шьет "на горячую",
используя контроллер EPCS (который на самом деле SPI). кстати, забыл написать, что sof уже должен быть загружен
(при первой прошивке можно использовать nios2-configure-sof). при последующих манипуляциях sof нужно подгружать только если сменится адрес контроллера
_Anatoliy
Цитата(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 , отвлекаюсь постоянно.
warrior-2001
Цитата(_Anatoliy @ Feb 20 2014, 15:08) *
Кстати,а чем плох метод предложенный warrior-2001? По моему это самый короткий путь.





Отвечу сам пожалуй.

Минус в том, что ПО для процессора по сути хранится в самой конфигурации ПЛИС.

И если захотите сменить ПО, не меняя прошивку(а вы захотите wink.gif ), то придётся перекомпиливать весь проект в квартусе с новым hex файлом.

Так что в моём случае - это лишь первый этап.

alexadmin
Цитата(warrior-2001 @ Feb 20 2014, 17:10) *
И если захотите сменить ПО, не меняя прошивку(а вы захотите wink.gif ), то придётся перекомпиливать весь проект в квартусе с новым hex файлом.


hex можно обновить и без полной пересборки проекта.
_Anatoliy
Цитата(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) *

Ваш метод заработал с полоборота rolleyes.gif
Спасибо!
vadimuzzz
Цитата(_Anatoliy @ Feb 20 2014, 18:08) *
сейчас же есть только elf2flash без расширения с загадочным содержимым:
Код
#!/bin/sh
. "${0%[\\/]*}/sh_jar.sh"

это тоже shell-script, в *nix расширения не обязательны
Цитата
Кстати,а чем плох метод предложенный warrior-2001? По моему это самый короткий путь. Правда у меня ещё не получилось сделать *.hех из *.elf для инициализации ram , отвлекаюсь постоянно.

мне скрипт удобнее тем, что он хоть напишет, если что не так пошло. а квартусовский программер выкинет что-нибудь типа "JTAG error $*&^*#%" и сиди думай. а еклипсовские приблуды имеют свойство падать вообще молча (не все, зависит от версии и погоды на Марсе).
_Anatoliy
Цитата(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);
}

С чем это может быть связано?
vadimuzzz
Цитата(_Anatoliy @ Feb 21 2014, 16:29) *
С чем это может быть связано?

либо в железе глюк (надо лезть сигналтапом в потроха контроллера SPI), либо SPI_SLAVE_BASE куда-то не туда показывает (например, сменились адреса в Qsys).
_Anatoliy
Цитата(vadimuzzz @ Feb 22 2014, 03:57) *
либо в железе глюк (надо лезть сигналтапом в потроха контроллера SPI), либо SPI_SLAVE_BASE куда-то не туда показывает (например, сменились адреса в Qsys).

Ага,спасибо,уже иду по следу...
_Anatoliy
Коллеги,ещё один вопрос остался.Касается ниосовского SPI_slave,у него запрос прерывания формируется по окончанию сигнала SS.
Таким образом под SS может быть до 4-х принятых байт.А если нужно принять команду из 6 или 10 байт?Самому писать SPI_slave?Или дробить команду на несколько посылок? Как поступаете?И совсем не понятно как при таком построении выполнять чтение данных по указанному адресу.
vadimuzzz
Цитата(_Anatoliy @ Feb 23 2014, 02:02) *
Таким образом под SS может быть до 4-х принятых байт.А если нужно принять команду из 6 или 10 байт?Самому писать SPI_slave?Или дробить команду на несколько посылок? Как поступаете?И совсем не понятно как при таком построении выполнять чтение данных по указанному адресу.

я свой контроллер SPI писал, с картами и блудницами. прерывания, правда, не делал - мне надо было только чтоб пакет любой длины был, но не вижу проблемы
_Anatoliy
Цитата(vadimuzzz @ Feb 23 2014, 08:37) *
я свой контроллер SPI писал, с картами и блудницами. прерывания, правда, не делал - мне надо было только чтоб пакет любой длины был, но не вижу проблемы

Спасибо!
Насчёт своего контроллера понятно,можно сделать такой какой хочется.Я думал может штатный всё же удастся применить.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.