This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430F5529:FATFS - f-mkfs "创建卷"链接器错误

Guru**** 2595805 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/642148/ccs-msp430f5529-fatfs---f-mkfs-create-volume-linker-error

部件号:MSP430F5529

工具/软件:Code Composer Studio

我在使用elm-chan的FATFS库编译代码时遇到问题。

我创建了一个函数,它应该将SD卡或闪存格式化为FAT32。

void sdcard_fd (void) //格式卷
{
	errCode = f_mkfs (0,FS_FAT32,0);
如果(errCode != FR_OK)
{
fprintf (stdout,("\n 错误:格式化驱动器失败,错误代码:%d\r\n"),错误代码);
返回;
}
否则
{
fprintf(" .....Success!formated drive。");
返回;
}
} 

我收到的错误如下所示。


#1.001万链接期间发生错误;未构建"H_5529_V01.Ut"    
#1.0234万-D未解析的符号仍然存在    
gmake:***[HoneyCrise_5529_V01_Sept_2017.ut]错误2017.错误1    
gmake:由于错误,目标'all'没有重制。    
未解析的符号f_mkfs,首先在./sd_interface.obj中引用    

当然,当我注释掉函数的第一行时,此链接器错误消失了。 所以我很确定问题出在这一行。  行 errCode = f_mkfs (0,FAT32,0)发生了某种情况;  

当我查看f_mksf的声明时,该声明位于库文件ff  声明如下。

FRESULT f_mkfs (字节,字节,UINT);                /*在驱动器上创建文件系统*/

我对本规范的理解如下:

第一个0是SD卡驱动器指示灯。  

第二种是指格式类型。  在这种情况下,它是FAT32,在ff.h中定义

第三个0是指分配单位的大小.....  我尝试了 多个值_MAX_SS,FF_MAX_SS,0512和1024。

我是从elm_chung.org上的f_mkfs页面了解这一点的

我在函数中输入的值都有效。  0是一个字节,FAT32 =3是一个字节,_MAX_SS =512是一个uint。  代码只编译文件。

包括文件

以下是包含的文件列表。

#include <MSP4S.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include "include/HAL_SDCard.h"
#include "include/ff.h"
#include "include/ffconf.h"
#include "include/diskio.h"
#include "include/mmc.h"
包括"UART.h"
#include "sd_interface.h"

我添加了许多附加的include文件,以查看是否有帮助。   我添加了include/ff.h和include/ffconf.h  ... 这没有什么帮助。    我确信我指向的是正确的库。

为什么我收到链接器错误?    

我正在 MAC上使用代码编辑器版本:7.3。   自从我开始开发以来,我没有更新我的代码沉稳性...也许这可能是一个问题。

任何帮助都是非常好的。

Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发现了问题。 f_mkfs的代码已在fconf.h中关闭,我只需要将 #define 值设置为1
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢Chris提供您的解决方案!

    Ryan