реклама на сайте
подробности

 
 
39 страниц V  « < 37 38 39  
Reply to this topicStart new topic
> NIOS для начинающих
AVR
сообщение Jan 10 2017, 14:10
Сообщение #571


фанат Linux'а
****

Группа: Свой
Сообщений: 875
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(lostbegan @ Jan 10 2017, 16:50) *
Где можно найти информацию по этим "специальным дергающим" функциям?
Если можете предложить помощь, буду рад совершенно любой информации, пока все никак не может собраться в общую картину

Когда в Nios EDK (или как там) будете формировать BSP, то эти фукнции там будут уже готовые, достаточно лишь header подключить к программе и указывать этим функциям BASE ADDRESS периферийного блока. Например ALT_GPIO_WR(GPIO_0, 0x1234); <- название функции от балды, но они как-то там называются, нужно просто покопать .h файлы в каталоге проекта BSP

Цитата(lostbegan @ Jan 10 2017, 17:06) *
то есть процессор+память можно обставить двумя PIO на вх/вых и программно в прошивке с них бросать данные, обрабатывать и посылать на второй PIO. Потом моделировать в modelSim? Тогда Quartus как участвует? BlockSchematicFile вообще предполагается при таком раскладе?

Да да, именно так. Modelsim отдельно от Quartus. BlockSchematicFile не обязателен, я например в тексте это всё делаю sm.gif


--------------------
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 10 2017, 14:12
Сообщение #572





Группа: Участник
Сообщений: 12
Регистрация: 6-01-17
Пользователь №: 94 893



Огромное спасибо вам, постараюсь все переварить и прощупать. Кстати, какую лучше версию Quartus использовать? Сейчас есть QII 9.1sp2+AlteraModelSim к ней+для прошивки софт на WIN7x32. Так же есть Quartus Prime 16.1 Lite Edition на WIN10x64?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jan 10 2017, 17:12
Сообщение #573


Лентяй
******

Группа: Свой
Сообщений: 2 031
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(lostbegan @ Jan 10 2017, 17:12) *
Огромное спасибо вам, постараюсь все переварить и прощупать. Кстати, какую лучше версию Quartus использовать? Сейчас есть QII 9.1sp2+AlteraModelSim к ней+для прошивки софт на WIN7x32. Так же есть Quartus Prime 16.1 Lite Edition на WIN10x64?

Лучше всего v16.1 на Win7 x64 (ну или а Linux x64).


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 10 2017, 18:25
Сообщение #574





Группа: Участник
Сообщений: 12
Регистрация: 6-01-17
Пользователь №: 94 893



при попытке построить в эклипсе hello_nios проект выдает ошибки:

[BSP build complete]
Info: Linking prosh.elf
nios2-elf-g++ -T'../prosh_bsp//linker.x' -msys-crt0='../prosh_bsp//obj/HAL/src/crt0.o' -msys-lib=hal_bsp -L../prosh_bsp/ -Wl,-Map=prosh.map -O0 -g -Wall -mno-hw-div -mno-hw-mul -mno-hw-mulx -mgpopt=global -o prosh.elf obj/default/proch.o -lm -msys-lib=m
c:/intelfpga_lite/16.1/nios2eds/bin/gnu/h-x86_64-mingw32/bin/../lib/gcc/nios2-elf/5.3.0/../../../../../H-x86_64-mingw32/nios2-elf/bin/ld.exe: address 0x86d0 of prosh.elf section `.rwdata' is not within region `onchip_memory'
c:/intelfpga_lite/16.1/nios2eds/bin/gnu/h-x86_64-mingw32/bin/../lib/gcc/nios2-elf/5.3.0/../../../../../H-x86_64-mingw32/nios2-elf/bin/ld.exe: address 0x9114 of prosh.elf section `.bss' is not within region `onchip_memory'
c:/intelfpga_lite/16.1/nios2eds/bin/gnu/h-x86_64-mingw32/bin/../lib/gcc/nios2-elf/5.3.0/../../../../../H-x86_64-mingw32/nios2-elf/bin/ld.exe: address 0x86d0 of prosh.elf section `.rwdata' is not within region `onchip_memory'
c:/intelfpga_lite/16.1/nios2eds/bin/gnu/h-x86_64-mingw32/bin/../lib/gcc/nios2-elf/5.3.0/../../../../../H-x86_64-mingw32/nios2-elf/bin/ld.exe: address 0x9114 of prosh.elf section `.bss' is not within region `onchip_memory'
collect2.exe: error: ld returned 1 exit status
make: *** [prosh.elf] Error 1

