[an error occurred while processing this directive] [an error occurred while processing this directive]
проблема с IDMA у 2188
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Pahmed 27 мая 2002 г. 15:53

У меня DSP загружается с хоста(i386) по IDMA. Что бы проверить, что DSP норамально запустился DSP копирует строчку в 16 слов из PM в DM, после чего DSP загружает в IDMA_CONTROL адрес начала этой строки(тогда Хосту не надо знать где находится эта строчка). DSP ждет когда хост считает эту строчку и только тогда начинает свою работу.
DSP отслеживает то, что хост считал всю строку путем сравнения содержимого IDMA_CONTROL с известным адресом последнего слова, но тут-то и начинается полный бред: например строка начинается с 0x0100 DM и заканчивается в 0x0110 DM(16 слов). После копирования строки из PM в DM IDMA_CONTROL устанавливается в 0x4100(я думаю всем ясно, откуда там четверка) так вот когда я опрашиваю IDMA_CONTROL то он так или иначе становится равным 0x4110 даже если хост ничего не читает!!!!!
Или короче говоря он инкрементируется от 0x4100 до 0x4110. мне даже удалось уснать за какое время, ниже код:

i0=^version; m0=1; {область DM, куда строка копируется}
i4=^acknowlege; m4=1; {строка}

{копирование из PM в DM}
cntr=%acknowlege;
do write_ack until ce;
ax0=pm(i4,m4);
dm(i0,m0)=ax0;
write_ack:
nop;

ax0=^version+0x4000;
dm(IDMA_Control)=ax0;

ax0=dm(IDMA_Control);
dm(0x0002)=ax0;
ar=0;

ax0=^version+0x4010;
{ожидание пока хост считает всю строку}
get_ack:
nop; nop; nop; nop; nop;
nop; nop; nop; nop; nop;
nop; nop; nop; nop; nop;
nop; nop; nop; nop; nop;
ar=ar+1;
ay0=dm(IDMA_Control);
none=ax0-ay0;
if ne jump get_ack;

dm(0x0003)=ar;
ax0=dm(IDMA_Control);
dm(0x0004)=ax0;

всем ясно, что 0x0002 - проверил содержимое IDMA_CONTROL в начале
0x0004 - проверил содержимое IDMA_CONTROL в конце
0x0003 - счетчик

Так вот после запуска у меня следующие результаты:
0x0002 - 0x4100
0x0004 - 0x4110
0x0003 - 0x5785 (всегда на 33*2 МГц)

Люди, подскажите что происходит???

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru