VxWorks文件系统、Flash的TFFS设计与实现
TQ2440VXWORKS移植手册

TQ2440 VxWorks 实验大纲 Version 1.0 TQ2440 VxWorks 实验大纲目录 第 1 章 前言.............................................................................................................................2 第 2 章 通过 BSP 来生成 VxWorks 镜像并运行...................................................................3 2.1 BSP 的安装.................................................................................................................3 2.2 生成 VxWorks 镜像...................................................................................................3 2.3 u-boot 加载 vxworks.bin ..........................................................................................11 第 3 章 Nor Flash 创建 TFFS 的实验...................................................................................13 3.1 TFFS 文件系统的初始化.........................................................................................13 3.2 TFFS 文件系统的读写测试.....................................................................................14 第 4 章 网络实验...................................................................................................................16 4.1 简单的 Ping 测试 ....................................................................................................16 4.2 简单的 http server 测试...........................................................................................17 4.3 UDP 测试程序..........................................................................................................18 4.4 TCP 测试程序 ..........................................................................................................20 第 5 章 LCD 实验..................................................................................................................23 5.1 ugldemo.....................................................................................................................23 5.2 winHello....................................................................................................................23 5.3 wexbasic....................................................................................................................24 5.4 winBall ......................................................................................................................24天嵌科技 Page 1TQ2440 VxWorks 实验大纲 Version 1.0 第 1 章 前言VxWorks 操作系统是美国 WindRiver 公司于 1983 年设计开发的一种嵌入式实时操作系 统(RTOS) ,是嵌入式开发环境的关键组成部分。
嵌入式操作系统VxWorks中TFFS文件系统的构建

嵌入式操作系统VxWorks中TFFS文件系统的构建摘要:目前的嵌入式系统多使用FLASH 作为主存,因此,如何有效管理FLASH上的数据非常重要。
文章以MX29LV160BT芯片为例,讨论了在VxWorks操作系统下NorFlash 上建立TFFS文件系统的一般步骤,从而为FLASH上的数据管理提供了理想的选择方式,同时也为开发者和用户升级程序提供了方便。
关键词:VxWorksFlashMTDTFFS文件系统嵌入式系统正随着Internet的发展而在各个领域得到广泛的应用,作为一个优秀的操作系统,VxWorks实现了比其他实时操作系统更好的有效性、商用性、可裁减性以及互操作性,广泛应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
如今越来越多的嵌入式操作系统中,通常都使用FLASH作为主存介质。
许多开发者和用户为了方便以后升级用户程序,通常在FLASH上建立TFFS文件系统,建立文件系统后,我们就可以象在windows操作系统下对硬盘操作一样,进行数据的拷贝、删除以及文件的建立等操作。
NOR和NAND是现在市场上两种主要的非易失闪存技术。
Intel于1988年首先开发出NORflash技术,彻底改变了原先有EPROM和EEPROM一统天下的局面。
NOR的特点是芯片内执行XIPexecuteInPlace,这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。
NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,因此在嵌入式系统得到广泛的应用。
一、TFFS文件系统结构简介Tornado的TrueFFS是和VxWorks兼容的一种M-SystemsFlite实现方式,版本为。
它为种类繁多的flash存储设备提供了统一的块设备接口,并且具有可重入、线程安全的特点,支持大多数流行的CPU构架。
有了Tornado的TrueFFS,应用程序对flash存储设备的读写就好象它们对拥有MS-DOS文件系统的磁碟设备的操作一样。
TFFS

