Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NIOS для начинающих
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
prussta
Добрый день! Подскажите, где можно почитать про настрйку проекта в Eclips. (и файлов проекта и bsp). Конкретно меня интересуют Properties. Многоие рекомендуют ставить оптимизацию Os, но не могу найти, где это делать. (я вижу только что можно поставить O0, O1,O2 и т.д ). Также в BSP Editor интересует вкладка Linker Script. Что обозначают там .rodata, .rwdata, .bss, .text, с остальными понятно. И при использовании, например, sdram как распределять что в какой памяти будет находиться? Но даже если я использую sdram, на сколько мне известно, во вкладке main в hal.linker для exeption и interrupt нужно выставить onchip memory. Про жизненоважные настройки проекта хочется узнать подробнее. Как настрить все правильно?
krux
http://electronix.ru/forum/index.php?s=&am...t&p=1221292

Цитата
Что обозначают там .rodata, .rwdata, .bss, .text

это секции ELF-бинарника, который получается на выходе
вот вам стандарт на формат ELF. можете ещё погуглить, он много где разжёван.
prussta
Спасибо! Почитаю. Подскажите ещe, как можно в Qsys подключить dma controler-> fifo ->pixel converter. Там разные шины. в стандартных компонентах не могу найти подходящего моста. Что посоветуете?
sprutkmv
Доброго дня.


Создаю примитивный проект на С

#include "alt_types.h"
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "altera_avalon_timer_regs.h"
#include "altera_avalon_timer.h"
#include <sys/alt_alarm.h>

#include <stdio.h>



int main()
{
int leds;
leds= 0;
while(1)
{

IOWR_ALTERA_AVALON_PIO_DATA( GPIO_LED_BASE, ~leds);
for(int i=0;i<10000;i++);
}

return 0;
}

Все работает, но как только пытаюсь этот же проект запустить на С++, компилятор выдает ошибку

"Function '__builtin_stwio' could not be resolved"

Подскажите в чем причина?
vadimuzzz
Цитата(sprutkmv @ Feb 20 2014, 21:32) *
Подскажите в чем причина?

вроде оно:
http://www.alteraforum.com/forum/showthread.php?t=40002
sprutkmv
Спасибо, сижу изучаю....
sprutkmv
Может кто подскажет как правльно создать С++ проект для nios
sprutkmv
Подскажите как в Eclipse посмотреть регистры перефирии NIOS?
krux
Цитата(sprutkmv @ Feb 25 2014, 15:49) *
Подскажите как в Eclipse посмотреть регистры перефирии NIOS?

<там_где_у_вас_bsp>/system.h
sprutkmv
Не название регистров а их содержимое. По аналогии с просмотром значения переменной. Пока для просмотра регистров приходится читать их во временные переменные, очень не удобно
sprutkmv
наверно я не правильно объясняю. Допустим мне необходимо просмотреть значение регистра статус в модуле uart, как это сделать средствами eclipse?
krux
Цитата(sprutkmv @ Feb 25 2014, 22:56) *
наверно я не правильно объясняю. Допустим мне необходимо просмотреть значение регистра статус в модуле uart, как это сделать средствами eclipse?

если вас интересует real-time отладка ip-модулей, таких как uart, то более правильным инструментом будет SignalTap, а не Eclipse.
sprutkmv
Наверно вы правы. Я с NIOS только начинаю разбираться. В нормальных средах для МК есть функции просмотра регистров периферии. Вот я по аналогии и пытаюсь найти здесь такой инструмент. Но думаю SignalTap тоже сойдет. Подскажите есть ли другие среды для NIOS, а то от этой сборки Eclipse я не в восторге, постоянно зависает.
vadimuzzz
Цитата(sprutkmv @ Feb 26 2014, 01:20) *
Не название регистров а их содержимое. По аналогии с просмотром значения переменной. Пока для просмотра регистров приходится читать их во временные переменные, очень не удобно

есть же memory view или как там его. можете туда адрес регистра вбить
sprutkmv
Цитата(vadimuzzz @ Feb 26 2014, 02:52) *
есть же memory view или как там его. можете туда адрес регистра вбить


Спасибо это выход.
sprutkmv
Кто подскажет как сделать программный reset процессора?
warrior-2001
Цитата(sprutkmv @ Mar 13 2014, 09:36) *
Кто подскажет как сделать программный reset процессора?





PIO подойдёт. Ещё можно через регистр замутить. Главное - сбрасывать всю систему, а не частями.

sprutkmv
А регистр какой?
Копейкин
Имеется в виду аппаратная ячейка-регистр, в которую будет записано значение, инициирующее сброс
выход с которой подключен к глобальному сбросу системы.
В процессе сброса ячейка тоже будет сброшена.
Михаил Миняйло
Здравствуйте, хотелось бы узнать, каким образом можно оптимизировать размер бинарного файла для Nios. Просто программа, состоящая из одного main, содержащего только while(1); , занимает целых 300Кб.
sprutkmv
имяпроектаBSP\ Properties\NIOS BSP Properties\

