Здравствуйте,
возникла у меня довольно странная проблема.
Есть плата собственного производства, на ней установлены Cyclone3, память DDR2 и АЦП. Задача - по нажатию кнопки в программе на компьютере сохранить данные от АЦП в памяти и затем передать их в компьютер. Это реализовано с использованием прямого доступа к памяти и FIFO. Работает хорошо, но сделано это было в Quartus 9.0 и Nios IDE, т.е. без eclipse.
Сейчас использую Quartus 12.1sp1. Открываю старый проект перегенерю систему в SOPC Builder, компелирую в Quartus, компелирую программу в Eclipse, прошиваю - не работает. А точнее всё запускается, програма переходит в нужную подпрограмму и зависает в ожидании окончания DMA.
Причём проделал такой эксперимент взял старый старые и новые .sof и .elf и попытался перекомбинировать старое с новым, чтобы понять где ошибка (т.к. базовые адреса в SOPC не менялись я подумал, что так можно делать). Результат - хорошо работает только старые .sof и .elf любые другие комбинации работаю плохо и либо зависают при первом же нажатии на кнопку получения данных или через короткое время.
В чём может быть проблемма? Может какие нибудь особенности нового Quartus или Eclipse и они как-то по другому компилируют?
P.S. Т.е. получается, что на старой прошивке ПЛИС новая программа работает плохо. Т.е. дело в компиляторе программы. Хотя это тоже очень странно ведь программа только инициализирует DMA и запускает приём данных, а далее данные записываются в память минуя процессор. Так почему же он зависает ведь прошивка старая - работающая?