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

 
 
 
Reply to this topicStart new topic
NIOSnew
сообщение Jun 1 2012, 03:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 29-11-11
Пользователь №: 68 584



Доброго времени суток! Ответов в теме "Фрагмент программы" нет, поэтому открываю новый топик.
Есть простейший проект в Quartuse, компоненты: cpu, on-chip memory, jtag, MDIO. При попытке создать для него проект в NIOS Eclipse не генерируется макрос для драйвера MDIO. Очень хотелось бы знать, почему. Заранее спасибо.
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Jun 1 2012, 16:23
Сообщение #2


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

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Если имеются в виду макросы доступа типа:
CODE

#define IOADDR_ALTERA_AVALON_SYSID_ID(base) __IO_CALC_ADDRESS_NATIVE(base, 0)
#define IORD_ALTERA_AVALON_SYSID_ID(base) IORD(base, 0)

#define IOADDR_ALTERA_AVALON_SYSID_TIMESTAMP(base) __IO_CALC_ADDRESS_NATIVE(base, 1)
#define IORD_ALTERA_AVALON_SYSID_TIMESTAMP(base) IORD(base, 1)

то они пишутся вручную, с учётом типа адресации (в приведённом примере - тип NATIVE).
Go to the top of the page
 
+Quote Post
NIOSnew
сообщение Jun 4 2012, 03:40
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 29-11-11
Пользователь №: 68 584



Цитата(Копейкин @ Jun 1 2012, 20:23) *
Если имеются в виду макросы доступа типа:
CODE

#define IOADDR_ALTERA_AVALON_SYSID_ID(base) __IO_CALC_ADDRESS_NATIVE(base, 0)
#define IORD_ALTERA_AVALON_SYSID_ID(base) IORD(base, 0)

#define IOADDR_ALTERA_AVALON_SYSID_TIMESTAMP(base) __IO_CALC_ADDRESS_NATIVE(base, 1)
#define IORD_ALTERA_AVALON_SYSID_TIMESTAMP(base) IORD(base, 1)

то они пишутся вручную, с учётом типа адресации (в приведённом примере - тип NATIVE).

Имелись в виду макросы IORD, IOWR.
Спасибо за ответ. Но - опять вопросы:
1. Тогда почему всё хорошо для других компонентов SoPC Builder? В примере с морганием лампочек использовался PIO_LED, и всё нормально генерировалось и работало!
2. Если уж писать самим, где можно почитать о правилах создания макросов?
С уважением, N
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Jun 4 2012, 11:23
Сообщение #4


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

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Фрагмент файла sys/io.h - он генерируется системой, при создании BSP.
CODE

/* Native bus access functions */

#define __IO_CALC_ADDRESS_NATIVE(BASE, REGNUM) \
((void *)(((alt_u8*)BASE) + ((REGNUM) * (SYSTEM_BUS_WIDTH/8))))

#define IORD(BASE, REGNUM) \
__builtin_ldwio (__IO_CALC_ADDRESS_NATIVE ((BASE), (REGNUM)))
#define IOWR(BASE, REGNUM, DATA) \
__builtin_stwio (__IO_CALC_ADDRESS_NATIVE ((BASE), (REGNUM)), (DATA))

1. Для "фирменных" компонентов SOPC билдера уже написаны драйвера, которые подключаются в момент генерации BSP
(Board Support Package). PIO - Альтеровский библиотечный компонент, для которого всё уже написано...
2. Можно начатать с :
- http://www.altera.com/literature/lit-qts.jsp - SOPC user guide
- http://www.altera.com/literature/lit-nio2.jsp - здесь взять руководство NIOSII нужной версии,
там в главе Software Developer's Handbook написано про структуру программы и драйвера.

Сообщение отредактировал Копейкин - Jun 4 2012, 11:27
Go to the top of the page
 
+Quote Post
NIOSnew
сообщение Jun 4 2012, 12:00
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 29-11-11
Пользователь №: 68 584



Спасибо большое! Но вопрос в том, что компонент MDIO - SoPC Builder ready, имеется в дереве его компонентов (ветка Submodules),и фирменный драйвер для него имеется.
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Jun 4 2012, 12:19
Сообщение #6


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

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Ясно, у меня Ква9.1, такого модуля нет, и с ним не сталкивался.
Но если система собрана правильно, то в project_bsp/drivers/inc должен быть файл типа: altera_avalon_mdio_regs.h, в
котором и есть макросы доступа к регистрам MDIO.
Его следует явно подключить через
#include "altera_avalon_mdio_regs.h"
Как-то так...
PS
Глянул, в описании нет программной модели - возможно действительно нужно ручками
или через ядро Ethernet модуля, возможно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 17th July 2025 - 18:35
Рейтинг@Mail.ru


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