С чем связано? уже и объем подергал. в Qsys собрал следующее - самый дохлый ниос с первым дебаггером, рам на 16кб, два pio - генерация прошла успешно
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jan 10 2017, 18:46
Сообщение #575


Лентяй
******

Группа: Свой
Сообщений: 2 031
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(lostbegan @ Jan 10 2017, 21:25) *
при попытке построить в эклипсе hello_nios проект выдает ошибки:

Скорее всего или с адресным пространством и настройками bsp накосячили, или printf в имеющийся объем памяти не помещается.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
AVR
сообщение Jan 10 2017, 18:51
Сообщение #576


фанат Linux'а
****

Группа: Свой
Сообщений: 875
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(lostbegan @ Jan 10 2017, 21:25) *
С чем связано? уже и объем подергал. в Qsys собрал следующее - самый дохлый ниос с первым дебаггером, рам на 16кб, два pio - генерация прошла успешно

Оно тупо не влезает... 16 Кбайт для такой ерунды не хватает - это правда.
Вместо printf я использую невесомую alt_putstr, вместо полноценных библиотек использую IORD_ALTERA_AVALON_UART_STATUS IORD_ALTERA_AVALON_UART_RXDATA и прочие функции (скорее макросы для обращения к регистрам Nios2 напрямую).


--------------------
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jan 11 2017, 09:59
Сообщение #577


Лентяй
******

Группа: Свой
Сообщений: 2 031
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(lostbegan @ Jan 10 2017, 21:25) *
С чем связано? уже и объем подергал. в Qsys собрал следующее - самый дохлый ниос с первым дебаггером, рам на 16кб, два pio - генерация прошла успешно

Смотрите раздел Reducing Code Footprint in Embedded Systems в Nios II Gen2 Software Developer's Handbook
И рекомендацию уважаемого AVR относительно alt_putstr (ну или alt_printf) - см. тот же документ.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 11 2017, 16:58
Сообщение #578





Группа: Участник
Сообщений: 12
Регистрация: 6-01-17
Пользователь №: 94 893



Расширил память до 128кб. Проект построился, *.elf сформировался.
1. Как я понимаю это именно файл прошивки?
2. Увидеть приветствие применяя Run AS NiosII Hardware не удалось, так как нет подключенных устройств, но я так понимаю это не самая большая проблема.
3. Теперь нужно в этом файле прошивки, который *.С нужно соорудить оперирование с регистрами NIOS'а и уже непосредственно организовать какой то конкретный алгоритм после чего моделировать МоделСим?

Понимаю, что вопросы полуриторические, мне просто нужно понимать в правильном ли направлении я двигаюсь
Go to the top of the page
 
+Quote Post
AVR
сообщение Jan 11 2017, 17:27
Сообщение #579


фанат Linux'а
****

Группа: Свой
Сообщений: 875
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(lostbegan @ Jan 11 2017, 19:58) *
Расширил память до 128кб. Проект построился, *.elf сформировался.
1. Как я понимаю это именно файл прошивки?
2. Увидеть приветствие применяя Run AS NiosII Hardware не удалось, так как нет подключенных устройств, но я так понимаю это не самая большая проблема.
3. Теперь нужно в этом файле прошивки, который *.С нужно соорудить оперирование с регистрами NIOS'а и уже непосредственно организовать какой то конкретный алгоритм после чего моделировать МоделСим?

Понимаю, что вопросы полуриторические, мне просто нужно понимать в правильном ли направлении я двигаюсь