1. Убрать галку Support C++ (если не нужен С++)
2. Установить галку Small C library
3. Установить Reduced device drivers
4. Включить оптимизацию
Stewart Little
Цитата(Михаил Миняйло @ Mar 18 2014, 08:17) *
Здравствуйте, хотелось бы узнать, каким образом можно оптимизировать размер бинарного файла для Nios. Просто программа, состоящая из одного main, содержащего только while(1); , занимает целых 300Кб.

Ну, еще вопрос, что у Вас там в main'е sm.gif
А вообще такой объем кода объясняется тем, что в этом коде живет и стартап, да еще, поди, и полновесная библиотека драйверов.

Изучайте Nios II Software Developer's Handbook, параграф "Reducing Code Footprint in Embedded Systems", стр.6-30.
doom13
Цитата(warrior-2001 @ Mar 17 2014, 07:20) *
PIO подойдёт. Ещё можно через регистр замутить. Главное - сбрасывать всю систему, а не частями.


Ещё можно и так:

http://altera.us/support/kdb/solutions/rd05062005_584.html
sprutkmv
Цитата(doom13 @ Mar 18 2014, 08:49) *



Спасибо. Это более красиво чем PIO.
Михаил Миняйло
а можно вообще как-то отключить altera hal, чтобы не таскать с собой все эти ненужные мне функции?
Stewart Little
Цитата(Михаил Миняйло @ Mar 18 2014, 10:32) *
а можно вообще как-то отключить altera hal, чтобы не таскать с собой все эти ненужные мне функции?

Можно. Например, не подключайте файл system.h , пишите на ассемблере.
Только вот без hal Вам придется к регистрам всех устройств в Вашей системе (и их битам) обращаться по их физическим адресам.
Оно Вам надо?
Читайте документацию - и разбирайтесь, как снизить размер кода "малой кровью" sm.gif
Михаил Миняйло
Цитата(Stewart Little @ Mar 18 2014, 13:53) *
Можно. Например, не подключайте файл system.h , пишите на ассемблере.
Только вот без hal Вам придется к регистрам всех устройств в Вашей системе (и их битам) обращаться по их физическим адресам.
Оно Вам надо?
Читайте документацию - и разбирайтесь, как снизить размер кода "малой кровью" sm.gif

ну у меня программа небольшая должна быть. в принципе, можно бы и обойтись работой с регистрами. хотелось бы узнать: что с прерываниями будет?
Stewart Little
Цитата(Михаил Миняйло @ Mar 18 2014, 11:30) *
хотелось бы узнать: что с прерываниями будет?

Ничего хорошего не будет. Обработчик исключений, который должен жить по адресу exeption vector, Вам в этом случае придется самому писать. Ну и дальше изголяться с определением источников вызовов прерываний и софтверных исключений, сохранением контекста и т.п.
Почитайте уже, наконец, документацию!!!
sprutkmv
Попробуйте создать приложение по шаблону hello word small.

И что в вашем понятии маленькая программа?
NIOS 32 разрядный и такого маленького кода как был на 8 разрядных МК у вас не получится.
Maverick
добавлю свои "5 копеек"
есть еще книга (vhdl) или та же самая книга (verilog). На просторах интернета можно скачать и даже найти исходники программ и описний написанных в ней.
sprutkmv
Задам глупый вопрос.

Как добавить Project Explorer папку и разместить в ней исходники что бы при подключении h-файлов не приходилось приписывать имена папок..


Пока у меня получается вот так


Project Explorer
Папка drivers_epcs\ epcs.h


Если подключать файл #include "drivers_epcs\ epcs.h" то все компилется отлично,

Как сделать что бы можно было просто подключить #include "epcs.h" ?

doom13
Цитата(sprutkmv @ Mar 20 2014, 08:43) *
Задам глупый вопрос.

Как добавить Project Explorer папку и разместить в ней исходники что бы при подключении h-файлов не приходилось приписывать имена папок..


Пока у меня получается вот так


Project Explorer
Папка drivers_epcs\ epcs.h


Если подключать файл #include "drivers_epcs\ epcs.h" то все компилется отлично,

Как сделать что бы можно было просто подключить #include "epcs.h" ?


Project->Properties->Nios II Application Path
В "Application include directories" добавить Вашу папку.
sprutkmv
Спасибо...

Как то не догадался заглянуть в раздел NIOS
radionun
Еще один глупый вопрос. Сделал пример с мигающими светодиодами, все заработало. При этом сам проект находится на сервере.

Пересел за другой компьютер и уже минут 30 не могу понять, как открыть этот проект с нового рабочего места ! С Quartus'ом и Qsys'ом все просто, а вот что нужно открывать из Eclipse ???
Stewart Little
Цитата(radionun @ May 15 2014, 16:03) *
Пересел за другой компьютер и уже минут 30 не могу понять, как открыть этот проект с нового рабочего места ! С Quartus'ом и Qsys'ом все просто, а вот что нужно открывать из Eclipse ???

В Eclipse: "File" - "Import" - "Existing Project into Workspace"
radionun
Цитата(Stewart Little @ May 15 2014, 17:20) *
В Eclipse: "File" - "Import" - "Existing Project into Workspace"


