prussta
Feb 1 2014, 08:55
Добрый день! Подскажите, где можно почитать про настрйку проекта в Eclips. (и файлов проекта и bsp). Конкретно меня интересуют Properties. Многоие рекомендуют ставить оптимизацию Os, но не могу найти, где это делать. (я вижу только что можно поставить O0, O1,O2 и т.д ). Также в BSP Editor интересует вкладка Linker Script. Что обозначают там .rodata, .rwdata, .bss, .text, с остальными понятно. И при использовании, например, sdram как распределять что в какой памяти будет находиться? Но даже если я использую sdram, на сколько мне известно, во вкладке main в hal.linker для exeption и interrupt нужно выставить onchip memory. Про жизненоважные настройки проекта хочется узнать подробнее. Как настрить все правильно?
http://electronix.ru/forum/index.php?s=&am...t&p=1221292Цитата
Что обозначают там .rodata, .rwdata, .bss, .text
это секции ELF-бинарника, который получается на выходе
вот вам
стандарт на формат ELF. можете ещё погуглить, он много где разжёван.
prussta
Feb 1 2014, 13:04
Спасибо! Почитаю. Подскажите ещe, как можно в Qsys подключить dma controler-> fifo ->pixel converter. Там разные шины. в стандартных компонентах не могу найти подходящего моста. Что посоветуете?
sprutkmv
Feb 20 2014, 14:32
Доброго дня.
Создаю примитивный проект на С
#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
Feb 21 2014, 03:04
Цитата(sprutkmv @ Feb 20 2014, 21:32)

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

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

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

Не название регистров а их содержимое. По аналогии с просмотром значения переменной. Пока для просмотра регистров приходится читать их во временные переменные, очень не удобно
есть же memory view или как там его. можете туда адрес регистра вбить
sprutkmv
Feb 26 2014, 06:31
Цитата(vadimuzzz @ Feb 26 2014, 02:52)

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

Кто подскажет как сделать программный reset процессора?
PIO подойдёт. Ещё можно через регистр замутить. Главное - сбрасывать всю систему, а не частями.
sprutkmv
Mar 17 2014, 04:38
А регистр какой?
Копейкин
Mar 17 2014, 06:44
Имеется в виду аппаратная ячейка-регистр, в которую будет записано значение, инициирующее сброс
выход с которой подключен к глобальному сбросу системы.
В процессе сброса ячейка тоже будет сброшена.
Михаил Миняйло
Mar 18 2014, 04:17
Здравствуйте, хотелось бы узнать, каким образом можно оптимизировать размер бинарного файла для Nios. Просто программа, состоящая из одного main, содержащего только while(1); , занимает целых 300Кб.
sprutkmv
Mar 18 2014, 04:33
имяпроектаBSP\ Properties\NIOS BSP Properties\
1. Убрать галку Support C++ (если не нужен С++)
2. Установить галку Small C library
3. Установить Reduced device drivers
4. Включить оптимизацию
Stewart Little
Mar 18 2014, 04:36
Цитата(Михаил Миняйло @ Mar 18 2014, 08:17)

Здравствуйте, хотелось бы узнать, каким образом можно оптимизировать размер бинарного файла для Nios. Просто программа, состоящая из одного main, содержащего только while(1); , занимает целых 300Кб.
Ну, еще вопрос, что у Вас там в main'е

А вообще такой объем кода объясняется тем, что в этом коде живет и стартап, да еще, поди, и полновесная библиотека драйверов.
Изучайте
Nios II Software Developer's Handbook, параграф
"Reducing Code Footprint in Embedded Systems", стр.6-30.
doom13
Mar 18 2014, 04:49
Цитата(warrior-2001 @ Mar 17 2014, 07:20)

PIO подойдёт. Ещё можно через регистр замутить. Главное - сбрасывать всю систему, а не частями.
Ещё можно и так:
http://altera.us/support/kdb/solutions/rd05062005_584.html
sprutkmv
Mar 18 2014, 05:02
Цитата(doom13 @ Mar 18 2014, 08:49)

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

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

Можно. Например, не подключайте файл system.h , пишите на ассемблере.
Только вот без hal Вам придется к регистрам всех устройств в Вашей системе (и их битам) обращаться по их физическим адресам.
Оно Вам надо?
Читайте документацию - и разбирайтесь, как снизить размер кода "малой кровью"

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

