Dimonira 0 13 января, 2019 Опубликовано 13 января, 2019 · Жалоба Привет всем. Есть платка с чипом EP4CE10E22C8, на которой решил попробовать NIOS (несколько лет с плисами не работал, а последним был xilinx). Использовал обучающий проект niosII_hw_dev_tutorial (tt_nios2_hardware_tutorial). Собирал пол года назад этот проект (в 17.0), он заработал и я его забросил. А тут делал другой проект в 18.1, который запускаться не захотел и я решил старый проект перенести в 18.1 и попробовать. Всё перегенерил, и qsys и fpga и программный проект (шаблон CountBinary) - всё работает. По UART выдаётся текст stdout, светодиоды мигают (8 шт.). После этого решил запустить NIOS на частоте 100МГц (было 50), для чего добавил в систему (qsys) PLL с умножением на 2. В схеме системы поднял PLL вверх, переключил клоки на выход PLL, перегенерил адреса (они поменялись) и всю систему. Потом сгенерил BSP, пересобрал проект софта и прошил всё во флешку EPCS. В итоге проект заработал лишь частично: по UART всё выдаётся, а светодиоды не горят. Начал разбираться, оказалось, что отладчик софта почему-то показывает старый адрес PIO (в тултипе и при разворачивании макроса), который был в варианте без PLL. Причём, в файле system.h значение корректное. Что только не делал, очистку проектов, всё перегенерировал и пересобирал - светодиоды не горят. В итоге попробовал сделать такой финт - в схеме системы опустил PLL вниз, обновил адреса, в результате адрес PIO стал таким же, как был раньше. После этого снова всё пересобрал и перепрошил - светодиоды заработали! Тогда возникает вопрос: как корректно делать обновление системы, чтобы подобных глюков не было? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hdl_student 0 14 января, 2019 Опубликовано 14 января, 2019 · Жалоба Добрый день. А можете .qsys выложить? Никогда с таким поведением не сталкивался. Ради интереса собрал count_binary из туториала на 17.1 с PLL внутри Qsys (я обычно ставлю его в toplevel) - все работает нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimonira 0 16 января, 2019 Опубликовано 16 января, 2019 · Жалоба Дык всё работало нормально, пока не стал менять Qsys. Сейчас ещё другой проект делал, так в нём уже после изменения Qsys тупо удалял весь софт и генерил его с нуля для перестраховки. Qsys приложил, в нём "фарш" из pll, nios2, epcs, i2c, spi, uart, jtag-uart, led*8, button, LCD 16x2. Что касается LCD 16x2, то я его добавил только вчера, захотел попробовать тоже подключить. Однако после этого пример CountBinary перестал собираться из-за такой ошибки: Quote In function `main': D:\Projects\PLM\Altera\niosprog\software\CountBinary/count_binary.c:348: undefined reference to `fopen' Я в NIOS-ах пока не силён и не знаю каким образом реализуется потоковая передача на LCD. Но компиляция валится на строке, где использован макрос открытия потока: #define LCD_OPEN() fopen("/dev/lcd_display", "w") Может предполагается наличие какой-то операционки? Но я что-то в туториалах такого не заметил. Как решается эта проблема? nios.qsys Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimonira 0 16 января, 2019 Опубликовано 16 января, 2019 · Жалоба Прояснил проблему с fopen. Оказалось, надо было снять с BSP опции по уменьшению кода. Однако теперь проект CountBinary не собирается из-за нехватки памяти, ибо на моей плате памяти нет, а внутренней не хватает, превышение аж на 56456 байта. Не судьба использовать LCD с NIOS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorVrn89 0 12 мая, 2020 Опубликовано 12 мая, 2020 · Жалоба Здравствуйте, не стал темы плодить, напишу здесь. Заметил при отладке кода в Eclipse debugger странности. Использую версию: Mars.2 Release (4.5.2) Build id: 20160218-0600. Суть проблемы: в режиме отладки указатель текущего положения при пошаговом исполнении кода( жму F5) движется странным образом- то откатывается назад, то пропускает строки или даже зацикливается, там где нет никаких циклов. Причем код достаточно простой, мигаю светодиодами. Привожу типичный проблемный момент: void leds_flash0(alt_u32 led_base, int prd) { static alt_u8 led_pattern;//Начальное значение int i,itr; led_pattern=0b1111; IOWR(led_base,0,led_pattern); itr=prd*0xFFF; for(i=0;i<itr;i++){} led_pattern=0b0000; IOWR(led_base,0,led_pattern); for(i=0;i<itr;i++){} } Дебаггер при отработке этой функции пропускает циклы FOR. И указатель текущей строки часто движется назад и зацикливается на строках: led_pattern=0b1111; IOWR(led_base,0,led_pattern); Это глюк Eclipse, или я что-то не понимаю? P.S. Если все писать в main for работает, но указатель строки тоже прыгает неадекватно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 18 мая, 2020 Опубликовано 18 мая, 2020 · Жалоба On 5/12/2020 at 9:13 PM, IgorVrn89 said: ... Суть проблемы: в режиме отладки указатель текущего положения при пошаговом исполнении кода( жму F5) движется странным образом- то откатывается назад, то пропускает строки или даже зацикливается, там где нет никаких циклов. Причем код достаточно простой, мигаю светодиодами. .... Это глюк Eclipse, или я что-то не понимаю? P.S. Если все писать в main for работает, но указатель строки тоже прыгает неадекватно. Предполагаю, вы все это наблюдаете в C Source View? Переключитесь в Assembler View (или как он там правильно называется - чтобы видеть инструкции процессора, а не только C-шные строки) - и сразу все станет на свои места. Наблюдаемый эффект - это из-за оптимизации C-кода, так вьюер пытается как-то по своему разумению отрабатывать соответствие между исходником и результатом компиляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться