FAT32中有一个这个FATFS类型,不知道在posix中可有对应的类型

2019-9-12 17:54 [复制链接] 11 126

本帖最后由 aozima 于 2019-9-12 17:56 编辑 % ?- f$ @! h& m$ D- [* e6 @

7 y# G" A0 _: r) v7 [: N请问一下,这个类型,在POSIX里面是否有类似的类型,可以通过,具体类容如下:
# O) C/ U! D9 Z6 `3 I* S$ I
  1. /* File system object structure (FATFS) */
      k- S( t, @" b9 ?+ Y. }# C* z

  2. 9 z7 ~- N) `! T4 f' c9 m1 w' i1 g
  3. typedef struct {: ~4 M! ~; _9 _6 g& J5 R+ b
  4.     BYTE    fs_type;        /* File system type (0:N/A) */$ ^: t2 `# A) T0 W0 s8 \' U% U; V
  5.     BYTE    drv;            /* Physical drive number */
    . F. `& o; l9 i8 Z0 ~' ]
  6.     BYTE    n_fats;            /* Number of FATs (1 or 2) */
    : f% x, \/ _+ G( j: i7 w
  7.     BYTE    wflag;            /* win[] flag (b0:dirty) */8 X9 b- M; ?! k5 F+ x  N* M! h
  8.     BYTE    fsi_flag;        /* FSINFO flags (b7:disabled, b0:dirty) */4 B) ]" U) `6 T2 d( U6 _5 F5 D
  9.     WORD    id;                /* File system mount ID */
    3 O# O5 i7 J' F$ V. v9 A1 \* J* ?0 R
  10.     WORD    n_rootdir;        /* Number of root directory entries (FAT12/16) */) \* v4 e/ F/ f0 r
  11.     WORD    csize;            /* Cluster size [sectors] */6 q; w7 Z0 L4 r' d) u0 y; o
  12. #if _MAX_SS != _MIN_SS
    6 H5 L1 p, g/ R
  13.     WORD    ssize;            /* Sector size (512, 1024, 2048 or 4096) */
    # k5 ~; X# z: [2 L1 N4 O
  14. #endif: g& i& C' N' r' g4 S
  15. #if _USE_LFN != 05 p; ^" k; _/ N- Z
  16.     WCHAR*    lfnbuf;            /* LFN working buffer */9 {" I. @. D) ^& F3 w9 c
  17. #endif
    0 C. H5 }% L4 I% G! Z! A
  18. #if _FS_EXFAT
    + `% z7 @" e  Y) B4 B
  19.     BYTE*    dirbuf;            /* Directory entry block scratchpad buffer */
    - x$ o  o% h: g$ C% ~
  20. #endif
    0 |3 g0 N; x0 F% F* V
  21. #if _FS_REENTRANT
    : z$ D* G6 L3 i% k9 u
  22.     _SYNC_t    sobj;            /* Identifier of sync object *// ]& x: H* H/ I. d3 I1 H
  23. #endif
    ( i: }1 f2 z. V3 h, i4 R0 m% R' X
  24. #if !_FS_READONLY; O& B% L4 N% \# q2 M% y, O$ g
  25.     DWORD    last_clst;        /* Last allocated cluster */
    ) [' _" U' c/ j
  26.     DWORD    free_clst;        /* Number of free clusters */5 L1 K! Z. E* }) w/ X2 Q
  27. #endif' T+ J5 X9 G, q/ x/ a) V/ f
  28. #if _FS_RPATH != 04 k  A& j5 X# t" {4 m2 `' q4 ]
  29.     DWORD    cdir;            /* Current directory start cluster (0:root) */& L9 ~# l3 j  r3 \8 L; d( F
  30. #if _FS_EXFAT  _, z3 @* R& w: t; ~! a$ c1 y7 B
  31.     DWORD    cdc_scl;        /* Containing directory start cluster (invalid when cdir is 0) */( `$ U3 u' p6 a! l9 l$ h& [, F$ y
  32.     DWORD    cdc_size;        /* b31-b8:Size of containing directory, b7-b0: Chain status */4 Z, r8 u: }; Z# l: X
  33.     DWORD    cdc_ofs;        /* Offset in the containing directory (invalid when cdir is 0) */
    , Y! D9 \+ U) @* }/ x
  34. #endif
    1 n( o7 Z! d/ p; J3 c
  35. #endif! i( W2 ]! k% O
  36.     DWORD    n_fatent;        /* Number of FAT entries (number of clusters + 2) */
    . u" u+ F2 [' n/ Y
  37.     DWORD    fsize;            /* Size of an FAT [sectors] */. q( }. u3 L4 ]: R
  38.     DWORD    volbase;        /* Volume base sector */7 _8 f7 f' i2 `
  39.     DWORD    fatbase;        /* FAT base sector */
    # R; _  N5 b; P9 v: {
  40.     DWORD    dirbase;        /* Root directory base sector/cluster */
    9 p4 ^1 c- Q/ C- }2 S* l+ r
  41.     DWORD    database;        /* Data base sector */6 p9 |9 C1 G$ |
  42.     DWORD    winsect;        /* Current sector appearing in the win[] */2 P1 u) U2 r' |- J; f( c
  43.     BYTE    win[_MAX_SS];    /* Disk access window for Directory, FAT (and file data at tiny cfg) */
    4 e* L& j  f  S
  44. } FATFS;
    : I+ Y+ F2 l5 Y% U$ |3 g5 t
