前序
把FAT文件系统搞明白、把fatfs源代码分析清楚,是为了什么?只是爱好?只是想知道别人设计思想?这样的目的当然也是可以的,通过这些学习,学习能力和分析问题的能力肯定是有提升的。但是,如果能把学习的东西转化成成果,岂不让自己更加兴奋?因此,移植就是成果转化的过程,动手的过程中,会发现更多有意义的故事。
什么是移植?需要移植什么?
对于一个特定的平台来说,移植就是把能用的保留,差异的部分修改。前面fatfs的一些函数分析过程中我们明白了逻辑和架构的代码都已经实现了,只是与磁盘相关的物理硬件操作函数没有实现,所以我们移植就是要把对应的硬件函数实现。
需要实现的函数
在diskio.h里面中,已经给出了需要移植函数的声明,把下面的函数移植成功就行了。
核心思想
移植diskio.h声明的函数,下图就是一个结构图,ff.c是相同的c代码跟任何硬件都没关系,diskio.c是与硬件打交道的代码,所以diskio.h里面的函数必须要实现。