Направление абсолютно верно, двигаемся дальше sm.gif
0. "Расширил память до 128кб" - и правильно, ведь это не железо, можно какой угодно размер увеличить
1. Да, но точнее это https://ru.wikipedia.org/wiki/Executable_and_Linkable_Format - формат универсальный, и для прошивок микроконтроллеров годится, из него можно в другой преобразовать если надо
2. Да, это только для живых ниосов в работающей ПЛИС, подключенных через JTAG например
3. Да, нужно оперировать регистрами. Конкретно для параллельных GPIO в Nios2 нужно читать ug_embedded_ip.pdf раздел 11 PIO core. Там есть еще Register Map, это значит что по смещению 1 лежит регистр для настройки "направления" работы порта GPIO: на вход или на выход. Смещение - от чего оно? От того адреса что мы автоматически назначили в Nios2 и теперь видим в файле system.h проекта BSP, это так называемый базовый адрес (base address, например #define PIO_0_BASE 0x5020) периферийного блока. В файле типа altera_avalon_pio_regs.h можно увидеть эти смещения, для удобства они в виде констант там. Ну а дальше работаем через функции (макросы на самом деле) IORD_ALTERA_AVALON_PIO*** указывая при обращении базовый адрес (ведь оно же должно знать с каким блоком PIO работаем, ведь их может быть много, а есть не только PIO).
4. Да, а потом этот ELF файл назначаем процессору Nios2, чтобы при загрузке прошивки и старте ПЛИС (или старте симуляции) в ней уже была программа по которой ей работать, ведь как "загрузить в симуляцию" прошивку для Nios2 я не знаю как делается если это возможно, поэтому задаем заранее жестко эту привязку процессора и прошивки. Затем моделируем в Modelsim


--------------------
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jan 11 2017, 19:39
Сообщение #580


Лентяй
******

Группа: Свой
Сообщений: 2 031
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(AVR @ Jan 11 2017, 20:27) *
4. Да, а потом этот ELF файл назначаем процессору Nios2, чтобы при загрузке прошивки и старте ПЛИС (или старте симуляции) в ней уже была программа по которой ей работать, ведь как "загрузить в симуляцию" прошивку для Nios2 я не знаю как делается если это возможно, поэтому задаем заранее жестко эту привязку процессора и прошивки. Затем моделируем в Modelsim

Так, конечно, тоже можно. Но это не лучший вариант, т.к. он предполагает запуск квартусовского P&R, ну или, в лучшем случае, ассемблера. А это дополнительное время.

Обычно для проведения моделирования в ниосовском эклипсе создают таргет mem_init_geneate, который преобразует elf в hex- и dat-файлы. Dat-файл нужен для моделирования (он содержит данные, которыми при старте моделирования будет проинициализирована модель памяти).


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 17 2017, 15:51
Сообщение #581





Группа: Участник
Сообщений: 12
Регистрация: 6-01-17
Пользователь №: 94 893



Цитата(AVR @ Jan 11 2017, 18:27) *
3. Да, нужно оперировать регистрами. Конкретно для параллельных GPIO в Nios2 нужно читать ug_embedded_ip.pdf раздел 11 PIO core. Там есть еще Register Map, это значит что по смещению 1 лежит регистр для настройки "направления" работы порта GPIO: на вход или на выход. Смещение - от чего оно? От того адреса что мы автоматически назначили в Nios2 и теперь видим в файле system.h проекта BSP, это так называемый базовый адрес (base address, например #define PIO_0_BASE 0x5020) периферийного блока. В файле типа altera_avalon_pio_regs.h можно увидеть эти смещения, для удобства они в виде констант там. Ну а дальше работаем через функции (макросы на самом деле) IORD_ALTERA_AVALON_PIO*** указывая при обращении базовый адрес (ведь оно же должно знать с каким блоком PIO работаем, ведь их может быть много, а есть не только PIO).


"Прочитал" файл, что вы советовали. В кавычках, потому что английский, к сожалению не хватает знаний языка для того что бы вникнуть. Возможно есть что то похожее не русском? И что то мне подсказывает что должна быть инструкция по конкретным методам обращения к регистрам. Пока только понял что altera_avalon_pio_regs.h подключается библиотекой, которая и содержит методы. Но есть ли по ним какое то обьяснение, желательно на русском? или на русский в этой теме можно не рассчитывать biggrin.gif

Go to the top of the page
 
+Quote Post
AVR
сообщение Jan 17 2017, 19:21
Сообщение #582


фанат Linux'а
****

Группа: Свой
Сообщений: 875
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(lostbegan @ Jan 17 2017, 18:51) *
"Прочитал" файл, что вы советовали. В кавычках, потому что английский, к сожалению не хватает знаний языка для того что бы вникнуть. Возможно есть что то похожее не русском? И что то мне подсказывает что должна быть инструкция по конкретным методам обращения к регистрам. Пока только понял что altera_avalon_pio_regs.h подключается библиотекой, которая и содержит методы. Но есть ли по ним какое то обьяснение, желательно на русском? или на русский в этой теме можно не рассчитывать biggrin.gif
Ну вот документ: https://www.altera.com/en_US/pdfs/literatur...rst_nios_sw.pdf Там написано про IOWR_ALTERA_AVALON_PIO_DATA(base, data) это записывает данные в параллельный порт, а IORD считывает (WR write, RD read). Аналогичные функции для настройки направления работы параллельных портов.

Документацию и научные статьи я бы рассчитывал видеть лишь в англоязычном варианте.


--------------------
Go to the top of the page
 
+Quote Post

39 страниц V  « < 37 38 39
Reply to this topicStart new topic
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st January 2017 - 23:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01581 секунд с 7
ELECTRONIX ©2004-2016