Есть Ethernet чип. У него определенное кол-во регистров, которые нужно грузить редко. Их хотелось бы видеть со стороны NIOS - что собсно уже и сделано и работает. Но вот когда хочется считать с него данные - хорошо бы DMA . Подключил DMA - но увы, работать перестало. Причем со стороны NIOS (DMA не запускал еще). Толи вообще перестало работать (регистры грузится), толи как-то коряво (еще не разобрался). Как правильно подключить такое устройство к DMA ?
поподробнее плиз, что за чип? PHY или MAC+PHY? если первое - то TSE и вперед, примеры есть и в этом форуме; если второе - тоже несложно, только сделать устройству интерфейс Avalon-овский.
чип DP9000A - MAC + PHY. Выглядит вобщем-то как память, разве что только с двумя адресами - команда-данные. Сейчас висит как Avalon slave - все пашет. Но вот как только DMA на чтение с него вешаю ( в SOPC билдере) - так глючит .. Мож там тристейт бридж какой нужен ?
чип DP9000A - MAC + PHY. Выглядит вобщем-то как память, разве что только с двумя адресами - команда-данные. Сейчас висит как Avalon slave - все пашет. Но вот как только DMA на чтение с него вешаю ( в SOPC билдере) - так глючит .. Мож там тристейт бридж какой нужен ?
как сконфигурирован DMA в SOPC-билдере? какие настройки?
13 бит length, burst off, from embedded blocks Его read master - на этот самый DP9000 memory slave. write master - на SDRAM (она пока еще больше никем не пользуется) control port - на data master cpu
гм.. заработало.. работает ли сама DMA не знаю, щас буду выяснять, но во всяком случае прмому общению проца с DP9000A не мешается. Видимо переутомился вчера
щас буду глядеть =( Собсно какой бы я адрес не указывал - и чипа, и не чипа - всегда читает одну и туже фигню. (если адрес вообще есть в системе, если нету - то виснет все). Так что похоже что не читает он с чипа, раз этот адрес ни на что не влияет alt_dma_rxchan_ioctl(rx, ALT_DMA_SET_MODE_16, NULL); alt_dma_rxchan_ioctl(rx, ALT_DMA_RX_ONLY_ON, DM9000A_IF_0_BASE + 1);