DSP

在dsp DM642上移植YAFFS2之二-----成功

2019-07-13 12:47发布

    通过一个来月的努力,终于在DSP上跑起了yaffs2文件系统,     其步骤如下:  1,拷贝一定要用到的文件到CCS项目目录夹,建产一个main函数的文件,上面写上自己要做的一些文件操作,或者直接用dircet里面的测试程序。  2,然后编译,改错加拷其它需要的文件,由于CCS是不管你的有没有用到该函数,都必需在编译时候有文件实体,所以所有相关文件得全部加进来,才能通过。另外估计要对linux 上的特有的数据结构进行重新自己定义。  3,编译通过后,选其中一个设备进行配置,修改配置文件,在main函数里面只对选中的device进行操作,在这里我先选用的是ram2k的设备,即用ram来仿真nandflash,这里一定要注意修DSP,CCS里面的配置,使得仿nandflash需要的空间与平台的ram相适,否则会出错,出错很难查。 4,上步,通过一些简单的修改就可以跑通了。 5,设好dsp对nand的控制, 如读写擦除等,由于我的nandflash挂在FPGA上,而FPGA接DSP的EIMIF,所以要设计好转接口, 6,接口做好,就新建一个文件来做yaffs的底层interface函数,如         int yflash_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo);           int yflash_EraseBlockInNAND(yaffs_Device *dev, int blockNumber)           int yflash_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo, yaffs_BlockState *state, int *sequenceNumber)         int yflash_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, yaffs_ExtendedTags *tags)            static int  CheckInit(yaffs_Device *dev)           int yflash_ReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunkInNAND, __u8 *data, yaffs_ExtendedTags *tags)
         然后把这些新写的函数在setup里面配置到device里面去。       7,读写文件,文件夹正常实现,成功     8,后继问题还有两个:一,是ECC功能的添加,                                   二,坏块的管理       因为在yaffs2的2Kpage里面好象没这个功能,是linux上的DMT接管了,所以还得加上这些管理的函数与存储才算正真完成。