Starlight1中国电子开发网()从 TFFS 中启动 VxWorks硬件平台:星光 S3C44B0 开发板、ARM 网络仿真器 FlashICE 软件平台:Tornado2.2 for ARM、超级终端、LeapFTP、FlashICE-programmer 说明: VxWorks BSP 使用的是,中国电子开发网()星光 S3C44B0 开发板附 (1)带的 BSP(CEDN_S3C44B0X_TFFS), BSP 带有 SST39VF160 和 SST39VF1601 的 TFFS 驱 该 动。
(2) 星光 S3C44B0 开发板的第一块 Flash Memory(起始地址 0X0000-0000)用作引导设 备,第二块 Flash Memory(起始地址 0X0200-0000)用作 TFFS 设备。
(3) 特别提示,注意目标板的 FTP Server 和 Tornado2.2 自带的 FTP Server(PC FTP Server)的区别;主机 IP 和目标板 IP 的区别。
第一步,使用 CEDN_S3C44B0X_TFFS 编译 BOOTROM 第二步,在 Tornado 中编译 VxWorks在编译 VxWorks 之前,需要将添加组件 FTP Server。
Starlight1中国电子开发网()第三步,烧写 BOOTROM使 用 FlashICE-programmer 通 过 FlashICE( 可 以 使 用 其 他 的 烧 写 工 具 烧 写 ) 将 bootrom_uncmp.bin,烧写到第一块 Flash Memory。
最好将第二块 Flash Memory 也擦除,以 保证 TFFS 正常工作。
第四步,下载、启动 VxWorks配置好 Tornado2.2 自带的 FTP Server, 通过 FTP Server 将 VxWorks 下载到星光 S3C44B0 开发板(该部分的详细操作, 参考中国电子开发网发布的 《编译 VxWorks bsp 和下载 VxWorks 教学》/Soft/ShowSoft.asp?SoftID=5),下载完毕之后,VxWorks 将自动运 行。
TFFS

这个问题查了好久,是由于dos文件系统使用了长文件名选项造成。dos文件系统的选项有:
DOS_OPT_CHANGENOWARN
DOS_OPT_AUTOSYNC
DOS_OPT_LONGNAMES
DOS_OPT_EXPORT
1)调试的时候首先要确保FLASH的write和erase函数是完全正确的。
2)用sysTffsFormat(tffsDevFormat)格式化,这一步最难通过,如果这一步通过了,基本也就OK了。
3)tffsDevCreate函数创建设备,如果成功,就修改的代码主要是tffsConfig.c和sysTffs.c连个。
调试1;windows的大小不是2的n次幂。
原来的5600子卡上用了一片I28F128flash,共16M,划出第一个block共128K用来保存bootline,这样实际用做tffs的只有
(16M-128K)大小了,于是用这个值来标识chipSize和WindowsSize。这样调试时用sysTffsFormat格式化的时候,一些分区信 息都写入flash了,但到最后总是返回错误,也不能创建设备。后来设windowsSize=16M,chipSize=(16M-128k),再格式化就好了,也能创建设备了。
DOS_OPT_LOWERCASE
要合理使用这些选项。
TFFS的英文原意是True Flash File System。是M-system的一个产品。作为vxWorks的一个插件,实现时是分3层实现的。我们一般只要负责最底层MTD(Memory technology driver)层就可以了。MTD的上层FTL层只要MTD层提供3个标准函数即:read,write,erase就可以了。如果要包含TFFS文件系统只要定义INCLUDE_TFFS和INCLUDE_DOSFS(or INCLUDE_DOSFS2)这两个宏就可以了。系统会自动包含src/config/usrTffs.c和src\drv\tffs\sockets\systffs。c,src\drv\tffs\tffsConfig.c但一般的做法是把sysTffs。c和tffsConfig。c放到BSP目录下取消usrExtra对sysTffs。c的自动包含,在makefile的MACH_EXTRA里加入。
嵌入式PowerPC上的TFFS文件系统的建立

嵌入式PowerPC上的TFFS文件系统的建立
陈留国
【期刊名称】《电子制作》
【年(卷),期】2015(0)4
【摘要】本文主要介绍了TFFS文件系统结构,并以I28F128为例介绍在嵌入式
操作系统VxWorks上建立TFFS文件系统步骤和VxWorks镜像加载的具体方法。
【总页数】2页(P88-89)
【作者】陈留国
【作者单位】中国电子科技集团公司第三十八研究所安徽合肥 230088
【正文语种】中文
【相关文献】
1.嵌入式文件系统及jffs2文件系统在Flash上的实现 [J], 刘金梅;张振东;路全;杨
建华
2.嵌入式Linux系统在PowerPC上的实现 [J], 叶梅;赵京伟;初元萍
3.嵌入式操作系统VxWorks的TFFS文件系统的实现 [J], 吴楠;郭政慧
4.嵌入式操作系统VxWorks的TFFS文件系统的实现 [J], 吴楠;郭政慧
5.如何建立嵌入式操作系统的Flash文件系统 [J], 魏大木
因版权原因,仅展示原文概要,查看原文内容请购买。
在NAND FLASH上建立TFFS文件系统小结

