基于DSP支持FAT32文件格式的IDE大容量视频系统设计
本文作者:admin
点击:
2007-02-01 00:00
前言:
随着国内信息化建设的不断深入,公安、金融等部门对视频监视系统的需求不断增长。目前用于银行ATM的视频监控系统主要是通过网络将获取的图像压缩后取走,但是存在由于网络速度慢而来不及取走数据的情况,造成了实时性差、稳定性差等关键问题。而硬盘以其容量大、接口智能化程度高、控制方便越来越受到人们的重视,因此本文提出了一种基于DSP支持FAT32文件格式的视频监控系统的设计,用于控制硬盘进行视频数据的存储,解决远程控制传输占有系统资源过多的问题,极大的提高了系统的性价比。
FAT32文件系统结构简介
FAT32文件系统是实现在PC机上普遍应用的文件系统,采用图像直接记录成FAT32文件格式,既方便后续的操作,也很容易将硬盘直接移植到计算机上使用。经过PC机高级格式化后的硬盘本身包含了FAT32文件系统的系统参数,将该硬盘直接连接到嵌入式系统的IDE接口,可以由DSP芯片读写和管理硬盘上的文件并且也可以将该硬盘作为第二硬盘接到PC机上进行数据处理。
IDE硬盘或Flash存储器经分区、格式化后,分为主引导区(MBR)、DOS引导记录区(DBR)、文件分配表(FAT)、数据区4个部分,它们在磁盘上是顺序分布的,如图1。掌握了FAT32文件系统的结构,就可以获取相关文件系统参数,对文件进行管理。
主引导区从物理第一扇区开始,记录了第一磁盘分区的入口和剩余磁盘分区的入口信息、第一分区的文件系统格式、起始扇区号和大小。接下来就是FAT32文件系统的引导区,存放着BPB参数和系统引导程序。然后是文件分配表及其备份FAT1和FAT2,用于管理和分配文件区的磁盘空间,其位置和大小由系统引导区中的参数计算可得。
引导区在分区的第一个扇区,其中包含了非常重要的BIOS参数,根据这些参数可以找到FAT和根目录的入口地址。本文所用的参数见表1。
系统硬件设计
系统中采用数字摄像头,视频压缩编码芯片,德州数字媒体处理器DMP(TI Digital Media Processor ),时序与控制逻辑电路,IDE笔记本硬盘、网络芯片等基本部件。结构如图2所示。通过数字摄像头采集视频图像,然后在时序与逻辑电路的配合下送到视频压缩编码DSP中处理。DSP对接受的信号进行识别,编码等运算,一方面将处理好的图像通过IDE接口存储到本地的硬盘上,另一方面通过网络芯片进行D/A转换后,把经过压缩的视频信号无失真的通过网络传给远端用户。
采用DSP来实现压缩和编码的优点在于它比采用专业压缩芯片的方法灵活性大,产品的升级或算法的更改极为方便。图像数据存储器和通信缓冲器都是大容量的存储器,要存储压缩编码后的图像数据,并且要提供通信用的缓冲区。
IDE接口的硬盘驱动器提供两种数据传输模式:PIO模式和DMA模式。由于采用PIO模式控制相对容易,并且提供了一种可编程控制输入/输出的快速传输方法,所以本系统使用PIO模式。该模式采用高速的数据块IO,以扇区为单位,用中断请求方式与CPU进行批量数据交换。
系统软件设计
本系统的软件设计采用程序结构化和功能模块化的设计方法,以便于此设计具有良好的可移植性。系统软件包括主程序和任务子程序。任务子程序由读扇区、写扇区、错误处理、逻辑块地址写、IDE读、IDE写等组成。主程序如图3所示:
首先初始化,判断是否有任务到达,如有任务,则根据命令进入到相应任务子程序。在进入任务子程序之前,必须先检测驱动器的状态。
● 直接读写IDE硬盘扇区
文中使用了结构ATACMD来定义对硬盘的控制。对IDE硬盘寻址可采用物理寻址(CHS)和逻辑寻址(LBA)两种方式,可以通过对lba的设置进行选择,由于FAT32文件系统中的扇区地址都是采用的逻辑地址,本文采用了LBA的方式。对硬盘的操作是通过向硬盘的命令寄存器组中的寄存器写入命令来实现的。硬盘控制器命令长度为7 B,其中前6 B为参数,最后1 B为命令码。其中ft、sc、sn、cl、ch、drhd是传给硬盘的参数,cmd给出对硬盘的操作命令。
在向硬盘驱动器发出命令前,必须先检测硬盘驱动器的状态。表2为状态寄存器,它反映了硬盘驱动器执行命令后的状态。
其中BSY位为忙位,DRDY驱动器准备好,DRQ是请求服务,驱动器希望通过数据寄存器与CPU交换一字节数据,ERR表示命令执行出错。读数据前需要检测硬盘驱动器是否忙碌(D7=1),如果在规定时间内硬盘驱动器一直忙碌,则置超时错;否则表示硬盘驱动器空闲,DSP把操作码发送到命令寄存器中,然后等待硬盘驱动器发出的DRQ数据请求信号,检测到DRQ后,检测DRDY信号是否有效,如有效,则从数据线上读取当前数据,然后继续检测DRDY信号,再读数据,直到请求扇区的所有数据读取完毕。写命令同读命令类似,只是在检测到DRDY命令后将要写入的数据送到数据线上。
● DSP对基于FAT32文件系统的文件操作
FAT32文件系统由主引导记录区(MBR)、分区引导记录区(DBR)、第一文件分配表(FAT1)、第二文件分配表(FAT2)、根目录(FDT)和数据区组成,它们在硬盘上是顺序存放的。MBR(逻辑0扇区)记录了磁盘分区的入口信息和文件系统格式,DBR存放着BPB参数。首先读出MBR,检测硬盘是否进行了格式化,如果未格式化,需要先进行格式化操作,否则检测是否是FAT32文件系统,如果不是则不能按FAT32格式读写文件,如果是获取DBR的入口地址DbrEntry,然后读出DBR扇区,首先检测引导扇区是否被损坏,如果没有,读出所需的BPB参数:
BPB_SecPerClus:每簇扇区数
BPB_BytesPerSec:每扇区字节数
BPB_FATSz32:每个FAT表所占扇区数
BPB_TotSec32:磁盘总扇区数
BPB_RsvdSecCnt:保留扇区数
BPB_RootClus:根目录起始簇号
根据获得的参数,可以计算出读写文件所必需的其他参数:
FAT1的起始逻辑扇区号=保留扇区的大小(BPB_RsvdSecCnt)+系统引导扇区开始的逻辑扇区号(DbrEntry)
FAT2的逻辑扇区号=FAT1的逻辑扇区号+每个FAT所占的扇区数(BPB_FATSz32)
根目录的起始逻辑扇区号=FAT2的逻辑扇区号+每个FAT所占的扇区数(BPB_FATSz32)+(根目录的起始簇号-2)×每簇扇区数(BPB_SecPerClus),这也是根据簇号计算逻辑扇区号的公式。
簇是FAT表给文件分配磁盘空间的最小单位,每个簇在FAT表中占有一个登记项,簇的编号与FAT登记项的编号一一对应。FAT表从第2个表项开始分配给文件,最开始两个表项即序号为0和1的表项为保留表项值为:0FFFFFF8和FFFFFFFF。其它的表项则以链表的形式存放下一个在逻辑上连续的簇号值,结束用0FFFFFFF标记表示不再有后续的表项,用00000000表示该簇没有使用。
写文件:向硬盘中写入一个文件首先要做的就是在根目录下建立文件的文件目录项,查找一个空闲簇,并找到准备写入文件表项的空闲位置,然后分配一个空闲簇作为文件数据的入口簇号,将文件的文件名(8.3格式)、文件入口首簇号、文件长度等信息写到刚才找到的写文件表项的位置。然后在从文件起始簇开始写入数据,当文件占用多个簇时,要先找到一个空闲簇,并在FAT1表中建立一个簇链,然后在分配的空闲簇协商数据。如果是分配给文件的最后一簇,需要在FAT1表中写上结束标志,以便读取文件,同时备份FAT2。最后分配的簇号需要写入FSI_Nxt_Free中,用于在查找空闲簇时避免每次从头查找,减少查找工作量,提高查询速度。需要注意的时,当磁盘已满时,采取了覆盖最旧的文件的办法,由于我们采用时间作为文件名,只需要找到最小的那个文件名将其所占用的空间释放就可以了。
读文件:读文件相对简单,将所给文件名与根目录开始的目录表项中的文件名逐一比较,如果相同找到文件,从目录表项中取出文件的起始簇号,将该簇对应的数据读到缓冲区中,察看FAT1中的簇链,如果是结束标志,文件读完,否则继续读取下一簇文件,直到文件结束。
删除文件比较简单,只需要找到文件目录项所在位置将第一个字节变为5EH,然后将FAT中对应的链表中各项清零即可。
结束语
本系统利用DSP芯片将视频数据按文件格式直接记录在数据区指定的扇区,将硬盘切换到PC机后,可以被操作系统直接识别,并能进行任意的编辑、拷贝,利于图像文件的存储、管理和使用。目前该系统已应用于银行ATM机的监控系统,取得了良好效果。
参考文献:
[1]李家星 苗长云 李鸿强.基于单片机的IDE硬盘控制的研究与设计 微计算机信息 (测控自动化)2004 年第 20 卷第 10 期
[2]王海军 安建平 卜祥元.基于TMS320LF2407A支持 FAT32文件系统嵌入式软件的实现[M] 嵌入式系统 2003 年第 6期
[3]张友生.远程控制编程技术[M].北京:电子工业出版社,2002.
[4]徐厚俊.接口和IDE硬盘驱动器 新浪潮,1996