Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NIOS-DMA-UART ?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
TSURKOV
Уважаемые коллеги помогите пожалуйста разобраться с бональной ошибкой. При организации взаимодействия NIOS-DMA-UART функция txchan = alt_dma_txchan_open("/dev/dma_0") возвращает нулевой адрес в указателе. Соответственно не работает и передача по DMA. По документации вроде все понятно, а результат отрицательный. Все устройства (NIOS DMA RAM UART) синтезированы на EP1C6. Память в SOPSbuilder как я только не пробовал крутить. Делал через одну – 4кб, делал RAM1 - 3кб (рабочая), RAM2 – 1кб (DMA), пытался реализовать и в одно и в двух портовом режиме. DMA молчит как убитый. Посоветуйте на что обратить внимание.
Спасибо.


http://files.mail.ru/I6ZQJJ?t=1[/img]
barabek
Цитата(TSURKOV @ Feb 17 2012, 16:24) *
Уважаемые коллеги помогите пожалуйста разобраться с бональной ошибкой. При организации взаимодействия NIOS-DMA-UART функция txchan = alt_dma_txchan_open("/dev/dma_0") возвращает нулевой адрес в указателе. Соответственно не работает и передача по DMA. По документации вроде все понятно, а результат отрицательный. Все устройства (NIOS DMA RAM UART) синтезированы на EP1C6. Память в SOPSbuilder как я только не пробовал крутить. Делал через одну – 4кб, делал RAM1 - 3кб (рабочая), RAM2 – 1кб (DMA), пытался реализовать и в одно и в двух портовом режиме. DMA молчит как убитый. Посоветуйте на что обратить внимание.
Спасибо.


http://files.mail.ru/I6ZQJJ?t=1[/img]


Так а дебагером почему не получается отследить? Там же в пошаговом режиме можно пройтись и все понятно станет. Либо вообще забить на библиотеку и работать напрямую с регистрами DMA-контроллера. Там их всего-то. Я когда увидел описание на библиотеку сразу сдался sm.gif.
TSURKOV
Цитата(barabek @ Feb 17 2012, 09:32) *
Так а дебагером почему не получается отследить? Там же в пошаговом режиме можно пройтись и все понятно станет. Либо вообще забить на библиотеку и работать напрямую с регистрами DMA-контроллера. Там их всего-то. Я когда увидел описание на библиотеку сразу сдался sm.gif.


Я так и делал.

IOWR_ALTERA_AVALON_DMA_STATUS(DMA_0_BASE, 0x00000000);
IOWR_ALTERA_AVALON_DMA_LENGTH(DMA_0_BASE,5);
IOWR_ALTERA_AVALON_DMA_RADDRESS(DMA_0_BASE,0x00001800);
IOWR_ALTERA_AVALON_DMA_WADDRESS(DMA_0_BASE,0x00001800);
IOWR_ALTERA_AVALON_DMA_CONTROL(DMA_0_BASE,9);
i = IORD_ALTERA_AVALON_DMA_STATUS(DMA_0_BASE);

DMA_STATUS возвращает -2, т.е. он занят. Такое впечатление, что UART не забирает данные.
Копейкин
Мне помнится не удалось DMA котроллером работать с обоими фиксированными адресами (адрес чтения и адрес записи).
Никак не желал работать.
Стоило сделать один из адресов инкрементируемым и всё прекрасно жило.
софт QII 9.1 sp2
Я тогда cделал на SGDMA и пользовал библиотеку.
Может у Вас то же самое?
TSURKOV
IOWR_ALTERA_AVALON_DMA_STATUS(DMA_0_BASE,0x0);
IOWR_ALTERA_AVALON_DMA_CONTROL(DMA_0_BASE,0x0);

IOWR_ALTERA_AVALON_DMA_RADDRESS(DMA_0_BASE,(alt_u32)&data[0]);
IOWR_ALTERA_AVALON_DMA_WADDRESS(DMA_0_BASE,UART_0_BASE);
IOWR_ALTERA_AVALON_DMA_LENGTH(DMA_0_BASE,8);


ch = ALTERA_AVALON_DMA_CONTROL_BYTE_MSK
| ALTERA_AVALON_DMA_CONTROL_GO_MSK
| ALTERA_AVALON_DMA_CONTROL_LEEN_MSK
| ALTERA_AVALON_DMA_CONTROL_WCON_MSK;

IOWR_ALTERA_AVALON_DMA_CONTROL(DMA_0_BASE,ch);


Я правильно понимаю, что в режиме передачи UART через DMA я указываю в RADDRESS - адрес памяти где хранятся передаваемые данные и он будет использоваться DMA контроллером для чтения памяти. А в WADDRESS я указываю физический адрес UART и он должен быть статичным при установке бита WCON. В этом случае физический блок UART должен соединяться с NIOS через master порт шины данных NIOS, помимо того, что UART еще соединен с master портом DMA. И это обязательно !?
Копейкин
В приведённом скриншоте системы, UART не соединён с мастером данных CPU.
Процессор тогда не может сконфигурировать UART и это неправильно.
WADDRESS должен указывать адрес регистра txdata (= UART_0_BASE + 1).
По моему должно быть так.
TSURKOV
Да вы правы. Я тоже уже к этому пришел. спасибо большое
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.