lpc2478. Занимаюсь осваиванием MassStorage с SD картой, совмещая проекты USBMem и FlashFS. Спасибо Nixon подсказал, как изменить USBMem (mscuser.c), что бы он работал с SD картой. Но проблема возникла где не ждал (как всегда) в процессе выполнения программы при очередной инициализации DMA.
При вызове init_card (); функция static void mci_dma_start (U32 mode, U8 *buf), из файла MCI_LPC24xx.c отрабатывает нормально и код
Код
  for (i = DMA_TOUT; i; i--) {
    if (GPDMA_RAW_INT_TCSTAT & 0x01) {
      /* Data transfer finished. */
      break;
    }
  }

Выходит при i = DMA_TOUT. Та же ситуация при чтении директории с карты. Но при подключении USB кабеля выше указанный for(…) выходит при i = 0.
На РС это видится, как устройство подключено, буковка ему присвоена, но при попытке обратиться к этому диску сообщается, что диск не найден.
В приложении скриншоты с окна Keil-а. 1.PNG – при нормальной работе, 2.PNG и 3.PNG – выход с ошибкой (при подключении USB кабеля).
Вторая проблема с DMA у меня была (так пока и не разобрался) в проекте I2S (http://electronix.ru/forum/index.php?showtopic=82113), не инициализируется первый канал, с нулевым каналом всё нормально.
Есть ещё такой файл errata.lpc2478_1.1.pdf. Там описана проблема, относящаяся к I2S «I2S DMA interface is non-operational». Может в этом дело во втором случае?
Чтение документации ни чего не проясняет. Помогите разобраться.