Программирую на отладочной плате HY-MiniSTM32V. Карта памяти подключена по SDIO. Попался мне проект, где версия FatFS 0.08b уже отконфигурирована под работу с SDIO.
Но на данный момент уже вышла версия FatFS 0.10b.
Обновил аккуратно файлы FatFS, добавил где надо необходимые инклуды, по аналогии с рабочим проектом. Драйвер SDIO в отдельном файле реализован.
Однако компилер (Keil4) продолжает ругаться таким образом:
Код
...
.\Project_firmware.axf: Error: L6218E: Undefined symbol ATA_disk_initialize (referred from diskio.o).
.\Project_firmware.axf: Error: L6218E: Undefined symbol ATA_disk_read (referred from diskio.o).
...
.\Project_firmware.axf: Error: L6218E: Undefined symbol USB_disk_initialize (referred from diskio.o).
.\Project_firmware.axf: Error: L6218E: Undefined symbol USB_disk_read (referred from diskio.o).
...
.\Project_firmware.axf: Error: L6218E: Undefined symbol MMC_disk_initialize (referred from diskio.o).
.\Project_firmware.axf: Error: L6218E: Undefined symbol MMC_disk_read (referred from diskio.o).
...
.\Project_firmware.axf: Error: L6218E: Undefined symbol get_fattime (referred from ff.o).
...
.\Project_firmware.axf: Error: L6218E: Undefined symbol ATA_disk_initialize (referred from diskio.o).
.\Project_firmware.axf: Error: L6218E: Undefined symbol ATA_disk_read (referred from diskio.o).
...
.\Project_firmware.axf: Error: L6218E: Undefined symbol USB_disk_initialize (referred from diskio.o).
.\Project_firmware.axf: Error: L6218E: Undefined symbol USB_disk_read (referred from diskio.o).
...
.\Project_firmware.axf: Error: L6218E: Undefined symbol MMC_disk_initialize (referred from diskio.o).
.\Project_firmware.axf: Error: L6218E: Undefined symbol MMC_disk_read (referred from diskio.o).
...
.\Project_firmware.axf: Error: L6218E: Undefined symbol get_fattime (referred from ff.o).
...
Я собираюсь работать только с SD. Драйвер подключен только для SD и, соответственно, драйверов для ATA и USB у меня нет, поэтому в файле diskio.c сделал так:
Код
#include "diskio.h" /* FatFs lower layer API */
//#include "usbdisk.h" /* Example: USB drive control */
//#include "atadrive.h" /* Example: ATA drive control */
//#include "sdcard.h" /* Example: MMC/SDC contorl */
#include "sdio_sd.h"
//#include "usbdisk.h" /* Example: USB drive control */
//#include "atadrive.h" /* Example: ATA drive control */
//#include "sdcard.h" /* Example: MMC/SDC contorl */
#include "sdio_sd.h"
Упомянутые необъявленные символы встречаются почти в каждой функции файла diskio.c. Это что же, эти функции нужно переписывать с учетом отсутствующих драйверов, или искать драйвера?
Как сделать правильнее и проще?