Skip to content

Commit f72f000

Browse files
committed
test(fs): test fatfs, error occurred while writing
Signed-off-by: Zone.N <Zone.NiuZH@hotmail.com>
1 parent e82a198 commit f72f000

File tree

3 files changed

+55
-45
lines changed

3 files changed

+55
-45
lines changed

fatfs.img

0 Bytes
Binary file not shown.

src/arch/riscv64/intr/intr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ trap_handler(uintptr_t _sepc, uintptr_t _stval, uintptr_t _scause,
4242
(void)_sstatus;
4343
(void)_satp;
4444
(void)_sscratch;
45-
#define DEBUG
45+
//#define DEBUG
4646
#ifdef DEBUG
4747
info("sepc: 0x%p, stval: 0x%p, scause: 0x%p, all_regs(sp): 0x%p, sie: "
4848
"0x%p\nsstatus: ",

src/kernel/test.cpp

Lines changed: 54 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -251,57 +251,67 @@ int test_device(void) {
251251
}
252252

253253
int 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

Comments
 (0)