[an error occurred while processing this directive]
|
Имейте ввиду что в реализации процедуры MMC_write допущена ошибка. Надо вычленить из *:\ti\c5500\bios\lib\csl55xx.src файл mmc_write.c и заремить в нем строчку как показано ниже
...
// Format and send command
if (MMC_FGET_H(mmc,MMCCTL,SPIEN)) {
MMC_FSET_H(mmc,MMCCTL,CSEN,1); //select card
}
regs->mmcargh = (Uint16)((cardAddr >> 16)& 0xFFFFu);
regs->mmcargl = (Uint16)(cardAddr & 0xFFFFu);
// regs->mmcdxr = *buf++;
if (!(MMC_FGET_H(mmc,MMCCTL,SPIEN))) {
regs->mmccmd = MMC_WRITE_BLOCK|0xA800; //send command
}
...
Соответственно в SPRU593 (стр. 2-12 по 2-14) тоже описано неправильно.
Ошибка заключается в том, что ТИ требует следующей последовательности:
запись первого байта в регистр MMCDXR -> отправки команды в карточку -> получение ответа -> запись след. байта в регистр MMCDXR->... (SPRU593 (стр. 2-12))
На самом деле спецификация ММС требует следующей последовательности:
отправка команды в карточку -> получение ответа -> запись первого байта в регистр MMCDXR -> запись след. байта в регистр MMCDXR->...
Т.о. происходит потеря первого байта (16 бит!).
К компилятору отношения не имеет! :))))
E-mail: info@telesys.ru