复制代码
4 n8 c' i% j( W/ o

4 z2 n# L4 Q4 s# O3 L/ l3 B* w我需要rt_malloc一个这个类型的虚拟磁盘,但是在posix中好像不知道怎么调用?% V* i* J1 C1 ~: I9 U  A$ a+ X/ b
' O) Y9 B' H& N( ^9 N& O; ~9 J
" U& s- N# K- i, d1 B) T7 D
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-9-12 17:56:00 | 显示全部楼层
@bernard
使用道具 举报 回复
发表于 2019-9-12 17:56:31 | 显示全部楼层
@Cheney_Chen
使用道具 举报 回复
发表于 2019-9-12 17:58:33 | 显示全部楼层
请不要AT那么多人。
1 f: _' m  \# N% C
; @* f6 [6 |: Q1 Z. ~: _, f你的需求是什么?$ Q/ J5 [$ C8 b$ ]
你是否需要一个 RAM DISK?" E( S0 R( R8 B" b
或RAMFS就能解决你的问题?
使用道具 举报 回复
发表于 2019-9-12 18:04:49 | 显示全部楼层
aozima 发表于 2019-9-12 17:58
4 {6 U' G4 F4 T7 U' c7 b请不要AT那么多人。
" z6 v1 o& @+ d: E8 ?* n4 H& U2 N' J8 [, \# u1 B; c
你的需求是什么?
* _% x; f0 P' R; E4 s$ v: N/ }. D/ c
是的,需要制作一个磁盘在RAM里面,应该叫逻辑磁盘吧,在单片机里面操,有外置SDRAM
使用道具 举报 回复
发表于 2019-9-12 18:08:44 | 显示全部楼层
aozima 发表于 2019-9-12 17:58
6 {0 }1 S$ S. e+ Q- |# X+ [( `请不要AT那么多人。8 ]7 Z( |$ D  L7 c( b! e8 z2 l2 ]

& e; x; V) \  o1 W2 ?7 _2 v你的需求是什么?
" d' a  y2 _. d5 {! V5 d
哥,咋操作呀!看你知道呀
使用道具 举报 回复
发表于 2019-9-12 23:30:33 | 显示全部楼层
ramdisk和fatfs内部关系不大啊。你弄块memory空间,然后实现一个块设备的驱动,把这块内存当块设备来操作,然后mount成fatfs就可以了。mount前,需要对内存块进行mkfs的
使用道具 举报 回复
发表于 2019-9-12 23:31:09 | 显示全部楼层
ROG 发表于 2019-9-12 17:56
/ g9 C8 y* y) H' n2 b  q  [@bernard
: z+ L4 {! l. e- A
@是无效的,我觉得挺好的
使用道具 举报 回复
发表于 2019-9-12 23:56:27 来自手机 | 显示全部楼层
用来跑代码多好,分派一小块作为文件系统当缓存可以了,全作文件资源浪费
使用道具 举报 回复
发表于 2019-9-14 23:40:21 | 显示全部楼层
bernard 发表于 2019-9-12 23:30
  j# B8 M! W" F  m$ l4 k3 u4 q, Qramdisk和fatfs内部关系不大啊。你弄块memory空间,然后实现一个块设备的驱动,把这块内存当块设备来操作, ...

2 m# Q& J+ @7 y& K5 v1 s楼上的大哥说的RAMFS可行吗?
使用道具 举报 回复
发表于 2019-9-14 23:44:17 | 显示全部楼层
bernard 发表于 2019-9-12 23:31  V2 Q2 p( }$ q, u( c/ @$ ?
@是无效的,我觉得挺好的

  P/ Y! j& V8 T" g. khttps://www.rt-thread.org/qa/for ... mp;page=1#pid465199/ X2 O& d8 ~! m& ]
看这个链接,已经加入RAMFS但还是出错
使用道具 举报 回复
发表于 2019-9-14 23:45:05 | 显示全部楼层
aozima 发表于 2019-9-12 17:58
4 P: g! J+ p# m  p2 d6 H请不要AT那么多人。
' a0 X0 @) U5 X
# M2 [! c; V% A4 V% L2 s5 R7 @你的需求是什么?
. V, i9 ^3 f) z% O# G8 S
https://www.rt-thread.org/qa/for ... mp;page=1#pid465199
  j7 j5 n0 j, ~, @9 R8 `! f看此处链接
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表