这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 64位FLASH建立TrueFFS文件系统的问题,请各位大侠指教!

共3条 1/1 1 跳转至

64位FLASH建立TrueFFS文件系统的问题,请各位大侠指教!

菜鸟
2007-05-24 07:23:48     打赏

我现在在一款和AMD FLASH兼容的FLASH上建立文件系统,底层挪用tornado for PowerPC 的BSP模板 wrPPMC824x的MTD层trueffs驱动程序。现在的问题出在MTD层的写入、读出、擦除等函数执行结果均正确,验证方法是通过直接调用验证的,但结果好像就是注册不上FLASH,环境给出的错误信息有限,所以无从下手,已经棘手1周了,没有进展,请多多指教。问题描述在附件里,你可以自己研究一下,给分析分析。

在FLASH上实现TrueFFS文件系统,采用的FLASH的配置是8M×64bit,采用64位数据线和PowerPC的接口,CPU配置用于文件系统的FLASH的地址位0x7C00_0000~0x7FFF_FFFF,FLASH内部采用4块16位的FLASH组合成64位。
由于FLASH的扇区分配不是均匀的,FLASH的每个块(block(8M×16bit))前面的32K字为分为8个4k字的扇区,最后的32K字分成8个4k字的扇区,中间为254个32k字的扇区,为实现文件系统的扇区一致性,将开始的8个4k字的扇区和最后的8个4k字的扇区不用,只用中间的32k字长的扇区用于文件系统。
文件系统采用的BSP模板是wrPPMC824x,实现方法如下:
chipBlockSize = 0x20000;
baseAdrs = (char *)0x7c020000;
regionSize = 0x3F80000;

rid = f2xRegionCreate (baseAdrs, 8, regionSize, 2, chipBlockSize, 8,
F29_16BIT_TYPE, nvRamRid, (VOIDFUNCPTR)NULL, NONE);

MTD识别函数定义如下:
FLStatus f2xFlashMtdIdentify
(
FLFlash vol
)
{
F2X_GID id = (F2X_GID)vol.socket->serialNo;
int i;

vol.type = 0x227E;
vol.erasableBlockSize = 0x80000/* f2xGroupBlockSize(id) */;
vol.chipSize = 0x800000/* f2xGroupSize(id) */;
vol.noOfChips = 4;
vol.interleaving = 4;
vol.map = f2xFlashMtdMap;
vol.read = f2xFlashMtdRead;
vol.write = f2xFlashMtdWrite;
vol.erase = f2xFlashMtdErase;

printf("f2xFlashMtdIdentify called!\n");

return(flOK);
}
现在问题是按照TFFS文件系统加入的方法,在config.h中加入相应的宏,在sysLib.c中加入MMU对这段存储区的配置,然后在VxWorks中通过直接调用的方式验证MTD层的读、写、擦除函数,均能正确执行。而加入到VxWorks中后,在shell下执行usrTffsConfig、tffsDevFormat、tffsShow函数均出现错误,怀疑MTD识别函数f2xFlashMtdIdentify没有被调用,因为加入的调试信息,是不是什么地方配置不正确。请多多指教。




关键词: 64位     FLASH     建立     TrueFFS     文件         

菜鸟
2007-05-24 19:18:00     打赏
2楼

具体的错误是什么?


菜鸟
2007-05-24 20:38:00     打赏
3楼

进行格式化

tffsShow

tffsDevFormat

以及

usrTffsConfig均出现错误,返回值为0xffffffff(-1)

好像Identify函数没有被调用,或者调用不成功!


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]