Цитата(toweroff @ Jan 15 2013, 18:18)

без оптимизации внешний девайс прекрасно работает на внешней шине асинхронной, с O3 & Time свистопляска какая-то

Было такое, на LPC и с Кейлом. Почти наверняка дело не в скорости доступа к ОЗУ, а в оптимизации. Запретите компилятору оптимизировать, например, процедуры, формирующие временные диаграммы на шине. Для этого перед не допускающим оптимизации кодом напишите:
Код
#pragma O0
потом, если нужно, снова включите оптимизацию:
Код
#pragma O3
Например:
Код
//установка бита GPNVM[0..2].
//В случае успеха возвращает "0", в случае ошибки возвращает "1"
unsigned int set_gpnvm_bit(unsigned int gpnvm_bit_to_set)
{
#pragma O0
unsigned int i;
*AT91C_EFC_FCR = (0x5a000000 | (gpnvm_bit_to_set << 8) | 0x0b);
i = 0;
while ((i & 0x00000001) == 0) i = (*AT91C_EFC_FSR);
//Проверяем, не было ли ошибки (для этой команды
//возможна только одна ошибка: "Bad command")
if (i & 0x00000002) return 1; else return 0;
#pragma O3
}
А еще гляньте осциллографом временные диаграммы на шине ...