Спасибо ! И смотрел же туда несколько раз, но именно этот пункт - Existing Project... не увидел !
radionun
А вот еще вопросик... Qsys при генерации почему-то прибавляет к именам внешних соединений слово export (clk - для clock и reset_n - для reset).

Возможно ли сделать, чтобы он не занимался самодеятельностью, и оставил имена экспортированных сигналов в оригинальном виде ?
radionun
Можно ли в макросах IORD и IOWR в качестве base использовать не конкретное значение (допустим, взятое из system.h), а переменную, которой уже присваивается тот или иной адрес ? Если можно, то какой это тип переменной ?
doom13
Цитата(radionun @ May 22 2014, 18:12) *
Можно ли в макросах IORD и IOWR в качестве base использовать не конкретное значение (допустим, взятое из system.h), а переменную, которой уже присваивается тот или иной адрес ? Если можно, то какой это тип переменной ?

Можно использовать, может быть int, unsigned int, alt_u32.
radionun
Цитата(doom13 @ May 23 2014, 00:12) *
Можно использовать, может быть int, unsigned int, alt_u32.


Действительно - работает, спасибо !


Следующий вопрос:

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

Добавил в QSYS jtag_uart, так и назвал его - "jtag_uart". Сгенерил BSP, в BSP editor убедился, что stdout перенаправлен на jtag_uart. Запускаю приложение - пишет, что что не совпадают имена stdout (и еще чего-то).
Действительно, вижу, что USB Blaster подключен к "jtaguart_0".

Перепробовал все, что пришло в голову, заново сгенерил вообще все - ничего не получается. В конечном итоге, в QSYS переименовал UART в "jtaguart_0", и все заработало.

Но ведь должен быть правильный способ, чтобы использовать то название, которое хочу ???
doom13
Цитата(radionun @ May 23 2014, 20:15) *
Но ведь должен быть правильный способ, чтобы использовать то название, которое хочу ???

Должно было работать, но порой приходится исполнять танец с бубном, чтобы заставить проект под Nios II заработать.
dim99
Кто-нибудь пытался приделать автогенерацию версии билда и даты компиляции при сборке проекта в Nios2 ?
edren_baton
Приветствую всех!

Пытаюсь разобраться с Video Sync Generator, ибо столкнулся со следующей проблемой:

синхроимпульсы (VS,HS, DE), которые формирует и отправляет на монитор Video Sync Generator не соответствуют настройкам в QSys (импульсы идут, но длительности совсем другие, в том числе пропорционально).

Отсюда вопрос: генератор выдает «правильную» (заданную через настройки) последовательность синхроимпульсов сразу после загрузки прошивки в ПЛИС? или только после правильной инициализации и управления модуля?
edren_baton
Отвечаю на свой же вопрос.

Video Sync Generator начинает генерировать заданные в настройках импульсы сразу после заливки прошивки в ПЛИС.

Косяк в следующем: в Q13, в QSys настройки я задавал нужные мне, но компилировался модуль с дефолтными настройкам (хотя в QSys продолжали отображаться заданным мной). В Q11 все нормально.
RamZoom
Уважаемые форумчане подскажите пожалуйста где взять лицензию для QuarusII с Nios, которая компилирует полноценный sof файл, а не time_limited.sof
Alexey_Rostov
Цитата(RamZoom @ Nov 25 2014, 20:40) *
Уважаемые форумчане подскажите пожалуйста где взять лицензию для QuarusII с Nios, которая компилирует полноценный sof файл, а не time_limited.sof

Посмотрите внимательно, там должен быть, если не изменяет память, .sof файл и time_limited.sof. Просто sof и выбирайте
RamZoom
Пробовал. Пересобрал Nios, Eclipse, откомпилировал заново проект в Quartus, прошил sof файлом, а изменений нет. Прошивается то, что было до подключения в проект Nios_овских файлов
Alexey_Rostov
Цитата(RamZoom @ Nov 25 2014, 20:55) *
Пробовал. Пересобрал Nios, Eclipse, откомпилировал заново проект в Quartus, прошил sof файлом, а изменений нет. Прошивается то, что было до подключения в проект Nios_овских файлов

Какие изменения вы ожидаете? После прошивки sof, в eclipse заливаете elf файл с программой
the_king_orange_summer
Цитата(RamZoom @ Nov 25 2014, 21:40) *
Уважаемые форумчане подскажите пожалуйста где взять лицензию для QuarusII с Nios, которая компилирует полноценный sof файл, а не time_limited.sof

присоединяюсь к вопросу.
делаю простой проектик на циклон4е. В Qsys использую NIOSIIProc, On-Chip Memory, Jtag UART, PIO, System ID Peripheral. Пользуюсь QuartisII 13.0.
генерится time_limited.sof - и всё. может как вылечить можно?

Шьюсь time_limited.sof, висит окно OpenCore Plus Status поверх окна программирования. далее, при запуске через NIOS II Hardware вылазит сообщение, что соединений не обнаружено или не залит sof.Причиной этого является time_limited?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.