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

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

本帖最后由 aozima 于 2019-9-12 17:56 编辑 + \6 j& l" S8 w+ Y' Y
3 W$ ~3 h  }7 B8 _4 d
请问一下,这个类型,在POSIX里面是否有类似的类型,可以通过,具体类容如下:' Q. b, H# }# P" c1 c# c
  1. /* File system object structure (FATFS) */" m# h0 a# C5 g( Y  h+ H2 c7 U1 {* ]

  2. : D0 @9 O% a* |* O8 D* V* }
  3. typedef struct {8 {' `+ z' b+ q$ u" t5 k2 i
  4.     BYTE    fs_type;        /* File system type (0:N/A) */9 q7 d# U1 T4 ?2 T* f  t) C
  5.     BYTE    drv;            /* Physical drive number */1 V. G. `* d0 w7 s1 M% f; x
  6.     BYTE    n_fats;            /* Number of FATs (1 or 2) */' A! ^! i/ S3 }5 y1 G
  7.     BYTE    wflag;            /* win[] flag (b0:dirty) */
    4 N. ~' ~3 _2 a2 n' y
  8.     BYTE    fsi_flag;        /* FSINFO flags (b7:disabled, b0:dirty) */
    + F, T5 a5 [4 `+ i& W  p
  9.     WORD    id;                /* File system mount ID */
    9 f+ t; r3 J8 n$ m% w
  10.     WORD    n_rootdir;        /* Number of root directory entries (FAT12/16) */
    : }( a1 q# U: {/ ]! o
  11.     WORD    csize;            /* Cluster size [sectors] */& A& x" c* _" j; W
  12. #if _MAX_SS != _MIN_SS
    9 q3 i! {" @4 N5 A
  13.     WORD    ssize;            /* Sector size (512, 1024, 2048 or 4096) */
    ) b9 x! `; p$ [& D. L. H
  14. #endif9 A! s* `$ p6 F0 c- C( m
  15. #if _USE_LFN != 0
    ' W5 h- n7 t7 S- N- ~+ R
  16.     WCHAR*    lfnbuf;            /* LFN working buffer */* L* m9 |  w$ n1 S  Y
  17. #endif
    7 J9 d- ]8 Q- ?* Y7 }
  18. #if _FS_EXFAT* s1 v( r2 Z+ Y: m% ~
  19.     BYTE*    dirbuf;            /* Directory entry block scratchpad buffer */) e0 g6 t* l' C8 \% Y
  20. #endif
      S, R# f3 x" v' j
  21. #if _FS_REENTRANT
    ; X$ g: k8 [  t5 h) e1 D7 V1 |
  22.     _SYNC_t    sobj;            /* Identifier of sync object */
    $ l7 A+ ^' b: _- E' U( E$ R6 o
  23. #endif
    % C+ A* q# {* v+ E" J+ J: d2 C
  24. #if !_FS_READONLY( k/ {1 j( _) Q+ {( |$ K4 P
  25.     DWORD    last_clst;        /* Last allocated cluster */
    1 n. e# a2 L/ @. x* P
  26.     DWORD    free_clst;        /* Number of free clusters */
    . l9 J- q) W5 o, h9 y
  27. #endif9 }6 H& n! f& S$ s
  28. #if _FS_RPATH != 0
    ( ^; x- |% g1 n4 P
  29.     DWORD    cdir;            /* Current directory start cluster (0:root) */
    5 q5 V) W- s) q5 }6 u
  30. #if _FS_EXFAT! n5 w  E9 P8 n+ K9 m* q; ?
  31.     DWORD    cdc_scl;        /* Containing directory start cluster (invalid when cdir is 0) */5 M4 G8 o+ ^5 m1 b* F6 G# a
  32.     DWORD    cdc_size;        /* b31-b8:Size of containing directory, b7-b0: Chain status */: r1 _. g2 W) l1 m9 ^
  33.     DWORD    cdc_ofs;        /* Offset in the containing directory (invalid when cdir is 0) */
    0 ]8 `' b" z) b3 c8 o7 o
  34. #endif9 @, b5 }  F1 r
  35. #endif
    " w( m1 }9 R6 ]4 a. B, ^8 o0 N8 ~. |
  36.     DWORD    n_fatent;        /* Number of FAT entries (number of clusters + 2) */
    % w: G% e7 U4 M" u7 u9 T( o7 h
  37.     DWORD    fsize;            /* Size of an FAT [sectors] */
    1 {+ ~* o1 T& }. V% q
  38.     DWORD    volbase;        /* Volume base sector */4 G. L, F: z' |
  39.     DWORD    fatbase;        /* FAT base sector */+ l9 T0 h  N5 \: j; K8 U
  40.     DWORD    dirbase;        /* Root directory base sector/cluster */
    " C$ e( P4 M8 \0 ^
  41.     DWORD    database;        /* Data base sector */! o, H. a" Q4 c  ?3 k; Y
  42.     DWORD    winsect;        /* Current sector appearing in the win[] */
    + O/ c" Z8 Q% J  A, |; c
  43.     BYTE    win[_MAX_SS];    /* Disk access window for Directory, FAT (and file data at tiny cfg) */. `1 m+ {' x% P% D# Q5 ?4 O6 _
  44. } FATFS;/ u: v* G: |& r1 a
