LAS9891 0 15 февраля, 2017 Опубликовано 15 февраля, 2017 (изменено) · Жалоба Имеется плата Terasic DE2-115. Пробую выполнить пример из tutorial "Using the SDRAM Memory on Altera’s DE2-115 Board with Verilog Design". Этот tutorial нашел на диске, который был в комплекте с платой. Собираю проект в Qsys согласно tutorial. Когда все уже вроде настроил - вылезает Warning: Warning: System.nios2_qsys_0: The address range of the slaves connected to the Nios II instruction masters exceeds 28 bits. Attempts to call functions across 28-bit boundaries is not supported by GCC and will result in linker errors. Сам проект выглядит так: В чем ошибка? Как исправить? Сам tutorial тут: tut_sdram_verilog.pdf Изменено 15 февраля, 2017 пользователем LAS9891 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 15 февраля, 2017 Опубликовано 15 февраля, 2017 · Жалоба Так он же вам все написал: Warning: System.nios2_qsys_0: The address range of the slaves connected to the Nios II instruction masters exceeds 28 bits. Attempts to call functions across 28-bit boundaries is not supported by GCC and will result in linker errors. Т.е., поддержка NIOS2 процессора в GCC имеет ограничение - код не должен пересекать границу в 28 бит адреса. Вам нужно переопределить карту памяти системы таким образом, чтобы такого пересечения не было. Можно сделать это вручную как вам хочется, изменяя базовые адреса модулей на шине, а можно попросить QSys сделать это автоматом (кажется, на вкладке Address Map должна быть кнопка или что-то вроде того). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 16 февраля, 2017 Опубликовано 16 февраля, 2017 (изменено) · Жалоба Вам нужно переопределить карту памяти системы таким образом, чтобы такого пересечения не было. Можно сделать это вручную как вам хочется, изменяя базовые адреса модулей на шине, а можно попросить QSys сделать это автоматом (кажется, на вкладке Address Map должна быть кнопка или что-то вроде того). Попробовал переписать адреса вручную как в примере - не помогло. Получилось вот так: и вот так: Перечитал пример заново, в общем получилось как в примере, хотя до конца и не разобрался. Где бы теперь найти пример использования SDRAM... Изменено 16 февраля, 2017 пользователем LAS9891 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 16 февраля, 2017 Опубликовано 16 февраля, 2017 · Жалоба У вас для onchip-memory не назначены адреса, посмотрите View/address map. Попробуйте назначить адреса автоматом System/Assign Base Addresses. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 16 февраля, 2017 Опубликовано 16 февраля, 2017 · Жалоба У вас для onchip-memory не назначены адреса, посмотрите View/address map. Попробуйте назначить адреса автоматом System/Assign Base Addresses. После этого ситуация станет как на первой картинке. Варнингов удалось избежать когда выполнил следующую последовательность действий: - удалил из проекта SDRAM; - поменял вектора в NIOS на on_chip_memory; - сделал System/Assign Base Addresses; - добавил в проект SDRAM и подключил ее; - поменял вектора в NIOS на SDRAM; После этого - варнингов не оказалось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 17 февраля, 2017 Опубликовано 17 февраля, 2017 · Жалоба Новый вопрос. В Qsys вывел reset наружу: В Quartus-е подключил этот reset к кнопке. В Eclipce пишу программу - мигалку, загружаю в Nios. Программа работает - мигает . Жму кнопку с reset-ом, мигалка гаснет и больше не загорается. Почему программа заново не стартует? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 17 февраля, 2017 Опубликовано 17 февраля, 2017 · Жалоба Почему программа заново не стартует? Проверяйте настройки вектора сброса (и исключения) в Qsys и соответствие им настроек BSP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 17 февраля, 2017 Опубликовано 17 февраля, 2017 · Жалоба В Quartus-е подключил этот reset к кнопке. В Eclipce пишу программу - мигалку, загружаю в Nios. Программа работает - мигает . Жму кнопку с reset-ом, мигалка гаснет и больше не загорается. Почему программа заново не стартует? Возможно, эта кнопка еще и сбрасывает конфигурацию FPGA. Содержимое FPGA остается живым? Для тестовых проектов обычно делают еще и вывод свободно бегущего счетчика на светодиод (аппаратного, не зависящего от софта), чтобы всегда видеть - живо ли содержимое ПЛИС, или нет. Ну, или еще что-то в этом духе (вывод на HEX-индикатор, мигание точки, и т.п.). А если запущено под Eclipse-debugger'ом, так это он, возможно, перехватывает управление при Reset'е, останавливает NIOS и не дает ему бегать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 17 февраля, 2017 Опубликовано 17 февраля, 2017 · Жалоба Проверяйте настройки вектора сброса (и исключения) в Qsys и соответствие им настроек BSP. А где глянуть эти настройки BSP? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 17 февраля, 2017 Опубликовано 17 февраля, 2017 · Жалоба А где глянуть эти настройки BSP? В BSP Editor'е. Это в NiosII EDS. Вот как Вы cмогли написать программу для NiosII, и не узнать при этом, где создается BSP??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 19 февраля, 2017 Опубликовано 19 февраля, 2017 · Жалоба В BSP Editor'е. Это в NiosII EDS. Вот как Вы cмогли написать программу для NiosII, и не узнать при этом, где создается BSP??? Где в BSP Editor настройки векторов сброса? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 19 февраля, 2017 Опубликовано 19 февраля, 2017 · Жалоба Где в BSP Editor настройки векторов сброса? Вектор сброса указывается в Qsys, при настройке модуля NiosII. В BSP Editor этот вектор импортируется из sopc-файла. Но в BSP есть еще настройка "Allow code at reset". Она должна соответствовать вектору сброса. Если он указывает, например, на On-Chip RAM (где сразу после конфигурации живет исполняемый код), то разрешаем исполнение кода приложения по сбросу. А если, например, на EPCS_FLASH_CONTROLLER - то запрещаем, т.е. по сбросу должен запускаться копировщик, живущий в EPCS_FLASH_CONTROLLER'е. И т.д. и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 20 февраля, 2017 Опубликовано 20 февраля, 2017 · Жалоба Вектор сброса указывается в Qsys, при настройке модуля NiosII. В BSP Editor этот вектор импортируется из sopc-файла. Но в BSP есть еще настройка "Allow code at reset". Вот что есть с похожим названием. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 20 февраля, 2017 Опубликовано 20 февраля, 2017 · Жалоба Вот что есть с похожим названием. Вы не названия похожие ищите, а документацию изучайте тщательнеЕ!!! :twak: Вы писали, что у Вас вектор сброса указывает на SDRAM. В BSP у Вас установлена галка, говорящая о том, что по вектору сброса находится рабочий код приложения, который сразу по сбросу должен начать исполнятся. Соответственно, если после сброса в SDRAM нет кода приложения, то ничего и не стартует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться