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

 
 
 
Reply to this topicStart new topic
> SPI & NIOS, общие вопросы по программированию
verali
сообщение Feb 3 2015, 08:09
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Доброе утро! Разбираюсь с NIOS, делаю управление сигнальным процессором ПЛИС по интерфейсу SPI.
До настоящего момента ни с МК, ни с процессорами не сталкивался.
Начал разбираться с примерами, но никак не могу найти файл с описанием макросов.
Допустим для записи числа в регистр PIO существует макрос, о существовании которого узнал из примеров:
Код
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, led);

В каком файле искать доступные для конкретного ядра макросы и их описание?
PS: Сразу же скачал описание периферии(ug_embedded_ip.pdf), макросов и их описание там не обнаружил
Go to the top of the page
 
+Quote Post
x66
сообщение Feb 3 2015, 08:13
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(verali @ Feb 3 2015, 11:09) *
Доброе утро! Разбираюсь с NIOS, делаю управление сигнальным процессором ПЛИС по интерфейсу SPI.
До настоящего момента ни с МК, ни с процессорами не сталкивался.
Начал разбираться с примерами, но никак не могу найти файл с описанием макросов.
Допустим для записи числа в регистр PIO существует макрос, о существовании которого узнал из примеров:
Код
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, led);

В каком файле искать доступные для конкретного ядра макросы и их описание?
PS: Сразу же скачал описание периферии(ug_embedded_ip.pdf), макросов и их описание там не обнаружил


Подобный вопрос был в другой теме http://electronix.ru/forum/index.php?showtopic=125533
Go to the top of the page
 
+Quote Post
verali
сообщение Feb 3 2015, 10:05
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(x66 @ Feb 3 2015, 09:13) *
Подобный вопрос был в другой теме http://electronix.ru/forum/index.php?showtopic=125533

Спасибо, тему я эту смотрел, но ответа на свой вопрос не нашел.
Допустим я хочу просмотреть макрос IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, led).
1) PIO_0_BASE - я нахожу в system.h
2) IOWR_ALTERA_AVALON_PIO_DATA является макросом (могу ошибаться в терминологии) IOWR(BASE, REGNUM, DATA) - нахожу в io.h
3) IOWR(BASE, REGNUM, DATA) является макросом __builtin_stwio (__IO_CALC_ADDRESS_NATIVE ((BASE), (REGNUM)), (DATA))
А вот что делает функция __builtin_stwio я найти не могу.
Можно конечно додумать что макрос IOWR значит WRite data в BASE, но не уж то нет другого способа для понимания, что же этот макрос делает?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 3 2015, 10:21
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 verali
NIOS2 Instruction Set Reference:
Цитата
stw / stwio : store word to memory or I/O peripheral
Operation: Mem32[rA + V (IMM16)] <- rB
Assembler Syntax: stw rB, byte_offset(rA) / stwio rB, byte_offset(rA)
Example: stw r6, 100(r5)
Go to the top of the page
 
+Quote Post
verali
сообщение Feb 3 2015, 13:46
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(Kuzmi4 @ Feb 3 2015, 11:21) *

Спасибо
Go to the top of the page
 
+Quote Post
LAS9891
сообщение Feb 20 2017, 12:34
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Kuzmi4 @ Feb 3 2015, 13:21) *


Не обновите ссылку?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Feb 20 2017, 13:33
Сообщение #7


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

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



Цитата(LAS9891 @ Feb 20 2017, 15:34) *
Не обновите ссылку?

Ну Вы и ленивец... sad.gif
Гугл в помощь :
https://www.altera.com/en_US/pdfs/literatur...pu_nii51017.pdf


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
LAS9891
сообщение Feb 21 2017, 05:33
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Stewart Little @ Feb 20 2017, 16:33) *
Ну Вы и ленивец... sad.gif

А есть какой нибудь документ с описанием макросов вида:
IOADDR_ALTERA_AVALON_PIO_DATA(base)
IORD_ALTERA_AVALON_PIO_DATA(base)
IOWR_ALTERA_AVALON_PIO_DATA(base, data)

