创业平台网站,中文个人网站模板下载,上海手机网站,东莞网站建设开发价格【 声明#xff1a;版权所有#xff0c;欢迎转载#xff0c;请勿用于商业用途。 联系信箱#xff1a;feixiaoxing 163.com】 前面我们已经实现了spi norflash的驱动#xff0c;理论上这已经可以实现数据的持久化保存了。为什么还需要一个文件系统呢#xff1f;主要原因还…【 声明版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】 前面我们已经实现了spi norflash的驱动理论上这已经可以实现数据的持久化保存了。为什么还需要一个文件系统呢主要原因还是不方便。如果没有文件系统的话我们访问文件都需要知道确切文件的sector地址和大小这样很麻烦。此外写入、读取文件的时候还要提前规划好文件的大小防止不同的文件之间相互覆盖。而有了fatfs之后使用上就不需要这么小心翼翼了。 另外今天我们还提出了一个中间件的概念。什么叫中间件呢其实就是说这部分代码本身处于系统中间的位置。对上它提供调用接口对下它需要具体硬件的适配。所以只有这样的代码才称之为中间件。 1、除了fatfs之外还有哪些中间件 广义的中间件还是蛮多的。比如说图形界面的lvgl网络协议栈的lwip实时操作系统rtos严格意义上也可以看成是中间件毕竟它下面对着cpu上面提供os接口。 2、fatfs需要适配哪些接口 目前来说fatfs需要适配这么几个接口函数
disk_status
disk_initialize
disk_read
disk_write
disk_ioctl
get_fattime 其中disk_status一般就是判断一下硬件的状态。disk_initialize代表硬件初始化norflash的初始化话就在这里。disk_read代表读取数据。disk_write代表写入数据。disk_ioctl主要就是回复一些硬件属性比如sector多大整个硬件容量多大等等。get_fattime获取系统时间。 这几个接口都是在diskio.c文件里面还是很好辨认的。 3、fatfs支持哪些硬件 理论上fatfs支持任何的硬件只要按照它的要求做好底层适配就好了。不过目前为止用的比较多的还是norflash和tf卡。norflash一般是固化在开发板的往里面存文件不太方便。这个时候如果有一个可插拔的tf卡直接通过fatfs把文件从tf卡copy到norflash那就很方便了。 4、fatfs给上层提供的接口 fatfs对外提供的接口其实和大多数文件系统都差不多一般就是这些接口大家不用全部掌握用的什么学什么就可以了
f_mount
f_mkfs
f_open
f_write
f_read
f_close 5、配置fatfs fatfs自身也是可以配置的比如我们希望对fatfs进行功能裁剪的话直接配置ffconf.h文件就可以了。 6、测试方案 fatfs的测试还是比较容易的。首先对norflash进行fatfs加载如果发现不能加载那么先进行格式化操作格式化完了再加载。接着就是写入数据、读取数据。判断一下写入的数据和读取的数据是不是吻合。最后就是卸载fatfs了。 7、调试 本身作者给出了完整的项目代码和之前norflash相比较其实就多了fatfs三个文件 编译、烧入后我们发现fatfs执行是失败的。进一步调试发现在disk_status状态确认的时候返回值是错误的。单步后发现还是flashid判断的问题重新调整修改一下代码 if(SPI_FLASH_ReadID() 0x684016){status ~STA_NOINIT;}else{status STA_NOINIT;;} 至此我们可以看到在上位机串口打印上一切ok正常了