这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 尝试使用TrueFFS[原创]

共5条 1/1 1 跳转至

尝试使用TrueFFS[原创]

菜鸟
2003-03-18 03:15:45     打赏
以下是我前一段时间尝试使用TrueFFS的记录. 说是尝试, 其实基本上是自己弄着玩的. 在项目正式开始之前找了块现成的板子, 试着用一用文件系统. Flash容量只有 512KB, 目的主要是熟悉一下这方面的东西, 希望也能对别人有点帮助. 要想了解得 更多, 还是得看seasoblue的大作:-) 一. TrueFFS试验说明: 调试工具为Tornado 2.0, 目标板的CPU为MPC860,用于创建 Flash Disk的Flash Memory芯片为一片ST M29W040B,起始地址0x02880000,容量为 4M-bits,数据总线宽度8-bits。 以下所称的文件sysTffs.c是在这个文件的基础上修改得来: [Tornado]\target\src\drv\tffs\sockets\ads860-sysTffs.c 以下所称的文件stmtd.c是在这个文件的基础上修改得来: [Tornado]\target\src\drv\tffs\amdmtd.c 共试验了两种方法,即使用VxWorks自带MTD(方法A),和使用自编MTD(方法B)。 TrueFFS driver由三个软件层次构成:Translation Layer、MTD Layer和Socket Layer。 VxWorks自带的MTD Layer Driver所支持的Flash Memory芯片中,与ST M29W040B最 相似的为AMD AM29F040,两者的管脚和编程方式完全兼容,只有Manufacturer ID 和Device ID不同。故可使用的方法有两种: 方法A: (先备份[Tornado]\target\lib\libPPC860gnuvx.a) 1. 从[Tornado]\target\lib\libPPC860gnuvx.a里提取amdmtd.o: arppc xv libPPC860gnuvx.a amdmtd.o 2. 从[Tornado]\target\lib\libPPC860gnuvx.a里删除amdmtd.o: arppc dv libPPC860gnuvx.a amdmtd.o 3. 使用UltraEdit软件编辑刚才提取出来的amdmtd.o: Find: 01 A4 Replace By: 20 E3 其中01是AMD AM29F040的Manufacturer ID;A4是AMD AM29F040的Device ID; 其中20是ST M29W040B的Manufacturer ID;E3是ST M29W040B的Device ID; 4. 将修改过的amdmtd.o加入到[Tornado]\target\lib\libPPC860gnuvx.a中: arppc ruv libPPC860gnuvx.a amdmtd.o 或将修改过的amdmtd.o以EXTRA_MODULE的方式与VxWorks Image链接起来。 5. 将sysTffs.c加入到Project中,Build and Test。 方法B: (先备份[Tornado]\target\src\drv\tffs\tffsConfig.c) 1. 在[Tornado]\target\src\drv\tffs\tffsConfig.c的数组mtdTable[]中加入一项: #ifdef INCLUDE_MTD_M29W040B stMTDIdentify, #endif /* INCLUDE_MTD_M29W040B */ 并增加函数声明: extern FLStatus stMTDIdentify (FLFlash vol); 2. 将sysTffs.c和stmtd.c加入到Project中,Build and Test。 二. BSP文件修改说明: 1. config.h 定义下列宏: #define INCLUDE_TFFS #define INCLUDE_DOSFS #define INCLUDE_SHOW_ROUTINES (optional) 2. ads860.h 定义下列宏: #define FLASH_ADRS_1 0x02880000 #define FLASH_SIZE_1 0x00080000 其中FLASH_ADRS_1、FLASH_SIZE_1所指定的地址段为Flash Disk。 3. sysLib.c 在结构数组sysPhysMemDesc[]中加入 FLASH_ADRS_1、FLASH_SIZE_1所指定的地址段。 设置MMU属性时,用于Flash Disk的地址段设为VM_STATE_WRITABLE和VM_STATE_CACHEABLE_NOT。 4. sysTffs.c #define INCLUDE_MTD_AMD /* 使用方法A时 */ #define INCLUDE_MTD_M29W040B /* 使用方法B时 */ #define INCLUDE_TL_FTL /* Translation Layer:FTL,因为使用的是NOR-Flash芯片 */ #define INCLUDE_SOCKET_SIMM /* Socket Layer */ #undef INCLUDE_TFFS_BOOT_IMAGE /* 整片Flash Memory都用于Flash Disk,故不需要 */ (undef其它关于Translation Layer、MTD Layer和Socket Layer的宏定义) #define FLASH_BASE_ADRS FLASH_ADRS_1 /* ads860.h */ #define FLASH_SIZE FLASH_SIZE_1 /* ads860.h */ 删除只和ads860板有关的代码。 删除由INCLUDE_SOCKET_PCMCIA引用的代码。因为目标板上没有PC Flash Cards,故不需要这部份Socket Layer代码。 将sysTffsFormat()函数中对params{}结构的初始化改为: tffsDevFormatParams params = { {0x0L, 99, 1, 0x10000L, NULL, {0,0,0,0}, NULL, 2, 0, NULL}, FTL_FORMAT_IF_NEEDED }; 这是因为整片Flash Memory都用于Flash Disk,故不需要设置供Boot Image使用的offset。 5. stmtd.c 这是在使用方法B时为ST M29W040B编写的MTD Layer Driver,其前身是amdmtd.c。由于AMD AM29F040和ST M29W040B完全兼容,故算法不需任何修改,改动主要是简化了Flash Memory芯片的识别流程(stMTDIdentify()函数),因为目标板上用作Flash Disk的只有这一种芯片,因此可删掉繁琐的用于芯片识别的代码。 三. 试验操作: 1. Format: -> sysTffsFormat 或: -> tffsDevFormat 0,0 2. Create Device and Mount dosFs: -> usrTffsConfig 0,0,"/RFA/" 或: 自行编程,调用函数tffsDevCreate()和dosFsDevInit()来实现。 (usrTffsConfig()函数的源代码在[Tornado]\target\src\config\usrTffs.c中) (RFA stands for "resident flash array") 3. 现在可以开始试验VxWorks I/O System Interface Library中各函数的功能。 (creat, open, close, remove, rename, read, write, chdir, getwd, lseek, etc.) 四. 问题与解决: 在Link由本BSP创建的Project时,会得到如下的错误信息:对函数mountFTL()和formatFTL()的无效引用。这两个函数所在的module是ftllite.o,但不知何故ftllite.o未包含在libPPC860gnuvx.a中。该module是Translation Layer Driver的一部份。由于使用的是NOR-Flash芯片,故需用到FTL库。怀疑是Tornado的bug。 解决方法是从[Tornado]\target\lib\libPPCEC603gnuvx.a里提取ftllite.o: arppc xv libPPCEC603gnuvx.a ftllite.o 再将ftllite.o加入到[Tornado]\target\lib\libPPC860gnuvx.a(先备份之)中: arppc ruv libPPC860gnuvx.a ftllite.o 或将ftllite.o以EXTRA_MODULE的方式与VxWorks Image链接起来。 进行上述改动之后,编译链接均可通过,TrueFFS系统工作也一切正常,但不能确定是否稳定和可靠。 五. 参考文献:TrueFFS for Tornado Programmer''''s Guide 1.0 (Edition 2) ryansheng@sina.com [align=right][color=#000066][此贴子已经被作者于2003-3-17 22:28:27编辑过][/color][/align]



关键词: 尝试     使用     TrueFFS     原创     Flash     To    

菜鸟
2003-03-18 03:36:00     打赏
2楼
好, 鼓掌致意:)

菜鸟
2003-03-18 17:28:00     打赏
3楼
不错!!!

菜鸟
2003-03-18 18:37:00     打赏
4楼
大当家和二当家都说好,我自然和他们站在一起了。呵呵!

菜鸟
2003-03-18 19:19:00     打赏
5楼
[quote][b]以下是引用[i]gem2000在2003-3-18 10:37:15[/i]的发言:[/b] 大当家和二当家都说好,我自然和他们站在一起了。呵呵! [/quote] 哈哈 ̄ ̄,我们这里成山寨乐:)[em27][em27][em27]

共5条 1/1 1 跳转至

回复

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