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

 
 
> Синхронный порт SSC, Демоны одолели
DpInRock
сообщение Apr 10 2009, 14:26
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Имею кодек и порт SSC1 at....9261.

Кодек работает мастером.
SSC настраиваю, PDC настраиваю. Активизирую кодек.
Начинает бегать счетчик PDC, вхожу в прерывания по ENDTX и ENDRX, обновляю next указатели и счетчики.
Все просто замечательно. Мистика в одном.

Никаких данных реально никуда не передается. Хуже того. Прямой доступ приемника НЕ ИЗМЕНЯЕТ память.
Указатели проверял вживую. Прямо из регистров PDC. Совпадают с нужными. Счетчики тикают с нужной скоростью.
Т.е. полная имитация работы.

В любом случае, даже если порт работает неправильно и все сгорело, то прямой доступ ДОЛЖЕН портить память хоть как-то.
Размещал буферы во всех типах памяти. Результат одинаковый.

Кроме прерываний ENDTX и ENDRX вздымаются еще два бита в регистре статуса SSC - это SYNTX и SYNRX. Они торчат всегда. Изчезают только тогда, когда я останавливаю мастер-кодек.

Почему прямой доступ тикает, но память по указателям прямого доступа не изменяется? Регистры matrix не трогал. Арбитраж стоит по умолчанию.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
aaarrr
сообщение Apr 10 2009, 14:31
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Наверное, в кэшируемую область гоните через PDC smile.gif
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 10 2009, 14:57
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Я в фоновой программе через комп меняю эту память руками. Все изменения отображаются.

Но параллельно - выход передатчика также не работает. Симметрично.

Попробую ММУ не включать, конечно..


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 10 2009, 15:00
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DpInRock @ Apr 10 2009, 18:57) *
Я в фоновой программе через комп меняю эту память руками. Все изменения отображаются.

И что? Точно так же кэш меняете, если он включен.

Для приема/передачи данных извне нужно или отключить кэш для используемой области, или делать invalidate/flush.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 10 2009, 15:19
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Да.
Вот, блин, зараза. Думал по-легкому кодек срубить.
А сделаю-ка последний мегабайт некэшируемым и буду туда всякую дрянь пихать. Все равно там таблица ММУ чистоту крови портит.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 10 2009, 18:43
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Кэш оказался не причем. После выключения ММУ долго искал опчему программа не работает. Оказалось сильное замедление (из-за выключения кэша) убило несколько таймаутов.

Картина та же. Всё тикает, а реальных данных нет. Попробую без прямого доступа.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 10 2009, 19:49
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Кэш. Гад.
Но вроде уладилось. Узнал, что я намного чище играю на гитаре, чем Ричи Блэкмор через мой кодек.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 10 2009, 19:51
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Что-то мне это сильно напоминает, только вот никак не могу вспомнить, что именно sad.gif Как будто наблюдал уже такую картину.

А что за кодек, и какие настройки у SSC?

UPD: А, все-таки кэш.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 10 2009, 21:19
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Кодек SSM2602. Настройки простые. Так как он slave, то указаны внешние источники TF, RF и clock T. Clock К указан равным клоку T.
Кодек стерео, но работает в режиме DSP. Т.е. короткий Sync и дальше 2X16 бита для обоих каналов.

Код
AT91C_BASE_SSC1->SSC_CR=0x8000;//software reset
AT91C_BASE_SSC1->SSC_CMR=BOARD_MCK/(32*16000/2); for any case
//Slave Mode
//Rx
AT91C_BASE_SSC1->SSC_RCMR=0x521;
AT91C_BASE_SSC1->SSC_RFMR=0x1F;
//Tx
AT91C_BASE_SSC1->SSC_TCMR=0x502;
AT91C_BASE_SSC1->SSC_TFMR=0x3F;
//interrupt
AT91C_BASE_SSC1->SSC_IER=0x44;
//PDC
AT91C_BASE_SSC1->SSC_RCR=I2S_LEN/2;//receive counter
AT91C_BASE_SSC1->SSC_RNCR=I2S_LEN/2;//receive next counter
AT91C_BASE_SSC1->SSC_TCR=I2S_LEN/2;//tx counter
AT91C_BASE_SSC1->SSC_TNCR=I2S_LEN/2;//next tx counter;
AT91C_BASE_SSC1->SSC_RPR=(unsigned int )0x21e00000;//&rx_i2s[0];//receive buffer
AT91C_BASE_SSC1->SSC_RNPR=(unsigned int )0x21e10000;//&rx_i2s[I2S_LEN/2];//next receive buffer
AT91C_BASE_SSC1->SSC_TPR=(unsigned int )0x21e20000;//&tx_i2s[0];//tx buffer
AT91C_BASE_SSC1->SSC_TNPR=(unsigned int )0x21e30000;//&tx_i2s[I2S_LEN/2];//next tx buffer
AT91C_BASE_SSC1->SSC_PTCR=0x101;//Enable Rx Tx

AT91C_BASE_SSC1->SSC_CR=0x101;


Кэш. Но очень все странно. У меня на TMS тоже было полно кэша. И прямой доступ тоже был. Но он как-то не приносил такого опыта. ОН не переносил только самомодифициующийся код. Что было понятно сразу и не вызывало вопросов.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 10 2009, 21:29
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DpInRock @ Apr 11 2009, 01:19) *
У меня на TMS тоже было полно кэша. И прямой доступ тоже был. Но он как-то не приносил такого опыта.

Что на TMS (как я понимаю, какой-то из 6000), что на ARM когерентность кэша - забота программиста.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 10 2009, 22:19
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Да 6414. Там как раз было два таких порта и кучка потоков Е1. Со своими собственными проблемами.

Ну да ладно. Это последняя мелкосхема на этой плате. Теперь остается чистое и скучное программирование.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:39
Рейтинг@Mail.ru


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