|
关于tffs文件系统的一些经验总结-hongwind
关于tffs文件系统的一些总结:
感谢各位朋友的努力,前段时间完成了trueffs文件系统,使用的是sst39vf160,2Mbytes空间,
现在系统运行良好。
使用的是torando2.2 for arm!
下面就一些问题作说明:
首先要做的就是搞清楚自己的flash配置在什么位置,需要修改你的bsp!
这是很多人犯的错误,不修改你那里可以找得到呀。
wrsbcarm7.h
/***********************************************************
*
* -> EXTDBWTH : Memory Bus Width register
*/
/*fixed*/
#define DSR0 (1<<0) /* ROM0, 0 : Disable, 1 : Byte etc.*/
#define DSR1 (2<<2) /* ROM1 */ 2--16bits
#define DSR2 (1<<4) /* ROM2 */
/***************************************************************************
* -> ROMCON1 : ROM Bank1 Control register, Mailbox Interface
*/
#define ROMBasePtr1 (0x210<<10) /*=0x02100000 noncacheable area fixed*/
#define ROMEndPtr1 (((0x200000>>16)+0x210)<<20) /*=0x02300000*/
#define PMC1 0x0 /* 0x0=Normal ROM, 0x1=4Word Page etc.*/
#define rTpa1 (0x0<<2) /* 0x0=5Cycle, 0x1=2Cycle etc.*/
#define rTacc1 (0x6<<4) /* 0x0=Disable, 0x1=2Cycle etc.*/
#define rROMCON1 (ROMEndPtr1+ROMBasePtr1+rTacc1+rTpa1+PMC1)
说明,这里配置在0x02100000,那么文件中使用的flash_address应该是 0x2100000+4000000=6100000
这样访问的地址就放在了noncache区域。
C:\Tornado2.2\target\config\bootffs\sysTffs.c
#define FLASH_BASE_ADRS 0x06100000 /*33M, 2100000+4000000=6100000 no cache */
#define FLASH_SIZE 0x00200000 /*2M bytes*/
还有需要添加的一个定义,修改这个文件。
C:\Tornado2.2\target\h\tffs\stdcomp.h
/* MTD Identify Routines */
FLStatus sstMTDIdentify (FLFlash vol);/*fixed by shine*/
FLStatus amdMTDIdentify (FLFlash vol);
FLStatus i28f008Identify (FLFlash vol);
FLStatus i28f008BajaIdentify (FLFlash vol);
FLStatus i28f016Identify (FLFlash vol);
FLStatus cdsnIdentify (FLFlash vol);
FLStatus doc2Identify (FLFlash vol);
FLStatus cfiscsIdentify (FLFlash vol);
FLStatus cfiAmdIdentify (FLFlash vol);
FLStatus flwAmdMTDIdentify (FLFlash vol);
关于编译时候的错误:会有很多的重定义错误,那就是注意在你的makefile中只要添加
C:\Tornado2.2\target\config\bootffs\Makefile
MACH_EXTRA = sngks32cEnd.o sst39vf160mtd.o
在C:\Tornado2.2\target\config\bootffs\sysTffs.c中有如下定义。
#ifndef DOC
#include "tffs/tffsConfig.c"
#endif /* DOC */
如果你的硬件配置没有问题的话,编译通过后启动应该有这样的信息,
Debug: entering SST MTD identification routine.
unlockAddr1 = 0x610aaaa, unlockAddr1 = 0x6105554
flashPtr = 0x6100000
offSet = 0x6100002
vol.type = 0x2782 /这里错误通常是由于硬件问题,检查你的器件引脚
Debug: begin operation function.
Debug: Identified sst39vf160 media. 说明找到了设备。
下面可以执行格式化配置操作。
然后-〉devs可以可以看到你的设备。
执行copy命令的时候注意你的格式
copy "****","*****"
否则容易出错呀。 |
|