debug(fat32): read 打印文件状态(size/first_cluster/pos)与实际读取字节数,定位 ehdr 读取失败根因
This commit is contained in:
1 parent
a8f7c0b0b3
commit
51c7475031
1 file changed
+11
-1
@@ -4,7 +4,8 @@ import spinlock
|
|||||||
import string
|
import string
|
||||||
import fat32_diskio as diskio
|
import fat32_diskio as diskio
|
||||||
import fat32_time as ftime
|
import fat32_time as ftime
|
||||||
|
import viperlib
|
||||||
|
import drivers.serial.uart.serial as serial
|
||||||
|
|
||||||
def _read32(buf: t.CUInt8T | t.CPtr, off: t.CUInt32T) -> t.CUInt32T:
|
def _read32(buf: t.CUInt8T | t.CPtr, off: t.CUInt32T) -> t.CUInt32T:
|
||||||
return t.CUInt32T(buf[off]) | (t.CUInt32T(buf[off + 1]) << 8) | (t.CUInt32T(buf[off + 2]) << 16) | (t.CUInt32T(buf[off + 3]) << 24)
|
return t.CUInt32T(buf[off]) | (t.CUInt32T(buf[off + 1]) << 8) | (t.CUInt32T(buf[off + 2]) << 16) | (t.CUInt32T(buf[off + 3]) << 24)
|
||||||
@@ -1452,6 +1453,11 @@ class fileobj:
|
|||||||
if not self.is_open: return FRESULT.FR_INVALID_OBJECT
|
if not self.is_open: return FRESULT.FR_INVALID_OBJECT
|
||||||
if not (self.flags & FA_READ): return FRESULT.FR_DENIED
|
if not (self.flags & FA_READ): return FRESULT.FR_DENIED
|
||||||
c.Set(t.CUInt32T(br, t.CPtr), 0)
|
c.Set(t.CUInt32T(br, t.CPtr), 0)
|
||||||
|
# [RD-DIAG] 定位 read_len<64(ehdr 读取失败)根因:打印文件状态
|
||||||
|
_rdb: t.CArray[t.CChar, 160]
|
||||||
|
viperlib.snprintf(c.Addr(_rdb), 160, "[fat32] read: size=%lu fc=%lu cc=%lu pos=%lu btr=%lu\n",
|
||||||
|
self.file_size, self.first_cluster, self.current_cluster, self.file_pos, btr)
|
||||||
|
serial.puts(c.Addr(_rdb))
|
||||||
vol: volinfo | t.CPtr = self.vol
|
vol: volinfo | t.CPtr = self.vol
|
||||||
remaining: t.CUInt32T = btr
|
remaining: t.CUInt32T = btr
|
||||||
buf_ptr: t.CUInt8T | t.CPtr = t.CUInt8T(buff, t.CPtr)
|
buf_ptr: t.CUInt8T | t.CPtr = t.CUInt8T(buff, t.CPtr)
|
||||||
@@ -1487,6 +1493,10 @@ class fileobj:
|
|||||||
next_c: t.CUInt32T = vol.cluster_get_next(self.current_cluster)
|
next_c: t.CUInt32T = vol.cluster_get_next(self.current_cluster)
|
||||||
if next_c == 0: break
|
if next_c == 0: break
|
||||||
self.current_cluster = next_c
|
self.current_cluster = next_c
|
||||||
|
# [RD-DIAG] 打印实际读取字节数
|
||||||
|
_rdb2: t.CArray[t.CChar, 96]
|
||||||
|
viperlib.snprintf(c.Addr(_rdb2), 96, "[fat32] read done: br=%lu\n", total_read)
|
||||||
|
serial.puts(c.Addr(_rdb2))
|
||||||
c.Set(t.CUInt32T(br, t.CPtr), total_read)
|
c.Set(t.CUInt32T(br, t.CPtr), total_read)
|
||||||
return FRESULT.FR_OK
|
return FRESULT.FR_OK
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user