1、 嵌入式操作系统 VxWorks 中 TFFS 文件系统的构建嵌入式操作系统 VxX29LV160BT 芯片为例,讨论了在 VxTDTFFS文件系统 嵌入式系统正随着 Internet 的发展而在各个领域得到广泛的应用,作为一个优秀的操作系统,VxS-DOS 文件系统的磁碟设备的操作一样。 如图 1 所示,TrueFFS 由核心层( corelayer)和三个功能层,翻译层(translationlayer ),MTD 层(MTDlayer),socket层(socketlayer )组成。 核心层(Corelayer):核心层主要起相互连接其他几层的功能。同时它也可以进行碎片回收、定时器和其
2、他系统资源的维护。通常D 以及 samsung 部分 flash 芯片的 MTD 层驱动。新的芯片需要新的MTD 支持,你可以使用一个标准的接口来加入这些驱动。 以上四部分,我们通常要的工作就是后两层。 当在 VxX29LV160BT 芯片上建立 TrueFFS 文件系统 1、配置相关文件 在此,我以 NorFlashMX29LV160BT 为例,开发工具为Tornado2.2forPPC。要在 VxTD 层)链接到一起并和 VxTD 和翻译层模块应该包含到 TrueFFS 中。即: #defineINCLUDE_MTD_MX29LV/*MX29LV160BTMTDdriver*/ #defi
3、neINCLUDE_TL_FTL/*FTLtranslationlayer*/ #defineFLASH_BASE_ADRS0x2a10000/*Flashmemorybaseaddress*/ #undefFLASH_SIZE #defineFLASH_SIZE0x001f0000/*Flashmemorysize,2M(parameterblock)*/ 其他无关的 MTDdriver 包含头都#undef 掉,同时定义 Flash 在系统中的基地址和大小。另外,还必须编辑 sysLib.c 中的sysPhysMemDesc数组,将 Flash 基地址和大小加入到 MMU 中,以供将来访问
4、 Flash,否则访问 Flash 会失败。如果 BSP 目录下没有sysTffs.c 文件,那么我们可以从其他 BSP 目录下拷贝一个即可,然后做上述修改,其他的内容基本可以不用修改。 接下来需要修改 tffsConfig.c 文件,为了方便管理,通常我们将src/drv/tffs/目录下该文件拷贝到我们 BSP 目录下,然后再做出修改。在 MTDidentifyRoutinemtdTable表中加入如下语句: #ifdefINCLUDE_MTD_MX29LV mx29lvMTDIdentify, #endif/*INCLUDE_MTD_MX29LV*/ 并在该文件开头声明。 #ifdefI
5、NCLUDE_MTD_MX29LV FLStatusmx29lvMTDIdentify(FLFlashvol); #endif/*INCLUDE_MTD_MX29LV*/ 最后就是将我们的 flash 相关MTD 驱动加入到 makefile 中。即: MACH_EXTRA=mx29lvMtd.o 为了方便我们调试 MTD 驱动,应该在重新编译 Vx #defineINCLUDE_DISK_UTIL #endif/*INCLUDE_DOSFS*/ 2、MTD驱动简介 做了上述配置后,进入 VxtdIdentiy()函数,在mx29lvMtdIdentiy()函数主要是通过读取 MX29LV16
6、0BT 芯片的设备和厂商 ID 来识别它,然后对 FLFlash 结构成员进行初始化,最主要的几个参数是: type Flash 内存的 JEDECID 号。 erasableBlockSize Flash 内存的擦除块大小(字节)。设置这个值时应考虑到interleaving。因此,通常通过如下方法来设置它的大小。 Vol.erasableBlockSize=MX29LV_MTD_SECTOR_SIZE*vol.interleaving; 对于 MX29LV160BT,MX29LV_MTD_SECTOR_SIZE 为 64K 字节。 chipSize 使用来构建 TrueFFS 文件系统的
7、flash 实际大小(字节)。 noOfChips 使用来构建 TrueFFS 文件系统的 flash 实际片数。interleaving Flash 内存交叉因子( interleavingfactor)。即扩展数据总线的设备数。比如,一个 32 位数据总线上,我们可以使用 4 片 8位或 2 片 16 位的设备。 map 指向 flash 内存映射( map)函数。该函数将 flash 映射到内存区。 read 指向 flash 内存的读函数。在MTD 驱动识别函数中,这个成员函数已经被初始化为缺省的读函数。通常情况下,我们不需要再初始化它,否则还需要修改很多相关的函数。 x29lvMtd
8、Identiy()函数中必须有如下定义: vol.x29lvTD 驱动的调试,基本上就是调试写和擦除两个函数。在调试过程中,我们可以在这两个函数相应位置加入打印语句来调试。为了能调试这两个函数,我们通过在 shell 上输入命令 tffsDevFormat 来格式化flash,tffsDevFormat 最终会调用 mx29lvErase 和 mx29lvtdIdentiy。 tffsShoediaSize=0x1f0000 value=49=0x31=“1” 说明已正确识别到MX29LV160BT 设备,设备号为 0x2249。 三、建立 TFFS 设备 1、挂接设备名 MTD 驱动调试成功
9、后,我们就可以给 flash 设备挂接上dos 设备名,如下操作: 格式化: tffsDevFormat value=1 usrTffsConfig0,0,”/tffs0” value=0 然后通过 devs 来查看挂接的设备名。 devs drvname 0/null 1/tyCo/0 1/tyCo/1 5host: 6/pty/rlogin.S 7/pty/rlogin.M 3/tffs0/ 8/vio value=25=0x19 看到/tffs0/ 说明挂接设备已经成功,接下来就可以利用 dosFs 文件系统相关命令来操作 flash了。如,ls、copy 等。 2、从 Flash 中启
10、动并下载 VxAP5910 及其在3G 的多媒体应用双内核嵌入式处理器 OMAP5910 及其在 3G 的多媒体应用下一篇论文: 基于 IntelPXA263 的智能移动信息终端设计查看本站更多关于嵌入式系统论文的文章友同时还浏览了:基于 SmallRTOS51 的数据采集器设嵌入式Java 运行平台数据库引擎的嵌入式实时系统中断管理技术研究CODARTS 建模方法在嵌入式软件开发基于 LPC2104 的VxWorksBSP 设计嵌入式系统以太卡控制器 LAN91C 嵌入式操作系统 VxotorolaADS-PoorySize:0x1000000.BSPversion1.2/5. M_END 中运行。