@@ -251,57 +251,67 @@ int test_device(void) {
251251}
252252
253253int test_fatfs (void ) {
254- // // FatFs work area needed for each volume
255- // FATFS FatFs;
256- // // File object needed for each open file
257- // FIL Fil;
258- //
259- // uint32_t bw;
260- // FRESULT fr;
261- //
262- // // Give a work area to the default drive
263- // fr = f_mount(&FatFs, "/", 1);
264- // info("f_mount:%d\n", fr);
265- //
266- // // Create a file
267- // fr = f_open(&Fil, "newfile.txt", FA_WRITE | FA_CREATE_ALWAYS);
268- // info("f_open:%d\n", fr);
269- //
270- // if (fr == FR_OK) {
271- // // Write data to the file
272- // f_write(&Fil, "It works!\r\n", 11, &bw);
273- // // Close the file
274- // fr = f_close(&Fil);
275- // info("f_close %d\n", fr);
276- // }
254+ FATFS fatfs;
255+ FRESULT status;
256+ DIR dir;
257+ FILINFO flinfo;
258+ FIL fil;
259+ uint8_t buf[COMMON::BUFFFER_SIZE];
260+ uint32_t size;
277261
278- FATFS sdcard_fs;
279- FRESULT status;
280- DIR dj;
281- FILINFO fno;
262+ status = f_mount (&fatfs, " " , 0 );
263+ assert (status == FR_OK);
282264
283- printf (" /********************fs test*******************/\n " );
284- status = f_mount (&sdcard_fs, " " , 0 );
285- printf (" mount sdcard: %d\n " , status);
286- if (status != FR_OK) {
287- return status;
288- }
289-
290- // / @bug 找不到文件
291- status = f_findfirst (&dj, &fno, " " , " *" );
265+ status = f_findfirst (&dir, &flinfo, " " , " *" );
266+ assert (status == FR_OK);
292267
293- printf (" printf filename %d [%s]\n " , status, " fno.fname[0]" );
294- while (status == FR_OK && fno.fname [0 ]) {
295- if (fno.fattrib & AM_DIR) {
296- printf (" dir: %s\n " , fno.fname );
268+ while (status == FR_OK && flinfo.fname [0 ]) {
269+ if (flinfo.fattrib & AM_DIR) {
270+ printf (" dir: %s\n " , flinfo.fname );
297271 }
298272 else {
299- printf (" file: %s\n " , fno .fname );
273+ printf (" file: %s\n " , flinfo .fname );
300274 }
301- status = f_findnext (&dj, &fno);
302- printf (" f_findnext %d [%s]\n " , status, " fno.fname[0]" );
275+ status = f_findnext (&dir, &flinfo);
276+ }
277+ f_closedir (&dir);
278+
279+ status = f_open (&fil, " file1" , FA_READ | FA_OPEN_EXISTING);
280+ assert (status == FR_OK);
281+
282+ bzero (buf, COMMON::BUFFFER_SIZE);
283+
284+ status = f_read (&fil, buf, 15 , &size);
285+ assert (status == FR_OK);
286+ f_close (&fil);
287+
288+ printf (" buf: [%s]\n " , buf);
289+
290+ status = f_open (&fil, " file1" , FA_WRITE | FA_OPEN_APPEND);
291+ assert (status == FR_OK);
292+
293+ auto str = " Hello, World!\n " ;
294+ status = f_write (&fil, str, sizeof (str), &size);
295+ assert (status == FR_OK);
296+ f_close (&fil);
297+
298+ assert (size == sizeof (str));
299+ printf (" f_write: %d\n " , size);
300+
301+ status = f_open (&fil, " file1" , FA_READ | FA_OPEN_EXISTING);
302+ assert (status == FR_OK);
303+
304+ bzero (buf, COMMON::BUFFFER_SIZE);
305+
306+ status = f_read (&fil, buf, 15 , &size);
307+ assert (status == FR_OK);
308+ f_close (&fil);
309+
310+ printf (" buf: %d [0x%X]\n " , size, buf);
311+ for (int i = 0 ; i < 15 ; i++) {
312+ printf (" [%c]" , buf[i]);
303313 }
304- f_closedir (&dj );
314+ printf ( " \n " );
305315
306316 info (" fatfs test done.\n " );
307317 return 0 ;
0 commit comments