在NAND FLASH上建立TFFS文件系统小结by minuetfrom EDW经过一个星期的摸索,终于在NAND FLASH上建立了TFFS文件系统,今天拿出来和大家分享一下!相信大家对NAND FLASH的特点和与NOR FLASH的区别都有所了解,有关这方面的文章坛子里有,我就不在赘述了。
下面我以三星的K9F6408U0C为例(它是8M x 8 Bit NAND Flash Memory),详细说明建立过程。
环境:tornado2.0 for arm一、硬件连接主要是CLE和ALE的连接,可以用I/O口控制,也可以直接与地址线相连。
我选择后者,因为这种方*既方便,访问速度也比I/O口控制快。
我是让CLE接在A20上,ALE接在A21上。
还要注意/WP(写保护)这个脚,使其上拉。
我在工作过程中曾忽略了对它的控制(浮空),导致写保护有效,擦写都无效。
希望大家不要犯同样的错误。
/CE这个脚我是接在CPU的BANK1片选上,即界于0x1000000~0x1ffffff的16M地址都是指向此flash设备,当然我们只要选择一个地址表示即可,简单起见选0x1000000。
R//B接在CPU的一个输入I/O上,通过读此I/O判断设备是忙还是准备好。
有的片子要求在片子忙状态时,/CE要是低电平,所以建议R//B与/CE连接在一起。
综上所述,可以如此定义:#define WRITE_COMMAND(val) (*(volatile char *)0x1100000 = (char)(val)) /* CLE = A20 */#define WRITE_ADDRESS(val) (*(volatile char *)0x1200000 = (char)(val)) /* ALE = A21 */#define WRITE_DATA(val) (*(volatile char *)0x1000000 = (char)(val)) /* CE = 0 CLE = 0 ALE = 0 */#define READ_DATA(val) ((char)(val) = *(volatile char *)0x1000000) /* CE = 0 CLE = 0 ALE = 0 */#define READ_REG(val) ((int)(val) = *(volatile int *)0x60061C) /* PI3寄存器地址*/上班时间到了,先写到这。
vxWorks在线升级技术

vxWorks在线升级技术看到有很多网友询问在vxworks下如何实现在线升级,逐一答复了多次,还是没能说明白。
因此决定把自己以前实际做的过程描述一下,希望能对大家有所帮助。
如有不妥之处,请指出。
本人曾经在ppc860T, ppc850, pentium-pc104(加doc2000)的目标机上实现过。
1 首先,需要在目标机上实现文件系统,比如使用trueFFS,用dosFS初始化tffs设备。
在完成tffs驱动之后,可以调用usrTffsConfig(0,0,"/flash");如果成功,在shell下调用devs命令,应该能够看到 /flash设备。
2 板子上首先应该有bootrom,如果没有,使用仿真器写入。
3 让板子flash中的bootrom启动,通过网络加载vxworks。
更新vxworks,应该使目标机在vxworks操作系统的支撑之下。
即在运行vxworks时更新存储在flash中的vxworks映象。
该vxworks中应该包含tffs组件,并用usrTffsConfig创建一个tffs设备。
如果创建不成功,先调用sysTffsFormat格式化该设备,再创建。
这个vxworks中,应该包含下列代码(也可以启动完毕之后,通过target server动态下载):STATUS myftp(char* host, char* user, char* passwd, char* srcFile, char* desFile) { int fd, total = 0; int ctrlSock; int dataSock; char buf [1024]; int nBytes;remove ( desFile);fd=open(desFile,0x202,0); if (ERROR==fd) { return ERROR; } if (ftpXfer (host,user,passwd , "", "RETR %s",NULL, srcFile, &ctrlSock, &dataSock) == ERROR) { return (ERROR); }while ((nBytes = read (dataSock, buf, 512)) > 0) { total += nBytes; write(fd, buf, nBytes); } close(fd); close (dataSock); close (ctrlSock); if(total > 0) { return ERROR; }return OK; }各参数的含义为:char* host:主机ip地址,该主机上存放了最新的vxworks映象。
基于VxWorks的NANDFLASH驱动程序设计

