Я использую FreeRTOS v 10.1.0, кроме того, я скачал FreeRTOS + FAT из области лабораторий (выпуск 160919)
Я использую оценочную плату Altera Cyclone V и успешно запустил проекты FreeRTOS наплата, использующая демонстрационный проект и доступный порт для моей платы в качестве основы для моих собственных приложений.
Я также успешно смонтировал раздел на своей SD-карте и считал файлы с SD-карты, а также записал файлы наSD-карта.
Мои проблемы начинаются, когда я пытаюсь прочитать файл размером более 2K.Я использую следующую команду ff_fread для чтения из файла, который я открыл ранее, и я знаю, что он имеет длину 5777 байт:
ff_fread( &byteBuffer[0],1,5777, pxSourceFile );
Я обнаружил, что байтовый буфер многократно заполнен теми же 2048 байтами,до 5777 байт.Так что я ожидаю от byteBuffer [0] до byteBuffer [2047], но затем эти данные повторяются.
Я также попытался прочитать данные в 512-байтовых блоках, а также в 2048-байтовых блоках в случае, если проблема быласвязанные с границей сектора (сектор 512 байт) или границей кластера (4 сектора на кластер).
Я подозреваю, что проблема в FreeRTOS + Fat, а не в коде Altera для взаимодействия с SD-картой.,Это происходит потому, что, когда я ставлю точку останова в следующей функции, я вижу, что FreeRTOS + Fat api действительно, похоже, возвращается к первому сектору после того, как он успешно прочитал 4 сектора данных.Поэтому может показаться, что Altera Api возвращает данные, запрошенные FreeRTOS + FAT.
static int32_t prvReadSd( uint8_t pucDestination,
uint32_t ulSectorNumber,
uint32_t ulSectorCount,
FF_Disk_t pxDisk )
{
int32_t errorCode = alt_sdmmc_read(pucDestination,
ulSectorNumber * 512,
ulSectorCount * 512);
return errorCode
}
Любые предложения, которые кто-либо может предложить по вопросам, которые у меня возникают, будут высоко оценены.