Вообщем тех макросов которые объявлены в документе altera_avalon_pio_regs.h. Хотелось бы документ, в котором хотя бы на английском было написано, что делает макрос IOADDR_ALTERA_AVALON_PIO_DATA(base) (например) и пример использования. Чтобы не выяснять назначение каждого из них как это делает автор темы. Есть такой?

Вот что есть в документе My First Nios II Software Tutorial:
When you include the altera_avalon_pio_regs.h file, several useful functions that
manipulate the PIO core registers are available to your program. In particular, the
function IOWR_ALTERA_AVALON_PIO_DATA(base, data) can write to the PIO data
register, turning the LED on and off.
- вот такое описание есть где нибудь про остальные функции?

Сообщение отредактировал LAS9891 - Feb 21 2017, 05:40
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 23 2017, 11:35
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(LAS9891 @ Feb 21 2017, 08:33) *
А есть какой нибудь документ с описанием макросов вида:

1. Открываете доку на необходимое ядро, находите описание регистров (рисунок из доки на PIO core);
2. Смотрите файл *_regs.h (altera_avalon_pio_regs.h)
CODE

#ifndef __ALTERA_AVALON_PIO_REGS_H__
#define __ALTERA_AVALON_PIO_REGS_H__

#include <io.h>

#define IOADDR_ALTERA_AVALON_PIO_DATA(base) __IO_CALC_ADDRESS_NATIVE(base, 0)
#define IORD_ALTERA_AVALON_PIO_DATA(base) IORD(base, 0)
#define IOWR_ALTERA_AVALON_PIO_DATA(base, data) IOWR(base, 0, data)

#define IOADDR_ALTERA_AVALON_PIO_DIRECTION(base) __IO_CALC_ADDRESS_NATIVE(base, 1)
#define IORD_ALTERA_AVALON_PIO_DIRECTION(base) IORD(base, 1)
#define IOWR_ALTERA_AVALON_PIO_DIRECTION(base, data) IOWR(base, 1, data)

#define IOADDR_ALTERA_AVALON_PIO_IRQ_MASK(base) __IO_CALC_ADDRESS_NATIVE(base, 2)
#define IORD_ALTERA_AVALON_PIO_IRQ_MASK(base) IORD(base, 2)
#define IOWR_ALTERA_AVALON_PIO_IRQ_MASK(base, data) IOWR(base, 2, data)

#define IOADDR_ALTERA_AVALON_PIO_EDGE_CAP(base) __IO_CALC_ADDRESS_NATIVE(base, 3)
#define IORD_ALTERA_AVALON_PIO_EDGE_CAP(base) IORD(base, 3)
#define IOWR_ALTERA_AVALON_PIO_EDGE_CAP(base, data) IOWR(base, 3, data)


#define IOADDR_ALTERA_AVALON_PIO_SET_BIT(base) __IO_CALC_ADDRESS_NATIVE(base, 4)
#define IORD_ALTERA_AVALON_PIO_SET_BITS(base) IORD(base, 4)
#define IOWR_ALTERA_AVALON_PIO_SET_BITS(base, data) IOWR(base, 4, data)

#define IOADDR_ALTERA_AVALON_PIO_CLEAR_BITS(base) __IO_CALC_ADDRESS_NATIVE(base, 5)
#define IORD_ALTERA_AVALON_PIO_CLEAR_BITS(base) IORD(base, 5)
#define IOWR_ALTERA_AVALON_PIO_CLEAR_BITS(base, data) IOWR(base, 5, data)



/* Defintions for direction-register operation with bi-directional PIOs */
#define ALTERA_AVALON_PIO_DIRECTION_INPUT 0
#define ALTERA_AVALON_PIO_DIRECTION_OUTPUT 1

#endif /* __ALTERA_AVALON_PIO_REGS_H__ */


3. Всё становится понятным
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:15
Рейтинг@Mail.ru


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