Перейти к содержанию
    

Warning в Qsys

Имеется плата 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.

 

Сам проект выглядит так:

Warning.jpg

 

В чем ошибка? Как исправить?

 

Сам tutorial тут:

tut_sdram_verilog.pdf

 

 

Изменено пользователем LAS9891

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так он же вам все написал:

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 должна быть кнопка или что-то вроде того).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам нужно переопределить карту памяти системы таким образом, чтобы такого пересечения не было. Можно сделать это вручную как вам хочется, изменяя базовые адреса модулей на шине, а можно попросить QSys сделать это автоматом (кажется, на вкладке Address Map должна быть кнопка или что-то вроде того).

 

Попробовал переписать адреса вручную как в примере - не помогло. Получилось вот так:

16_02_2017_08_05_20.jpg

и вот так:

16_02_2017_08_10_41.jpg

 

Перечитал пример заново, в общем получилось как в примере, хотя до конца и не разобрался. Где бы теперь найти пример использования SDRAM... :help:

Изменено пользователем LAS9891

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас для onchip-memory не назначены адреса, посмотрите View/address map. Попробуйте назначить адреса автоматом System/Assign Base Addresses.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас для onchip-memory не назначены адреса, посмотрите View/address map. Попробуйте назначить адреса автоматом System/Assign Base Addresses.

После этого ситуация станет как на первой картинке. Варнингов удалось избежать когда выполнил следующую последовательность действий:

- удалил из проекта SDRAM;

- поменял вектора в NIOS на on_chip_memory;

- сделал System/Assign Base Addresses;

- добавил в проект SDRAM и подключил ее;

- поменял вектора в NIOS на SDRAM;

 

После этого - варнингов не оказалось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Новый вопрос. В Qsys вывел reset наружу:

17_02_2017_11_38_59.jpg

В Quartus-е подключил этот reset к кнопке. В Eclipce пишу программу - мигалку, загружаю в Nios. Программа работает - мигает . Жму кнопку с reset-ом, мигалка гаснет и больше не загорается. Почему программа заново не стартует?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему программа заново не стартует?

Проверяйте настройки вектора сброса (и исключения) в Qsys и соответствие им настроек BSP.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В Quartus-е подключил этот reset к кнопке. В Eclipce пишу программу - мигалку, загружаю в Nios. Программа работает - мигает . Жму кнопку с reset-ом, мигалка гаснет и больше не загорается. Почему программа заново не стартует?

Возможно, эта кнопка еще и сбрасывает конфигурацию FPGA. Содержимое FPGA остается живым? Для тестовых проектов обычно делают еще и вывод свободно бегущего счетчика на светодиод (аппаратного, не зависящего от софта), чтобы всегда видеть - живо ли содержимое ПЛИС, или нет. Ну, или еще что-то в этом духе (вывод на HEX-индикатор, мигание точки, и т.п.).

 

А если запущено под Eclipse-debugger'ом, так это он, возможно, перехватывает управление при Reset'е, останавливает NIOS и не дает ему бегать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверяйте настройки вектора сброса (и исключения) в Qsys и соответствие им настроек BSP.

А где глянуть эти настройки BSP?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А где глянуть эти настройки BSP?

В BSP Editor'е. Это в NiosII EDS.

Вот как Вы cмогли написать программу для NiosII, и не узнать при этом, где создается BSP??? :wacko:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В BSP Editor'е. Это в NiosII EDS.

Вот как Вы cмогли написать программу для NiosII, и не узнать при этом, где создается BSP??? :wacko:

Где в BSP Editor настройки векторов сброса?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где в BSP Editor настройки векторов сброса?

Вектор сброса указывается в Qsys, при настройке модуля NiosII.

В BSP Editor этот вектор импортируется из sopc-файла. Но в BSP есть еще настройка "Allow code at reset". Она должна соответствовать вектору сброса.

Если он указывает, например, на On-Chip RAM (где сразу после конфигурации живет исполняемый код), то разрешаем исполнение кода приложения по сбросу.

А если, например, на EPCS_FLASH_CONTROLLER - то запрещаем, т.е. по сбросу должен запускаться копировщик, живущий в EPCS_FLASH_CONTROLLER'е.

И т.д. и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вектор сброса указывается в Qsys, при настройке модуля NiosII.

В BSP Editor этот вектор импортируется из sopc-файла. Но в BSP есть еще настройка "Allow code at reset".

 

Вот что есть с похожим названием.

20_02_2017_08_08_19.jpg

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот что есть с похожим названием.

Вы не названия похожие ищите, а документацию изучайте тщательнеЕ!!! :twak:

 

Вы писали, что у Вас вектор сброса указывает на SDRAM.

В BSP у Вас установлена галка, говорящая о том, что по вектору сброса находится рабочий код приложения, который сразу по сбросу должен начать исполнятся.

Соответственно, если после сброса в SDRAM нет кода приложения, то ничего и не стартует.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...