Jump to content

    
Sign in to follow this  
electrotehnik

Переход к новой версии FatFS

Recommended Posts

Добрый день

 

Программирую на отладочной плате 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

Edited by electrotehnik

Share this post


Link to post
Share on other sites

ну если вы уверены что вы эти функции не будите использовать, ну сделайте пустые заглушки для них (пустая функция которая ничего не делает). Пусть он их найдет и успокоится.

Ведь если они ему нужны, вы без них не обойдетесь. Другое дело если он их еще и использовать захочет... тогда придется их найти или написать правильные самому...

Share this post


Link to post
Share on other sites

Похоже при переходе к новой версии файл diskio.c остается неизменным, так как в нем описываются функции взаимодействия библиотеки с драйвером. Разве что эти функции необходимо поправить для соответствия нововведениям в библиотеке. В поставке с библиотекой этот файл представляет собой лишь пример. Поправьте меня, если я ошибаюсь, или мое предположение не точно.

Edited by electrotehnik

Share this post


Link to post
Share on other sites

discio это всего лишь интерфейс доступа к физическому хранилищу для FatFS, где будет лежать ваша ФC вы тут и решаете, реализуя соответствующие функции. Если ATA не будет использоваться, просто выкиньте их из этого файла и перепишите его для взаимодействия с SD.

А ошибки выдает линковщик, который не может найти эти функции в объектных файлах, *.о которые.

Share this post


Link to post
Share on other sites

Спасибо, разобрался!

diskio.c переписал по образу и подобию старой версии, при этом поглядывая на diskio.h. Последний - остался без изменений. Остальные файлы тоже просто копируются общим скопом.

Так и получается обновление.

Edited by electrotehnik

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this