gn="justify"> для FatFs це не має різниці, вона вміє працювати з обома. Нам буде потрібно написати функції взаємодії з носієм, в даному випадку їх буде шість:
1) DSTATUS disk_initialize (BYTE Drive);
Ініціалізує носій Drive і готує його до операцій читання/запису. Цю функцію не слід зайвий раз викликати зі своєї програми, інакше є хороша ймовірність попсувати всі дані на картці. У разі вдалого виклику повертає 0. У разі, якщо носій друку не ініціалізованих, повертає STA_NOINIT, а якщо носій відсутній - STA_NODISK.
2) DSTATUS disk_status (BYTE Drive);
Дізнається статус носія Drive. Повертає STA_NOINIT якщо диск НЕ инициализирован, а якщо носій відсутній - STA_NODISK. Також у разі, якщо носій захищений від запису, то повертається STA_PROTECTED. p align="justify"> 3) DRESULT disk_read (BYTE Drive, BYTE * Buffer, DWORD SectorNumber, BYTE SectorCount);
Читаю SectorCount з носія Drive в буфер, на який вказує покажчик Buffer починаючи з сектора SectorNumber в LBA адресації. Повертає DRESULT:
enum {// Статус дискової операції _OK = 0, // Операція успішно завершена _ERROR, // Помилка носія _NOTRDY, // Носій не готовий
RES_PARERR // Помилковий аргумент
} DRESULT;
Буфер повинен мати розмір кількість секторів для читання * розмір сектора в байтах. Кількість зчитувальних за раз секторів SectorCount повинно бути про 1 до 128. p align="justify"> 4) DRESULT disk_write (BYTE Drive, const BYTE * Buffer, DWORD SectorNumber, BYTE SectorCount);
Повний аналог disk_read, тільки не зчитує дані, а пише їх на картку.
5) DRESULT disk_ioctl (BYTE Drive, BYTE Command, void * Buffer);
Досить цікава функція, яка передає носію Drive команду Command, а відповідь на команду пише в буфер, на який вказує Buffer. Таблиця необхідних команд наведена нижче. Проконтролювати результат дозволяє повертається значення DRESULT. br/>В
6) DWORD get_fattime (void);
Повертає поточне дату і час, представлене у вигляді подвійного слова DWORD наступним чином :: 25 - року, починаючи з 1980 (0 .. 127): 21 - місяця (1 .. 12): 16 - дні місяця (1 .. 31): 11 - годинник (0 .. 23): 5 - хвилини (0 .. 59): 0 - секунди поділені на 2 (0 .. 29)
Якщо в системі не підтримуються годинник з реальним часом, то потрібно повертати якусь реальну дату і час, тому що в...