基于VxWorks 的NAND FLASH 驱动程序设计张晴晖,李俊萩(西南林学院 云南昆明 650224)摘 要:目前,NAND FL ASH 技术有了飞速发展,它以能抗震动,功耗小,容量大,掉电数据不丢失等特点而成为嵌入式系统的重要组成部分。
如何合理、高效、可靠地使用NAND FL ASH 就显得尤为重要。
讨论了在基于VxWorks 的软件平台和基于AMCC 公司的PPC440epx 、三星公司的K9F2G 08Q0M 为核心的硬件平台上,实现TrueFFS 文件系统的具体办法。
以此为基础的系统在某机载设备上得到成功运用。
关键词:NAND FL ASH ;Vxworks ;TrueFFS ;PPC440epx中图分类号:TP311 文献标识码:B 文章编号:10042373X (2009)142026204Design of NAN D FLASH Driver B ased on VxWorksZHAN G Qinghui ,L I J unqiu(Southwest Forestry College ,Kunming ,650224,China )Abstract :At present ,NAND FL ASH technology is rapidly developing.Its anti 2vibration ,small power consumption ,large capacity ,power 2down data is not lost ,which make it is one important part of an embedded system.Thus ,how reasonable ,efficient and reliable use of NAND FL ASH is particularly important.This paper describes how to achieve TrueFFS file system based on the VxWorks software platform and hardware platforms consisting of AMCC ′s PPC440epx and Samsung ′s K9F2G 08Q0M.These technologies are applied on the on 2board equipment.K eywords :NAND FL ASH ;Vxworks ;TrueFFS ;PPC440epx收稿日期:20082122160 引 言目前,随着电子技术的不断发展,计算机技术也得到飞速的发展,产生了很多新技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VxWorks文件系统、Flash的TFFS设计与实现0 引言在VxWorks的应用系统中,基于flash的文件系统通常都采用DOS+FAT+FTL的结构。
一般情况下,磁盘文件系统大多是基于sector的文件系统,磁盘按照物理上分为柱面、磁盘、扇区,扇区是基于块的文件系统操作的基本存储单位,磁盘的容量都是根据这些数据计算出来的,每个扇区大小通常都是512bytes。
VxWorks文件系统中的DOSFS是MS-DOS兼容的文件系统,可基于块对物理介质进行操作。
由于Fish的物理特性,对Flash作基于块(不同于Flash 的擦除块)的操作必须由软件作封装实现,这就是TFFS所起的作用。
1 VxWorks文件系统的总体结构VxWorks文件系统的总体结构以及TFFS在整个文件系统的位置。
Tomado下的TFFS 文件系统是Tornado的一个可选组件,它可为种类繁多的Flash设备提供一个统一的块设备接口。
在Tornado2.2版本中自带的TFFS版本为2.0,在文件系统中,TFFS的功能相当于磁盘驱动,通过TFFS可使上层的DOSFS或RTll文件系统像操作普通的标准磁盘一样来操作Flash。
2 TFFS文件系统的分层图2所示为TFFS文件系统的分层图。
图中的Core Layer内核层可将其他层连接起来协同工作;翻译层主要实现DOS和TFFS之间的交互、管理文件系统和Flash各个物理块的关系,同时支持TFFS的各种功能,如磨损均衡、错误恢复等;MTD层执行底层的程序驱动(map、read、write、erase等);socket层的名称来源于可以插拔的socket 存储卡,主要提供与具体的硬件板相关的驱动。
3 FTL层分析FTL是TFFS文件系统的核心,它是PCMCIS的一项标准,意思是Flash Translation Laycr Specification,这种类型的文件系统是目前嵌入式系统中最流行的,很多公司都提供这种文件系统的相关解决方案。
PTL 为DOS BPB/FAT与Flash之间的中间层,FTL利用现成的基于块的文件系统(例如DOSFS)来实现应用层的操作,实质上就是在Flash设备上模拟磁盘块设备的实现,为基于块的文件系统提供统一的接口。
FTL通过以下几步来模拟磁盘驱动:首先是在Flash擦除块之外定义小的读写块(相当于磁盘扇区);其次是逻辑扇区(对块文件系统如DOSFS呈现的地址)和物理地址(Flash的实际地址)之间的转换;然后管理Flash,使得能在空闲的地方写入数据。
其核心就是将DOS上的扇区映射到Flash上去。
为了实现DOS层从逻辑上看扇区是连续的,可随时对任意bit读写操作,FTL必须提供对Flash 芯片的管理,包括向上层(DOS层)提供可以任意读写的操作接口,向下对Flash的擦除、写入、读取统一管理,同时还必须提供磨损均衡,以防止一个擦除块提前损坏。
3.1 FTL的启动过程分析在我们调用函数tffsDevCreate创建TFFS文件系统时,会以参数FL_MOUNT_VOLUME调用函数flcall→mountvolume→flmount→mountFTL,函数mountFTL是FTL层的加载函数人口,处理过程首先是初始化FTL,然后就可按下列步骤进行:(1)查找第一个合法的unit头信息合法性的判断依据是unit header头上的标志CISF..FTL100和部分头部的flag信息,由于bsp已把FS的相关信息注册到FTL的数据结构中,所以,FTL层可以找到第一块unit,并可以向后查,直到找到合法的unit为止。
(2)检验信息合法性将所有有用的信息都读出到内部数据结构中后,即可检验信息合法性。
由于unit header中的Unit ID和擦除次数都相同,所以整个文件系统的共用信息都可以从首先找到的头中读出来。
(3)给Mount每一个unit建立page表这是mount最重要的过程,对每个unit调用mountunit()函数,并在mountunit()函数中首先判断,如果是非法unit,则作为交换unit,然后对每个BAM选项进行处理,并对垃圾BAM、空闲BAM进行统计,如果是缓冲的BAM数据和交换page的VBM,则将此page的逻辑扇区信息记录到内存的page表中,以便后续映射访问查询使用,而对于非缓冲的BAM数据,则不作处理,另外,对于交换page的VBM,则进行记录。
考虑到上述过程,可见其系统中的page VBM和缓冲的数据BAM分布在各个unit的各个角落,需要将所有的VBM和缓冲数据BAM收集起来建立整个交换page表,这是FTL标准层设计时就要决定的。
(4)检验逻辑unit的完整性当所有的unit都mount完成后,每个逻辑unit都应存在,否则mount失败。
(5)判断并关闭交换page如果系统中已存在交换page,则对系统中存在的交换page进行关闭操作,以便后面检查page的完整性。
(6)检查page的完整性系统中的page表必须是完整的,这个表中包含有缓冲的数据BAM映射信息和更重要的page映射信息,因此,缺少任何一个,都将导致DOS的虚拟扇区无法映射到相应的逻辑扇区。
从上述过程可见,整个mount过程是将文件系统信息读入内存数据结构并检验的过程,这个Mount PTL过程完成后,mountvolume ()函数即将隐蔽的0扇区和DOS的启动扇区信息读入内存数据结构,这样,DOS就可以访问FTL底层扇区了。
3.2 TFFS的块映射图3中,FTL层将DOS上连续的扇区映射到Flash上某个R/W block块中,同时在某个位置记录一个映射表(称为MAP表),该表中记录了DOS的扇区映射到Flash中的哪个block,当DOS 要进行读操作时,FTL首先查询这个MAP,以获得映射信息,然后读取相应的block信息并返回给DOS,从而实现读映射。
当DOS需要写入操作时,可能存在将bit0修改为1的情况,于是FTL层将申请一个新的block块,并将新信息写入,然后修改map信息,记录这个DOS扇区已经重新映射了,从而实现写映射。
所以,从逻辑上看,FTL层就实现了DOS扇区的映射和FLASH的写入管理。
3.3 垃圾收集过程FTL格式化后,可用扇区将被不断申请使用,原有扇区被不断的废弃,系统中可用的free扇区越来越少,但这并不是由于上层DOS真的使用了这么多扇区,而是FTL为了方便管理、为了不需要每次擦除一块而付出的管理代价。
所以,当系统中的可用扇区少于用户要申请写入的扇区时,FTL层就必须解决这些垃圾问题,这个过程在FTL中称为垃圾回收(garbage collect)。
当FTL中的可用sector小于用户要申请的扇区时,系统将启动垃圾收集,但系统中有很多个unit,到底收集哪个unit呢?FTL会考虑磨损均衡,它将采用一个伪随机的算法来决定收集策略:即用4/256的几率选择磨损情况少的块来收集;252/256的几率则根据垃圾最多为第一条件,当垃圾一样时,判断磨损次数小的优先选择。
3.4 FFL创建的DOSTFFS的格式化函数需要调用tffsDevFormat来格式化,而不需要调用dosFsVolFormat来格式化;另外,在tffsDevFormat格式化参数中,需要传人的参数含有FAT个数参数,其原因是DOS是FTL层创建的,而不是在FTL基础上创建的,下面是TFFS的整个格式化过程:tffsDevFormat→flcall(FL_FORMAT_VOLUME)→formatVolume→Format→f ormatFTL;其中,函数formatFTL是执行FTL层格式化的操作函数,操作时,首先根据格式化参数和BSP参数对内部数据结构初始化;然后再对每个unit进行格式化,在擦除后,即可写入unitheader信息和控制BAM值;之后写入unit No;最后申请每个page的空间;上述formatFTL函数执行完以后,FTL就已经准备好,可以接受上层的扇区读写函数了(当然还没有内容可以读写)。
在函数formatVolume中,mount可进行卷操作,当内存的数据结构准备好后,FTL层即可调用函数flDosFormat来创建DOS。
其中首先创建隐藏扇区,以用于记录该卷的部分信息,然后分别创建MBR、FAT和ROOT目录;这样,DOS创建完成后,再执行dosFsDevCreat函数,当然就无须格式化,找到0扇区自然就找到了MBR,因为DOS是FTL创建的。
从更深层次讲,FTL层之所以创建DOS层,是因为只有FTL层才知道有哪些扇区是可以供DOS使用的,哪些扇区是DOS不能使用的(作为FTL层管理使用),也正是因为DOS层不了解FTL层的运作情况,所有的扇区映射关系都被FTL层隐蔽,因而导致DOS层无法在上层作出有利于Flash擦写等优化动作,如大文件写入时的字节数更新,FAT表更新等操作,都会严重浪费FTL层的映射关系运算。
4 基于M25P32 SPI Flash的TFFS设计对于TFFS的实现,涉及到config.h、sysTffs.c、tffsConifg.c、tffsMtd.c、Makefile几个文件的配置和修改,其中编译是通过建立一个downloadalbe的tomado工程,来把这几个.c源文件编译进去生成.pl文件提供给bsp工程,而后由bsp工程把.pl文件编译进去,从而生成bootable image。
4.1 Config.h 的相关配置要在vxworks映像中加入TFFS文件系统,需要加入相关的组件,虽然也可以在该文件中直接加入相应的配置宏,但很容易造成遗漏和有些需要依赖的宏没有定义或者冲突,本文采用的方法是建一个bootable的tornado工程,而后在这个工程中通过加入TFFS和DOSFS的相关组件来编译这个工程,从而生成一个prjParams.h文件,该文件里就包含了刚刚加入的组件对应的宏,因而,组件与组件之间依赖也是安全的,不会有任何冲突,最后再在Config.h中包含这个文件即可。
4.2 sysTffs.c文件的修改该文件用于提供socket层的bsp实现代码。
如果镜像文件包含TFFS相关组件,那么,系统启动时就会按照如下过程自动调用sysTffsInit()函数:usrRoot()→tffsDrv()→flInit()→flRegisterComponent()→sysTffslnit ()sysTffsInit ()函数会依次调用socket注册函数simmRegisterOfsl (),注册函数数量视需要构建的文件系统数量而定,本文构建了1个文件系统ofsl,并在simmRegisterOfsl()函数中对文件系统的基地址进行了设置,同时对FLSocket()结构体中的毁掉处理函数进行了挂接,挂接函数也在该文件中实现,如卡上电、断电、写保护等。