我有一个用Atmel Studio编写的代码,可以从SD卡读取/写入数据。我在这里使用FatFs。我的问题是,当我在FatFs中使用某些功能(f_chdir,f_getcwd ...)时,代码无法编译。某些功能可以正常运行(f_puts,f_open,f_mount,f_mkdir ...)。所有这些功能都位于同一头文件中(ff.h,ff.c)

错误显示“对-function-的 undefined reference ,ld返回1个退出状态”。当我转到该错误时,它将显示代码的末尾,而应该显示该错误的位置。

我无法理解我的代码中的问题。任何帮助表示赞赏。

最佳答案

只需在使用SAM4S Xplained Pro(Atmel 7,ASF 3.20)的项目中使用SD卡就可以了。

确保您拥有所有asf项目(fatfs,sd_mmc,内存访问控制,然后是其他基础知识,例如pmc,gpio,也许还有更多其他项目)。由于某种原因,我的asf不包括sd_mmc_mem.c和sd_mmc_mem.h,因此我必须自己包括这些。还请记住在主循环顶部执行sd_mmc_init()。至于配置...

如果仔细观察ffconf.h,它所做的第一件事就是conf_fatfs.h,它(等待它!)与ffconf.h完全相同。所有变量都首先在那里定义(并由#ifndef FFCONF而不是CONF_FATFS保护),也就是它所要计数的地方。

进入conf_fatfs.h并将_USE_STRFUNC更改为1或2等。

还要注意,在使用它的地方,必须#ffff.h之前加上ffconf.h或conf_access.h

如果您不知道要寻找什么,ASF就是一个真正的蛇坑。

请享用。

08-28 14:08