ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
12 декабря
234033
++ (17.01.2011 17:19 - 17:24, просмотров: 968)
adsp 21361 AMI : иногда "проглатывает" команды чтения и записи. Сигнал ACK использовать невозможно (не разведен). Сооотв в регистре он выключен. Состояние шины DSP смотрим логическим анализатором. Создается впечатление, что CPU core вообще не ждет готовности AMI(ext memory interface). Если после каждой записи поставить сброс буферов в шину, все гораздо лучше. Но если прибавить waitstate до 32, то в линию вообще выдается постоянно 0. Первый раз с таким сталкиваюсь. Пропадаю. *pAMICTL1= PREDIS | RHC2 | /*RHC1 |*/ AMIFLSH | IC7 | HC2 | /*HC1 |*/ WS12 | PKDIS | BW32 | AMIEN; /* sram, 32 bit bus */ /* SRAM тест 1 */ for(addr= 0; addr <= SRAM_SIZE; addr++) /* пишем по нечетным адресам 0xffff_ffff, по четным 0x0000_0000 */ {p= (volatile unsigned int *)(EXT_BUS_BANK1_ADDR | addr); *pAMICTL1|= AMIFLSH; if(addr & 0x01) {*p= 0xffffffff; continue;} *p= 0x00000000; } for(r=0x100; r; r--) continue; /* задержка */ for(addr= 0; addr <= SRAM_SIZE; addr++) /* проверяем, что по нечетным адресам 0xffff_ffff, по четным 0x0000_0000 */ {p= (volatile unsigned int *)(EXT_BUS_BANK1_ADDR | addr); *pAMICTL1|= AMIFLSH; v= *p; if(addr & 0x01) {if(v == 0xffffffff) continue;} else {if(!v) continue;} return 0; } /* SRAM тест 2 */ for(r=0x100; r; r--) continue; /* задержка */ for(addr= 0; addr <= SRAM_SIZE; addr++) /* пишем по нечетным адресам 0x0000_0000, по четным 0xffff_ffff */ {p= (volatile unsigned int *)(EXT_BUS_BANK1_ADDR | addr); if(*pAMICTL1 & AMIFLSH) continue; if(addr & 0x01) {*p= 0x00000000; *pAMICTL1|= AMIFLSH; continue;} *p= 0xffffffff; *pAMICTL1|= AMIFLSH; } for(r=0x100; r; r--) continue; /* задержка */ for(addr= 0; addr <= SRAM_SIZE; addr++) /* проверяем, что по нечетным адресам 0x0000_0000, по четным 0xffff_ffff */ {p= (volatile unsigned int *)(EXT_BUS_BANK1_ADDR | addr); v= *p; if(addr & 0x01) {if(!v) continue;} else {if(v == 0xffffffff) continue;} return 0; }
++