使用BCNG2440开发板,该板配置了AM29LV160DB的FLASH。
目标:实现vxworks下的tffs文件系统。
1、使用最新的bsp,构建一个新的工程,然后在vxworks配置选项中增加tffs的支持,以及tffs show的支持,重新编译内核,发现bsp目录下自动拷贝了一个新的systffs.c文件,然后报告编译错误,
E:Tornado2.2targetconfigbcng2440sysTffs.c:116:69: #error "sysTffs : Verify system mac
ros and function before first use"
不知道error宏是干什么用的,只好把这句话删掉。
哦,让第一次编译一定出现出错,提醒你进行各种宏定义,
先不管这么多的东西,把修改地址
#define FLASH_BASE_ADRS 0x00000000
重新编译,能够成功,下载,结果如下:
-> tffsShow
0: **** communication failed with error -1 ****
value = 48 = 0x30 = '0'
-> tffsShowAll
TFFS Version 2.2
0: **** communication failed with error -1 ****
value = 48 = 0x30 = '0'
把原始代码下的wamdmtd.c程序拷贝到BSP目录,在工程中添加改文件,重新编译内核,显示找不到.h文件,后来修改:
#include "tffs/flflash.h"
#include "tffs/backgrnd.h"
才能编译通过,同时修改代码,增加对我们的flash的支持,
#define Am29LV160_FLASH 0x0149 /*added by xiyong*/
vol.type == Am29LV160_FLASH )
重新编译,下载,错误一样,在
进一步跟踪,发现根本没有进入flwAmdMTDIdentify函数:
更换wamdmtd.c文件名为ximtd.c
修改flwAmdMTDIdentify为xyflwAmdMTDIdentify,并且修改
MTDidentifyRoutine mtdTable[] =
#ifdef INCLUDE_MTD_WAMD
xyflwAmdMTDIdentify,
#endif
即使是这样,也没有调用xyflwAmdMTDIdentify
如何才能让tffs去调用自己的flash读写函数呢,是不是默认中已经有了一个库,去调用默认的库了。
后来,发现在vxworks内核配置中不能配置支持WAMD,并且在systffs中不能定义支持WAMD,否则会死机。
进一步证实,如果名字不改变为xyflwAmdMTDIdentify,也会死机,看来ximtd.c中的所有的接口函数都需要重新命名。