引言
现代社会在各种领域里要求人们尽快和准确地把握大量的信息,人类的视觉堪堪担此重任。数字化图像技术的成熟虽然只有短短几年的历史,已经给我们的环境与思维带来了重大的变化,我们正在逐步建设的信息高速公路已经把清晰的图像和活动视频作为主要的信息交换手段。源于计算机领域的数字化视频传输技术,既是当代信息高速公路、高清晰度电视、可视电话、电视会议。DM642作为图像处理芯片,其强大的计算能力、丰富的外围接口和完全可编程性,而CF卡的使用则可以弥补板载的Flash容量通常太小,SDRAM掉电后数据会丢失的缺陷。同时CF卡采用的插针式连接方式,具有相对较高的抗震性和稳定性,能够较好地满足便携式设备的要求。
1 CF卡的简介
CF卡(Compact Flash)初是一种用于便携式电子设备的数据存储设备。作为一种存储设备,它革命性的使用了闪存,于1994年首次由SanDisk公司生产并制定了相关规范。当前,它的物理格式已经被多种设备所采用。目前CF的容量可高达100GB,主流容量已达到4GB,价格也已经降到几十元左右,性价比很高。
2 DM642与CF卡的接口设计
2.1 硬件接口设计
CF卡支持三种基本的工作模式:PC Card Memory模式、PC Card I/0模式以及True IDE模式,不同的模式对应的管脚功能略有不同。在本文的设计中使用的是PCCard Memory模式,在插入CF卡之前,保证CF卡的插槽/REG管脚为高电平,即可让CF卡自动进入PC Card Memory模式。DSPs是通过外部存储器接口EMIF(External MemoryInterface)来访问片外存储器的。DM642的EMIF有CEO、CEl、CE2、CE3四个空间,各具有256MB的寻址空间。根据Memory模式的要求,CE2空间被配置为8位异步接口,硬件连接如图2所示。
引脚连接说明如下:/REG信号用于选择访问普通寄存器还是属性寄存器,他和地址线A[3:0]一起完成对读写寄存器的选取。/CDl和/CD2用于检测插槽上是否有CF卡,当CF卡插入插槽后,这些管脚会被拉低。/CEl和/CE2则用来选择CF卡的数据传输宽度,本文中设计为8位宽度。为了节约IO口的资源,/CDl、/CD2、/CEl、/CE2和I/REG均连接到配置的通用IO(GPIO)口上。
TEAl3控制REG,TEAl2控制CF卡的CEl,TEAl 1控制CF卡的CE2,DSP_CE2是CE2空间的使能信号,ARE和IAWE是异步接口的读写信号,均为低电平有效,他们通过与DSP_CE2逻辑取“或”后连接到CF卡的/0E和/WE。
CF卡具有16位的数据总线,但是可以根据主控制器的数据宽度灵活配置成8位或16位,本系统中将DM642的低16位数据总线D[15:0]与CF卡的数据总线D[15:0]相连。CF卡的11位地址总线取低四位A[3:0]连接到DM642的TEA[6:3],CF卡的TEA[9:4]接地,TEAl0连接到DM642的TEA7,CSEL接地,IOWR、IORD上拉至VCC。
CF卡还会继续被很多设备支援,仍然成为数码相机的主流标准。CF的主要特点仍是以少的价钱换取的MB数,比小型记忆卡有着容量,CF II能使用MicroDrive,以及透过转接器使用多种较小记忆卡。同时, CF卡接口的记忆卡转接器比其他类型的平, 全因它没有芯片组。
2.2 CF卡的软件接口
CF卡的读写是以扇区(sector)为基本单位的,每扇区为512字节,每次读写一个或多个连续扇区。本文中CF卡被配置为PC Card Memory模式,该模式下的寄存器地址映射如表1所示。
寄存器0用于读写数据,寄存器1在读操作时是错误寄存器,存放错误信息,写的时候是特征寄存器。寄存器2用于存放读写扇区的数目。寄存器3~6用于存放读写扇区的地址。CF卡的扇区寻址有两种方式:物理寻址方式(Cylinder/Head/Sector,CHS)和逻辑寻址方式(Logical Block Addressing,LBA)。CHS是扇区对应的具体的柱面、磁头和扇区的地址,LBA的地址则在逻辑上是连续的,两种寻址方式的转换关系为:LBA地址=(柱面号×磁头数+磁头号)×扇区数+扇区号一1。本文选择LBA的线性寻址方式。
寄存器7在读和写时具有不同的意义。读操作时是状态寄存器,存放CF卡的状态信息,写的时候是命令寄存器,用于设置命令。
CF卡读写程序之前要初始化DSP和CF卡,初始化GPIO,将DM642的CE2空间设置为8位异步接口,将/REG配置为高电平,同时设置CF卡为8位数据接口。
在读写扇区时,首先要设置好起始扇区的LBA地址和要读写的扇区数目,然后再设置命令寄存器,读取数据设置为20H,写入数据设置为30H,写完后读取状态寄存器,只有当状态寄存器为“58H”时才能开始读写操作,否则继续查询状态。由于数据接口为8位,这样对一个扇区就需要读或写512次数据寄存器即可。之后还要读取状态寄存器看是否为“50H”,判断CF卡的操作是否完成,若完成,则退出本次操作,否则继续查询直至完成。
CF卡写一个扇区函数部分源码如下:
读写多个扇区的方法与此类似,设置好扇区的数目和相应的读写命令即可,一般说来直接设置循环读写比调用子程序的运行效率要高。
2.3 CF卡的内存空间管理
本系统中CF卡上存储的是mpeg2格式的视频数据,虽然视频的长度不确定,但是扇区地址用LBA寻址的话都是4字节。在本设计中CF卡的存储空间可如下进行分配:个扇区存放视频的索引信息;从第二个扇区开始存放图像数据。
其中个扇区512个字节存放的数据格式如下:
total section为存放的总视频数据的个数,初始为0;current section则为当前要进行操作的视频的编号,初始为1;addressl为段视频的起始地址,初始值为0x00000002,而address2为第二段视频数据的起始地址,初始值为0,其后的数据在初始化时均设为O。
在每次系统启动时都需要首先读取个扇区的信息,读取的信息放在一个宽度为4字节的数组infolba里,则每段要读写的视频地址计算方式如下:currentaddress=infolba[current section],相应地在完成读写操作后要重写扇区,对索引信息进行更新,具体为total section、current section和下一段视频数据存放的地址。
从实用角度讲扇区可以存放约125段视频的首地址,可基本满足使用的要求。根据设计addressl的值恒为Ox00000002,而total section和Icurrent section又有特定的大小关系,那么Infolba的前三个数据可作为校验标志用于检测当前的CF卡空间分配是否符合要求,若不符合要求就按照初始值进行初始化。若进行写扇区的操作,则infolba[current section]以后的数据信息都会被覆盖或丢失索引信息,这样可以确保CF卡内存空间的重复使用。
3 结束语
本文给出了CF卡和DM642的软、硬件接口,通过CCS2.2平台和RF5框架整合了软件工程,成功地将CF卡应用到基于DM642的便携式数字视频系统中。通过多次试验和对程序的优化,系统运行良好,这说明本方案成功地解决了便携式设备要求的实时性、大容量和稳定性,具有广阔的应用前景。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。