хотелось бы узнать: что с прерываниями будет?
Ничего хорошего не будет. Обработчик исключений, который должен жить по адресу exeption vector, Вам в этом случае придется самому писать. Ну и дальше изголяться с определением источников вызовов прерываний и софтверных исключений, сохранением контекста и т.п.
Почитайте уже, наконец, документацию!!!
sprutkmv
Mar 18 2014, 08:09
Попробуйте создать приложение по шаблону hello word small.
И что в вашем понятии маленькая программа?
NIOS 32 разрядный и такого маленького кода как был на 8 разрядных МК у вас не получится.
Maverick
Mar 18 2014, 10:35
добавлю свои "5 копеек"
есть еще книга (vhdl) или та же самая книга (verilog). На просторах интернета можно скачать и даже найти исходники программ и описний написанных в ней.
sprutkmv
Mar 20 2014, 05:43
Задам глупый вопрос.
Как добавить Project Explorer папку и разместить в ней исходники что бы при подключении h-файлов не приходилось приписывать имена папок..
Пока у меня получается вот так
Project Explorer
Папка drivers_epcs\ epcs.h
Если подключать файл #include "drivers_epcs\ epcs.h" то все компилется отлично,
Как сделать что бы можно было просто подключить #include "epcs.h" ?
doom13
Mar 20 2014, 08:49
Цитата(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
Mar 20 2014, 08:55
Спасибо...
Как то не догадался заглянуть в раздел NIOS
radionun
May 15 2014, 13:03
Еще один глупый вопрос. Сделал пример с мигающими светодиодами, все заработало. При этом сам проект находится на сервере.
Пересел за другой компьютер и уже минут 30 не могу понять, как открыть этот проект с нового рабочего места ! С Quartus'ом и Qsys'ом все просто, а вот что нужно открывать из Eclipse ???
Stewart Little
May 15 2014, 13:20
Цитата(radionun @ May 15 2014, 16:03)

Пересел за другой компьютер и уже минут 30 не могу понять, как открыть этот проект с нового рабочего места ! С Quartus'ом и Qsys'ом все просто, а вот что нужно открывать из Eclipse ???
В Eclipse: "
File" - "
Import" - "
Existing Project into Workspace"
radionun
May 15 2014, 13:26
Цитата(Stewart Little @ May 15 2014, 17:20)

В Eclipse: "File" - "Import" - "Existing Project into Workspace"
Спасибо ! И смотрел же туда несколько раз, но именно этот пункт - Existing Project... не увидел !
radionun
May 17 2014, 04:23
А вот еще вопросик... Qsys при генерации почему-то прибавляет к именам внешних соединений слово export (clk - для clock и reset_n - для reset).
Возможно ли сделать, чтобы он не занимался самодеятельностью, и оставил имена экспортированных сигналов в оригинальном виде ?
radionun
May 22 2014, 11:02
Можно ли в макросах IORD и IOWR в качестве base использовать не конкретное значение (допустим, взятое из system.h), а переменную, которой уже присваивается тот или иной адрес ? Если можно, то какой это тип переменной ?
doom13
May 22 2014, 16:02
Цитата(radionun @ May 22 2014, 18:12)

Можно ли в макросах IORD и IOWR в качестве base использовать не конкретное значение (допустим, взятое из system.h), а переменную, которой уже присваивается тот или иной адрес ? Если можно, то какой это тип переменной ?
Можно использовать, может быть int, unsigned int, alt_u32.
radionun
May 23 2014, 13:05
Цитата(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
May 23 2014, 16:45
Цитата(radionun @ May 23 2014, 20:15)

Но ведь должен быть правильный способ, чтобы использовать то название, которое хочу ???
Должно было работать, но порой приходится исполнять танец с бубном, чтобы заставить проект под Nios II заработать.
Кто-нибудь пытался приделать автогенерацию версии билда и даты компиляции при сборке проекта в Nios2 ?
edren_baton
Oct 29 2014, 13:43
Приветствую всех!
Пытаюсь разобраться с Video Sync Generator, ибо столкнулся со следующей проблемой:
синхроимпульсы (VS,HS, DE), которые формирует и отправляет на монитор Video Sync Generator не соответствуют настройкам в QSys (импульсы идут, но длительности совсем другие, в том числе пропорционально).
Отсюда вопрос: генератор выдает «правильную» (заданную через настройки) последовательность синхроимпульсов сразу после загрузки прошивки в ПЛИС? или только после правильной инициализации и управления модуля?
edren_baton
Nov 2 2014, 10:47
Отвечаю на свой же вопрос.
Video Sync Generator начинает генерировать заданные в настройках импульсы сразу после заливки прошивки в ПЛИС.
Косяк в следующем: в Q13, в QSys настройки я задавал нужные мне, но компилировался модуль с дефолтными настройкам (хотя в QSys продолжали отображаться заданным мной). В Q11 все нормально.
RamZoom
Nov 25 2014, 17:40
Уважаемые форумчане подскажите пожалуйста где взять лицензию для QuarusII с Nios, которая компилирует полноценный sof файл, а не time_limited.sof
Alexey_Rostov
Nov 25 2014, 17:50
Цитата(RamZoom @ Nov 25 2014, 20:40)

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

Пробовал. Пересобрал Nios, Eclipse, откомпилировал заново проект в Quartus, прошил sof файлом, а изменений нет. Прошивается то, что было до подключения в проект Nios_овских файлов
Какие изменения вы ожидаете? После прошивки sof, в eclipse заливаете elf файл с программой
the_king_orange_summer
Dec 4 2014, 11:18
Цитата(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?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.