复制代码
6 |  A" v* d. N. n7 G6 S, V

% c1 b; h. J( n我需要rt_malloc一个这个类型的虚拟磁盘,但是在posix中好像不知道怎么调用?
; s( x7 Z3 B$ {# x8 Q1 K/ j9 J3 p% X  O1 A

! z9 M* t( e' w, f" E) [4 w
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-9-12 17:56:00 | 显示全部楼层
@bernard
使用道具 举报 回复
发表于 2019-9-12 17:56:31 | 显示全部楼层
@Cheney_Chen
使用道具 举报 回复
发表于 2019-9-12 17:58:33 | 显示全部楼层
请不要AT那么多人。
3 S% Z. J3 ~) w$ U- w
9 q4 M+ A+ ~, v* |1 e+ s) F你的需求是什么?
5 ^3 c/ Y# O1 E2 T5 O# I- ^6 W. q你是否需要一个 RAM DISK?
4 t4 T/ B/ L- r6 m或RAMFS就能解决你的问题?
使用道具 举报 回复
发表于 2019-9-12 18:04:49 | 显示全部楼层
aozima 发表于 2019-9-12 17:58, _+ q4 I( u; u/ T, G/ q6 q
请不要AT那么多人。
& z* L* F: R! v: Q/ E( d+ I* k3 D! M( X# G. o
你的需求是什么?

: K! q" E4 ^) H7 \. f是的,需要制作一个磁盘在RAM里面,应该叫逻辑磁盘吧,在单片机里面操,有外置SDRAM
使用道具 举报 回复
发表于 2019-9-12 18:08:44 | 显示全部楼层
aozima 发表于 2019-9-12 17:58
1 ?. G: A+ L5 v2 a0 X6 d% w请不要AT那么多人。
1 H- S8 S1 c9 `; Z. E& Q' q
1 p2 b* n: N8 U. T. X; J! B你的需求是什么?

& x) C+ J1 m) m( F哥,咋操作呀!看你知道呀
使用道具 举报 回复
发表于 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
! X' b, G5 V% ^% U$ W: l@bernard

- |, y1 j$ q! n4 @@是无效的,我觉得挺好的
使用道具 举报 回复
发表于 2019-9-12 23:56:27 来自手机 | 显示全部楼层
用来跑代码多好,分派一小块作为文件系统当缓存可以了,全作文件资源浪费
使用道具 举报 回复
发表于 2019-9-14 23:40:21 | 显示全部楼层
bernard 发表于 2019-9-12 23:30" D% U; g! c9 B3 U
ramdisk和fatfs内部关系不大啊。你弄块memory空间,然后实现一个块设备的驱动,把这块内存当块设备来操作, ...

( ~8 O" Z- j4 r/ B# T楼上的大哥说的RAMFS可行吗?
使用道具 举报 回复
发表于 2019-9-14 23:44:17 | 显示全部楼层
bernard 发表于 2019-9-12 23:31
$ F+ J' l/ z9 ?% Z- h@是无效的,我觉得挺好的

* @3 |8 t& l# w8 b9 U! Uhttps://www.rt-thread.org/qa/for ... mp;page=1#pid465199
( s5 s" }6 V- [/ u. u看这个链接,已经加入RAMFS但还是出错
使用道具 举报 回复
发表于 2019-9-14 23:45:05 | 显示全部楼层
aozima 发表于 2019-9-12 17:58
2 D$ E' c  o# h! ]$ r8 B请不要AT那么多人。8 H+ [: |9 a7 \

- }! b$ o& d7 t7 Z) P# K* L( r你的需求是什么?

: z$ c; e- P: M8 _. \9 Z/ C2 r4 qhttps://www.rt-thread.org/qa/for ... mp;page=1#pid465199  Y2 U# t: l$ Z% t3 \# d
看此处链接
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

ROG

  1. 41 主题
  2. 629 帖子
  3. 629 积分

Ta的主页 发消息

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

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

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

Powered by RT-Thread

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