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

 
 
> LCD DMA, Похоже DMA не запускается
alexPec
сообщение Aug 16 2010, 14:00
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Свои версии кончились. Гуру, взываю к Вам, помогите!!!

Собрал сопц на ките N2-DK-eval 3c25, тот который с LCD (разьем LCD в картинке). Сопц в картинках ниже (разделен на 2 части, весь в экран не влез). Собираю - все собирается, прошивается, пошагово дебажится, а на LCD нет ничего. Начал железо мерять осциллом. Методика такая: при сбросе кит загружается прошивкой и на LCD изображение выводит. Промерял все ноги разъема (когда картинка есть) - записал, что там на них. Заливаю свою систему, заливаю программу, выполняю, снова меряю осциллом ноги. Результат такой - все сигналы, включая синхронизацию, HD,VD,DEN,CLK - один в один как при рабочем экране, а на линиях данных - 0, стабильный, постоянный. Пробовал даже замкнуть 26 и 27 ноги (+3.3В и G7)разьема LCD - появился зеленый фон, сдвинутый правда по горизонтали и вертикали (че-то с бланк интервалами там видимо напутано, но это второстепенная проблема, хотя ее решение тоже пока не знаю). Из чего сделал вывод, что все что касается сопца сделано правильно, не запускается DMA. Тут и тупик. Вроде запускаю как в примере. На всякий случай исходники вложил. Где что не так, где померять, что попробовать, подскажите пожалуйста!!! 1111493779.gif


Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  hello_world_small_0.rar ( 17.1 килобайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vadimuzzz
сообщение Aug 17 2010, 00:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



перво-наперво посмотрите в программе, в том месте где открывается устройство sgdma (display = alt_video_display_init), просмотрите все содержимое переменной display. если все нормально, цепляйте сигналтап к выходам по всей цепочке, начиная с sgdma. есть ненулевая вероятность, что один из адаптеров неправильно сконфигурирован.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Aug 17 2010, 09:35
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



В переменной display все вроде как надо (рис. ниже). 0х1111000 - адрес csr DMA, по даресу в name лежит мой \dev\dma, буфер, который начинается с 0х01000048 - адрес в ssram, она 1мбайт, начинается с 0х01000000.
Дескрипторы похоже правильные (рис. ниже). Байты 0-3 четные - начальный адрес для чтения, нечетные - адрес след. дескриптора, размер блока данных - 0хff00, дескрипторы закольцованы. Сигналтапом прочитал (рис. ниже) - нули на выходе dma. Посмотрел у dma дескриптор рид адрес и дескриптор рид дата (8,9 сигналы сверху) - нули; дескриптор райт адрес (10 сверху) - адрес одного из дескрипторов, дескриптор райт дата (11 сверху) - говорит о том, что передано этим дескриптором 0хff00 байт. Мемори рид адрес указывает на место в дисплейном буфере (12 сверху).
Но вот беда! Данные остаются одни и теже при каждом запуске сигнал тап, т.е. вроде как dma остановлено. После сброса проца данные другие (но правильные, другой дескриптор, другой адрес памяти), но до следующего сброса не меняются.
Такое ощущение, что dma работать начинает, но останавливается, причем случайно. ЧТО ДЕЛАТЬ-ТО ??

Сообщение отредактировал alexPec - Aug 17 2010, 09:37
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
alexPec
сообщение Aug 17 2010, 11:12
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Еще одна странность: При выделении буфера под картинку функцией alt_uncached_malloc возвращается значение 0x81000058, а у меня память ssram с 0x01000000 по 0x010fffff. Или старший бит показывает на то что буфер некешируемый? Потому как следующее выделение памяти для дескрипторов проходит с учетом выделенной памяти для картинки, т.е.
картинка 0x81000058 - 0x8107f858 (размер 522240 байт)
дескрипторы 0x0107f860

т.е. даже если обнулить старший бит в адресе картинки, буферы не перекрываются...
В дебаге после запуска дма функцией alt_avalon_sgdma_do_async_transfer в поле actual bytes transferred первых двух дескрипторов (из 8) записывается 0xff00, у остальных дескрипторов это поле 0 и после этого в сигналтапе уже ничего не меняется.
Т.е. 2 дескриптора трансферятся, а потом все стопорится. Может тактовую уменьшить, что нибудь с таймингами не так?

Сообщение отредактировал alexPec - Aug 17 2010, 11:40
Go to the top of the page
 
+Quote Post
alexPec
сообщение Aug 17 2010, 12:44
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Определенно с таймингами! Снизил все частоты в 2 раза - дма крутится.
А как его заставить крутиться на 100 МГц? (сечас только на 50 крутится); в примере-то на 100 МГц дма работает и все нормально???
Где, в каком файле может какие констрейны прописаны в работающем на 100 мгц проекте?

Сообщение отредактировал alexPec - Aug 17 2010, 13:41
Go to the top of the page
 
+Quote Post



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

 


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


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