Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Почему не подключается драйвер?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
NIOSnew
Доброго времени суток! Ответов в теме "Фрагмент программы" нет, поэтому открываю новый топик.
Есть простейший проект в Quartuse, компоненты: cpu, on-chip memory, jtag, MDIO. При попытке создать для него проект в NIOS Eclipse не генерируется макрос для драйвера MDIO. Очень хотелось бы знать, почему. Заранее спасибо.
Копейкин
Если имеются в виду макросы доступа типа:
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).
NIOSnew
Цитата(Копейкин @ 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
Копейкин
Фрагмент файла 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 написано про структуру программы и драйвера.
NIOSnew
Спасибо большое! Но вопрос в том, что компонент MDIO - SoPC Builder ready, имеется в дереве его компонентов (ветка Submodules),и фирменный драйвер для него имеется.
Копейкин
Ясно, у меня Ква9.1, такого модуля нет, и с ним не сталкивался.
Но если система собрана правильно, то в project_bsp/drivers/inc должен быть файл типа: altera_avalon_mdio_regs.h, в
котором и есть макросы доступа к регистрам MDIO.
Его следует явно подключить через
#include "altera_avalon_mdio_regs.h"
Как-то так...
PS
Глянул, в описании нет программной модели - возможно действительно нужно ручками
или через ядро Ethernet модуля, возможно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.