electrotehnik 0 24 октября, 2014 Опубликовано 24 октября, 2014 (изменено) · Жалоба Добрый день Программирую на отладочной плате 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). ... Я собираюсь работать только с 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" Упомянутые необъявленные символы встречаются почти в каждой функции файла diskio.c. Это что же, эти функции нужно переписывать с учетом отсутствующих драйверов, или искать драйвера? Как сделать правильнее и проще? StudyProject_v2.rar Изменено 24 октября, 2014 пользователем electrotehnik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 24 октября, 2014 Опубликовано 24 октября, 2014 · Жалоба ну если вы уверены что вы эти функции не будите использовать, ну сделайте пустые заглушки для них (пустая функция которая ничего не делает). Пусть он их найдет и успокоится. Ведь если они ему нужны, вы без них не обойдетесь. Другое дело если он их еще и использовать захочет... тогда придется их найти или написать правильные самому... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
electrotehnik 0 24 октября, 2014 Опубликовано 24 октября, 2014 (изменено) · Жалоба Похоже при переходе к новой версии файл diskio.c остается неизменным, так как в нем описываются функции взаимодействия библиотеки с драйвером. Разве что эти функции необходимо поправить для соответствия нововведениям в библиотеке. В поставке с библиотекой этот файл представляет собой лишь пример. Поправьте меня, если я ошибаюсь, или мое предположение не точно. Изменено 24 октября, 2014 пользователем electrotehnik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shmur 0 24 октября, 2014 Опубликовано 24 октября, 2014 · Жалоба discio это всего лишь интерфейс доступа к физическому хранилищу для FatFS, где будет лежать ваша ФC вы тут и решаете, реализуя соответствующие функции. Если ATA не будет использоваться, просто выкиньте их из этого файла и перепишите его для взаимодействия с SD. А ошибки выдает линковщик, который не может найти эти функции в объектных файлах, *.о которые. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
electrotehnik 0 24 октября, 2014 Опубликовано 24 октября, 2014 (изменено) · Жалоба Спасибо, разобрался! diskio.c переписал по образу и подобию старой версии, при этом поглядывая на diskio.h. Последний - остался без изменений. Остальные файлы тоже просто копируются общим скопом. Так и получается обновление. Изменено 24 октября, 2014 пользователем electrotehnik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться