We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi
I know this is not a RTX or Cortex M3 related question but I am desperate for some ideas about why elm chan's FatFs does will create a directory that is more than 2 levels deep at times. The FatFs forum is not very active with answers and I was hoping with so many experienced develops here that I could get an idea as to what the issue is.
The odd/strange thing is that I can create (or so it reports) directories 5 levels deep (first group below) but when I try to create a second group of directories using the same type of sequence, the 3th level directory name (file) is reported as not found.
Just to do a sanity check I added code to try to make the directory a 2nd time and it should report back EXISTS but when creating the 3rd level, f_mkdir reports OK again. That is wrong.
I just don't understand why something so basic is not working.
I have Long FileNames enabled, Relative Paths enabled,
// all of these f_mkdir calls return OK res = f_mkdir("Results"); res = f_mkdir("Results/RunTableName1"); res = f_mkdir("Results/RunTableName1/M1odeName1"); res = f_mkdir("Results/RunTableName1/M1odeName1/G1W001"); res = f_mkdir("Results/RunTableName1/M1odeName1/G1W001/A1qNodeID1"); res = f_mkdir("Results/RunTableName1/M1odeName1/G1W001/A2qNodeID2"); res = f_mkdir("Results/RunTableName1/M1odeName1/A1E001"); res = f_mkdir("Results/RunTableName1/M1odeName1/A1E001/A1qNodeID1"); res = f_mkdir("Results/RunTableName1/M1odeName1/A1E001/A2qNodeID2"); res = f_mkdir("Results/RunTableName1/M1odeName1/D1C001"); res = f_mkdir("Results/RunTableName1/M1odeName1/D1C001/A1qNodeID1"); res = f_mkdir("Results/RunTableName1/M1odeName1/D1C001/A2qNodeID2");
// from debugging I have found that the 4th directory name is being // reported as NO_FILE even though it says it successfully created // the directory earlier res = f_mkdir("Results/RunTableName2"); // OK res = f_mkdir("Results/RunTableName2"); // EXISTS res = f_mkdir("Results/RunTableName2/ModeName1"); // OK res = f_mkdir("Results/RunTableName2/ModeName1"); // OK -> should be EXISTS res = f_mkdir("Results/RunTableName2/ModeName1/GW001"); // NO PATH res = f_mkdir("Results/RunTableName2/ModeName1/GW001"); // NO PATH
I'm sure we've all been there...