FRESULT pf_open_filesize (
const char *path, /* Pointer to the file name */
DWORD *file_size
)
{
FRESULT res;
DIR dj;
BYTE sp[12], dir[32];
FATFS *fs = FatFs;
DWORD wait_size;
printf("1!\n");
if (!fs) /* Check file system */
return FR_NOT_ENABLED;
printf("2!\n");
fs->flag = 0;
dj.fn = sp;
res = follow_path(&dj, dir, path); /* Follow the file path */
if (res != FR_OK) return res; /* Follow failed */
printf("3!\n");
if (!dir[0] || (dir[DIR_Attr] & AM_DIR)) /* It is a directory */
return FR_NO_FILE;
printf("4!\n");
fs->org_clust = LD_CLUST(dir); /* File start cluster */
fs->fsize = LD_DWORD(dir+DIR_FileSize); /* File size */
printf("5!\n");
*file_size=fs->fsize;
//wait_size=*file_size;
fs->fptr = 0; /* File pointer */
fs->flag = FA_OPENED;
printf("6!\n");
return FR_OK;
}
用的是OPENDSP的BF518的板子
现在做的是SD卡的文件系统,这是一个打开文件函数,我自己加了个输入参数:file_size(想测一下这个文件的大小,这个不是重点)。我的程序都能运行,也能进入这个函数,我加了printf("X!\n")都能在output windows里面显示,可是能运行1、2、3、4、5,可是当程序运行到printf("5!\n")程序就中断了,不在进行下去。我这也没加断点,死活搞不懂。。。。我运行了不修改的这个函数也像这样在这个函数里面加入printf("X!\n")都能运行。下面是我加的几个截面,到最后运行到反汇编的标号FFA000D4和FFA000D4那两行,第三张图片就在那死循环不能进行下去,汇编现在有些看不懂。谁要是明白的个指点指点
「该帖子被 笑溜溜 在 2013-03-28 16:14:16 编辑过」