1. 主页
  2. 自己动手从0到1学写FAT32文件系统
  3. 第1章 驱动框架
  4. 代码结构分层

代码结构分层

内容纲要

主要内容

代码分层

分层的主要目换是将代码组织成若干层,使得结构清晰,降低设计的复杂性。本课时中将代码分成三层。如下图所示:

实际上,FAT层可以继续进行细分为两层:FAT操作层和File接口层。视频中有简单提及。

块设备

在课程中简单提及了块设备的组织结构,如下图所示。无论是SD卡还是磁盘,基本上都可以归结这种结构。

重点难点

不必过于纠结分层具体在整个工程中怎样去体现。只需要在设计时,注意按照分层的思想去设计和调用函数。

存储设备描述结构

课程中使用了xdisk_t来描述一个特定的存储结构,其中设备特性(xdisk_t)与设备操作接口(xdisk_driver_t)分离。

xdisk_t结构

typedef struct _xdisk_t {
    u32_t sector_size;              // 块大小
    u32_t total_sector;             // 总的块数量
    xdisk_driver_t * driver;        // 驱动接口
}xdisk_t;

xdisk_driver_t结构

typedef struct _xdisk_driver_t {
    xfat_err_t (*open) (struct _xdisk_t * disk, void * init_data);
    xfat_err_t (*close) (struct _xdisk_t * disk);
    xfat_err_t (*read_sector) (struct _xdisk_t *disk, u8_t *buffer, u32_t start_sector, u32_t count);
    xfat_err_t (*write_sector) (struct _xdisk_t *disk, u8_t *buffer, u32_t start_sector, u32_t count);
}xdisk_driver_t;

注意事项

有些存储设备虽然也按课时中所讲由一个一个块组成,但是其结构要复杂很多。比如Nand Flash,每个块由存储数据的块和存储坏块标记及错误检测及校验的块组织。这种结构就不能采用FAT32系统。

所以,本课程所讲内容,并不适用于这些存储设备。

常见问题

这篇文章对您有用吗?

我们要如何帮助您?

发表评论

电子邮件地址不会被公开。 必填项已用*标注