verali 0 3 февраля, 2015 Опубликовано 3 февраля, 2015 · Жалоба Доброе утро! Разбираюсь с NIOS, делаю управление сигнальным процессором ПЛИС по интерфейсу SPI. До настоящего момента ни с МК, ни с процессорами не сталкивался. Начал разбираться с примерами, но никак не могу найти файл с описанием макросов. Допустим для записи числа в регистр PIO существует макрос, о существовании которого узнал из примеров: IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, led); В каком файле искать доступные для конкретного ядра макросы и их описание? PS: Сразу же скачал описание периферии(ug_embedded_ip.pdf), макросов и их описание там не обнаружил Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x66 0 3 февраля, 2015 Опубликовано 3 февраля, 2015 · Жалоба Доброе утро! Разбираюсь с 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
verali 0 3 февраля, 2015 Опубликовано 3 февраля, 2015 · Жалоба Подобный вопрос был в другой теме 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, но не уж то нет другого способа для понимания, что же этот макрос делает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 3 февраля, 2015 Опубликовано 3 февраля, 2015 · Жалоба 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) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
verali 0 3 февраля, 2015 Опубликовано 3 февраля, 2015 · Жалоба 2 verali NIOS2 Instruction Set Reference: Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 20 февраля, 2017 Опубликовано 20 февраля, 2017 · Жалоба 2 verali NIOS2 Instruction Set Reference: Не обновите ссылку? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 20 февраля, 2017 Опубликовано 20 февраля, 2017 · Жалоба Не обновите ссылку? Ну Вы и ленивец... :( Гугл в помощь : https://www.altera.com/en_US/pdfs/literatur...pu_nii51017.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 21 февраля, 2017 Опубликовано 21 февраля, 2017 (изменено) · Жалоба Ну Вы и ленивец... :( А есть какой нибудь документ с описанием макросов вида: 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. - вот такое описание есть где нибудь про остальные функции? Изменено 21 февраля, 2017 пользователем LAS9891 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 23 февраля, 2017 Опубликовано 23 февраля, 2017 · Жалоба А есть какой нибудь документ с описанием макросов вида: 1. Открываете доку на необходимое ядро, находите описание регистров (рисунок из доки на PIO core); 2. Смотрите файл *_regs.h (altera_avalon_pio_regs.h) #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. Всё становится понятным Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться