300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 代码结构分层

代码结构分层

时间:2021-09-01 02:42:13

相关推荐

代码结构分层

文章目录

1 代码结构分层1.1 定义基本数据类型和错误码1.2 定义设备类结构和定义操作接口结构1.3 添加驱动实例

1 代码结构分层

我们需要将代码结构进行分层,有如下好处:

有组织的安排代码编写的文件。分层结构能简化代码开发。

主要分为如下三层:

三层结构的具体功能:

在此之前我们需要了解下块设备的原理:

代码组织结构如下图:

1.1 定义基本数据类型和错误码

在xtypes.h文件中实现:

/*** 本源码配套的课程为 - 从0到1动手写FAT32文件系统。每个例程对应一个课时,尽可能注释。* 作者:李述铜* 课程网址:* 版权声明:本源码非开源,二次开发,或其它商用前请联系作者。*/#ifndef XTYPES_H#define XTYPES_H#include <stdint.h>typedef uint8_t u8_t;typedef uint16_t u16_t;typedef uint32_t u32_t;typedef uint64_t u64_t;typedef enum _xfat_err_t {FS_ERR_OK = 0,}xfat_err_t;#endif

1.2 定义设备类结构和定义操作接口结构

主要在xdisk.h中实现:

/*** 本源码配套的课程为 - 从0到1动手写FAT32文件系统。每个例程对应一个课时,尽可能注释。* 作者:李述铜* 课程网址:* 版权声明:本源码非开源,二次开发,或其它商用前请联系作者。*/#ifndef XDISK_H#defineXDISK_H#include "xtypes.h"// 相关前置声明struct _xdisk_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;/*** 存储设备类型*/typedef struct _xdisk_t {u32_t sector_size; // 块大小u32_t total_sector; // 总的块数量xdisk_driver_t * driver; // 驱动接口}xdisk_t;#endif

1.3 添加驱动实例

主要在driver.c中实现:

/*** 本源码配套的课程为 - 从0到1动手写FAT32文件系统。每个例程对应一个课时,尽可能注释。* 作者:李述铜* 课程网址:* 版权声明:本源码非开源,二次开发,或其它商用前请联系作者。*/#include "xdisk.h"#include "xfat.h"/*** 初始化磁盘设备* @param disk 初始化的设备* @param name 设备的名称* @return*/static xfat_err_t xdisk_hw_open(xdisk_t *disk, void * init_data) {}/*** 关闭存储设备* @param disk* @return*/static xfat_err_t xdisk_hw_close(xdisk_t * disk) {}/*** 从设备中读取指定扇区数量的数据* @param disk 读取的磁盘* @param buffer 读取数据存储的缓冲区* @param start_sector 读取的起始扇区* @param count 读取的扇区数量* @return*/static xfat_err_t xdisk_hw_read_sector(xdisk_t *disk, u8_t *buffer, u32_t start_sector, u32_t count) {}/*** 向设备中写指定的扇区数量的数据* @param disk 写入的存储设备* @param buffer 数据源缓冲区* @param start_sector 写入的起始扇区* @param count 写入的扇区数* @return*/static xfat_err_t xdisk_hw_write_sector(xdisk_t *disk, u8_t *buffer, u32_t start_sector, u32_t count) {}/*** 虚拟磁盘驱动结构*/xdisk_driver_t vdisk_driver = {.open = xdisk_hw_open,.close = xdisk_hw_close,.read_sector = xdisk_hw_read_sector,.write_sector = xdisk_hw_write_sector,};

参考资料:

自己动手从0到1学写FAT32文件系统

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。