|
最近一直在做FatFs在LPC2368上的移植。基本上没什么问题。可是在打开文件的时候只能打开根目录的
如:res = f_open(&fsrc, "111.txt", FA_OPEN_EXISTING | FA_READ);
如果打开不在根目录就出现错误
比如:
res = f_open(&fsrc, "sd\111.txt", FA_OPEN_EXISTING | FA_READ);
res=0x02,说明是找不到这个文件,实际上我卡上时有这个目录和文件的。
我用的FatFs是07a的版本。应该是没问题的。我只做了很小的改动。
只加了
WORD LD_WORD(void *pt)
{
BYTE *PT = (BYTE*)pt;
return (WORD)(PT[0]+PT[1]*256);
}
DWORD LD_DWORD(void *pt)
{
BYTE *PT = (BYTE*)pt;
return ((DWORD)PT[0]+(DWORD)(PT[1]*256)+(DWORD)(PT[2]*65536)+(DWORD)(PT[3]*16777216));
}
WORD LD_WORD_1(const BYTE *pt)
{
BYTE *PT = (BYTE*)pt;
return (WORD)(PT[0]+PT[1]*256);
}
DWORD LD_DWORD_1(const BYTE *pt)
{
BYTE *PT = (BYTE*)pt;
return ((DWORD)PT[0]+(DWORD)(PT[1]*256)+(DWORD)(PT[2]*65536)+(DWORD)(PT[3]*16777216));
}
void ST_WORD(void *ptr,WORD val)
{
BYTE *PT = (BYTE*)ptr;
PT[0]=(BYTE)(val%256);
PT[1]=(BYTE)(val/256);
}
void ST_DWORD(void *ptr,DWORD val)
{
BYTE *PT = (BYTE*)ptr;
PT[0]=(BYTE)(val%256);
PT[1]=(BYTE)((val%65536)/256);
PT[2]=(BYTE)((val%16777216)/65536);
PT[3]=(BYTE)(val/16777216);
}
这样几个函数来代替原来的宏定义。怎么会有这样的错误呢。
怀疑是编译器的问题,我用的是
IDE-Version:
礦ision3 V3.34
Copyright (c) Keil Elektronik GmbH / Keil Software, Inc. 1995 - 2006
Tool Version Numbers:
Toolchain Path: C:\Keil\ARM\BIN30\
C Compiler: ARMCC.Exe V3.0.0.947
Assembler: ARMASM.Exe V3.0.0.947
Linker/Locator: ARMLINK.Exe V3.0.0.947
Librarian: ARMAR.Exe V3.0.0.947
Hex Converter: FROMELF.Exe V3.0.0.947
CPU DLL: SARM.DLL V3.03
Dialog DLL: DARMP.DLL V1.12
Target DLL: BIN\UL2ARM.DLL V1.22
Dialog DLL: TARMP.DLL V1.11f
希望那位做过的朋友指点一下
源文件ourdev_443979.rar(文件大小:342K) (原文件名:SD.rar) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|