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

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

本帖最后由 aozima 于 2019-9-12 17:56 编辑 . [+ W6 g5 |2 K* ]
2 m' B3 @6 B" R
请问一下,这个类型,在POSIX里面是否有类似的类型,可以通过,具体类容如下:) E. M, s: O0 a) {! Q+ M
  1. /* File system object structure (FATFS) */
    * P7 `" ?5 G2 H: W- e6 V0 D9 h
  2. 8 D4 C/ S/ f! n! K9 O! p- ^) i' W
  3. typedef struct {
    " `; K% D7 W& Y& A
  4.     BYTE    fs_type;        /* File system type (0:N/A) */
    7 k  m; Z# W  H& O5 n, K
  5.     BYTE    drv;            /* Physical drive number */
    " _2 ]. Z  k0 O
  6.     BYTE    n_fats;            /* Number of FATs (1 or 2) */4 f" ?2 L' e8 g$ }  y! F
  7.     BYTE    wflag;            /* win[] flag (b0:dirty) */9 o! Z1 H5 _$ e" ]
  8.     BYTE    fsi_flag;        /* FSINFO flags (b7:disabled, b0:dirty) */
    - P$ r" ^9 ^$ M: ~8 }, \
  9.     WORD    id;                /* File system mount ID */
    ( H2 r5 m" w4 h; P, {% f2 T% A# v
  10.     WORD    n_rootdir;        /* Number of root directory entries (FAT12/16) */5 W2 W/ j# `5 i; D6 Q/ |; G0 Y
  11.     WORD    csize;            /* Cluster size [sectors] */( v3 P0 n7 N. ?9 w% H$ Q0 H
  12. #if _MAX_SS != _MIN_SS
    " U. Q5 {* k& w/ B
  13.     WORD    ssize;            /* Sector size (512, 1024, 2048 or 4096) */
    ! t, @; i4 n0 e( Z" b
  14. #endif
    ) A- m( G/ j4 R) ^
  15. #if _USE_LFN != 0
    ! Y% F$ B% m, a; a* p$ }* G
  16.     WCHAR*    lfnbuf;            /* LFN working buffer */0 d* T" Q2 d) _/ G1 n
  17. #endif
    " A$ o, \9 [- f" [& Z
  18. #if _FS_EXFAT$ A) }2 P6 [3 e. Z
  19.     BYTE*    dirbuf;            /* Directory entry block scratchpad buffer */: ]5 V: U& R9 S) f( C, L; b
  20. #endif
    % Q) V( Z- u! [" A9 Q
  21. #if _FS_REENTRANT
      C, M; _4 M% Y4 v2 f8 _* o2 W; K
  22.     _SYNC_t    sobj;            /* Identifier of sync object */7 u. Q9 n9 \$ W6 k/ P# V! A/ k
  23. #endif
    + T; h8 C8 g* A: k
  24. #if !_FS_READONLY4 e" F7 F# ~+ A( v0 g0 C
  25.     DWORD    last_clst;        /* Last allocated cluster */4 \5 ?1 G4 T. u
  26.     DWORD    free_clst;        /* Number of free clusters */# W2 `3 o2 S+ Y6 ]
  27. #endif
    9 {5 j3 F$ ^3 F( b$ f- a( g
  28. #if _FS_RPATH != 08 V' x# W$ e6 G" p' v
  29.     DWORD    cdir;            /* Current directory start cluster (0:root) */
    $ e* s$ ?& b% D/ p5 i2 X6 \4 Q
  30. #if _FS_EXFAT2 P( C% A2 G2 ]# M* Z
  31.     DWORD    cdc_scl;        /* Containing directory start cluster (invalid when cdir is 0) */" K) B2 A" C# v$ ~# l
  32.     DWORD    cdc_size;        /* b31-b8:Size of containing directory, b7-b0: Chain status */
    * B7 F5 F. t$ Y/ P+ p  m6 ]
  33.     DWORD    cdc_ofs;        /* Offset in the containing directory (invalid when cdir is 0) */3 l+ |  j  @, R3 W) H0 ?6 i8 N" i
  34. #endif
    ( {2 {- T0 r5 T3 s3 D
  35. #endif
    . w! L) Z1 C. y% a2 \4 p- y
  36.     DWORD    n_fatent;        /* Number of FAT entries (number of clusters + 2) */) {8 m% M  s- v5 X0 N. G+ o
  37.     DWORD    fsize;            /* Size of an FAT [sectors] */
    + I( h! Z# L* T# q% c
  38.     DWORD    volbase;        /* Volume base sector */7 g- O8 |) w& t0 s0 j! ?8 v
  39.     DWORD    fatbase;        /* FAT base sector */, R2 c( G1 N- u7 B. ]% W
  40.     DWORD    dirbase;        /* Root directory base sector/cluster */
    3 r0 Z! O# t0 G( l9 t8 |
  41.     DWORD    database;        /* Data base sector */
    5 v; Q; J" Q$ z! x; T- P7 Q$ `' y
  42.     DWORD    winsect;        /* Current sector appearing in the win[] */
    + k. q, a  k9 m4 p1 O6 a& q6 g
  43.     BYTE    win[_MAX_SS];    /* Disk access window for Directory, FAT (and file data at tiny cfg) */
    ! w0 p0 ]  C! a- b" k
  44. } FATFS;
    - _* A  f  U% B, w
复制代码

9 g/ A; {2 @  H0 n1 U7 I
0 X( K5 m0 W4 |; S1 k; W我需要rt_malloc一个这个类型的虚拟磁盘,但是在posix中好像不知道怎么调用?
* x; f. @0 r. k5 l3 H+ E2 ?+ m5 N" m$ d  ?% e- G5 W

  h# a$ ~# ?/ Q5 \
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-9-12 17:56:00 | 显示全部楼层
@bernard
使用道具 举报 回复
发表于 2019-9-12 17:56:31 | 显示全部楼层
@Cheney_Chen
使用道具 举报 回复
发表于 2019-9-12 17:58:33 | 显示全部楼层
请不要AT那么多人。
* ?, B* |) E. x: A1 Y3 J1 ~! `; o5 m  N
5 X. e4 f2 T. \0 _; i你的需求是什么?
' [* |' z7 J% D4 V0 C! I你是否需要一个 RAM DISK?
; m) T: D9 M, V- X. n/ y或RAMFS就能解决你的问题?
使用道具 举报 回复
发表于 2019-9-12 18:04:49 | 显示全部楼层
aozima 发表于 2019-9-12 17:58  C: |0 Y1 W0 X4 i2 Y2 x
请不要AT那么多人。
" P# A& t  }( ]9 d3 ]% p8 Z& `5 p3 S% k  {
你的需求是什么?

+ z0 X5 p3 G) G8 G. a+ U是的,需要制作一个磁盘在RAM里面,应该叫逻辑磁盘吧,在单片机里面操,有外置SDRAM
使用道具 举报 回复
发表于 2019-9-12 18:08:44 | 显示全部楼层
aozima 发表于 2019-9-12 17:58
; n* R9 K# v4 }3 k9 N4 }请不要AT那么多人。  b/ k$ V" k  Z
7 v, N& G/ B7 L" a* v! U: Q& {
你的需求是什么?

& f! ?$ x5 W: j# D$ s8 X% 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
% c4 l4 ?+ G) r+ |0 x5 D@bernard

3 h3 Q! B( P0 e5 l' M: R( @. A@是无效的,我觉得挺好的
使用道具 举报 回复
发表于 2019-9-12 23:56:27 来自手机 | 显示全部楼层
用来跑代码多好,分派一小块作为文件系统当缓存可以了,全作文件资源浪费
使用道具 举报 回复
发表于 2019-9-14 23:40:21 | 显示全部楼层
bernard 发表于 2019-9-12 23:30
1 c" `3 Q( [" |3 @, V2 a% T0 {ramdisk和fatfs内部关系不大啊。你弄块memory空间,然后实现一个块设备的驱动,把这块内存当块设备来操作, ...

7 z  @- n3 ?9 I. [楼上的大哥说的RAMFS可行吗?
使用道具 举报 回复
发表于 2019-9-14 23:44:17 | 显示全部楼层
bernard 发表于 2019-9-12 23:31
# Q' x" X& t7 Z1 h6 I  x@是无效的,我觉得挺好的
; }- a) D) g; O, a$ \
https://www.rt-thread.org/qa/for ... mp;page=1#pid465199
3 p2 p, o2 G; f看这个链接,已经加入RAMFS但还是出错
使用道具 举报 回复
发表于 2019-9-14 23:45:05 | 显示全部楼层
aozima 发表于 2019-9-12 17:585 w& z0 }% V, k' `% Y, A
请不要AT那么多人。! S. i- U* Y2 t. P# e* Z
, y7 [& B7 z7 ?' \" G
你的需求是什么?
' n0 W, @' e: N- B- O$ l6 O
https://www.rt-thread.org/qa/for ... mp;page=1#pid465199
% c6 R: f: j! `  V! o+ I9 o( {看此处链接
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

Powered by RT-Thread

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