当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]1 前言近年来随着数码相机、扫描仪、摄像手机等数码设备的兴起,数字照片成为人们生活中不可缺少的一部分。数码相框作为一种新兴的显示媒介,以它大容量的存储相片的能力,

1 前言

近年来随着数码相机、扫描仪、摄像手机等数码设备的兴起,数字照片成为人们生活中不可缺少的一部分。数码相框作为一种新兴的显示媒介,以它大容量的存储相片的能力,良好的显示效果和多样的功能正越来越迅速的走进千家万户。

随着国家广电总局推行电视数字化的进程,数字电视全面铺开。本项目的开发正是基于这两种考虑,开发了一种将数码相框和数字电视相融合的产品。

在这个产品的开发过程中,一个关键性的问题就是为MB86H20B数字电视平台扩展外部存储的功能。本文中提到的基于μcosII的嵌入式文件系统的解决方案较好的解决了这一问题。

2 嵌入式文件系统硬件连接图

ISP1160与MB86H20B(简称20B)之间的硬件连接图如图1,ISP的异步传输端口与20B上的UPI(Universal Peripheral InteRFace)接口相连,这是一种可以配置模式和时序的接口。在此采用了IDE模式,按照ISP1160的时序要求对其进行了配置。ISP1160 在20B上仅仅映射2个IO地址,一个为数据端口,一个为命令端口,由A0的高低电平区分[3]。

 

图1 Decoder与USB Host Controller连接原理图

ISP1160上的INT引脚连接到20B外部中断引脚IRQ1。当中断发生时,20B进入中断服务程序,读取ISP1160状态寄存器。这就构成了ISP1160到20B的数据反馈通路。

3 在U盘上构建FAT32文件系统

FAT32文件系统由三部分构成, 这三部分在逻辑盘上的结构如图2[1]所示。

 

图2 FAT32文件系统结构示意图

DBR(DOS Boot Record)包含BIOS参数块和DOS引导程序。在BIOS参数块中包含了每簇扇区数,保留扇区数,隐含扇区数,每FAT扇区数,根目录FDT在DATA区的起始位置等重要信息。

DATA区是从U盘根目录FDT(FAT Directory Table)开始的,在根目录下用户可以再创建不同的子目录或文件,根目录以及各个子目录都有自己的FDT ,FDT 定义了文件名、文件大小以及文件存放的起始簇号。通过各子目录和文件的FDT构成的树形文件索引结构完成对文件的定位。

物理设备的最小存储单位是Sector(扇区),在DATA区中最小的存储单位是Cluster(簇),在U盘的flash上一般由8个Section构成一个Cluster。

由于一个文件往往在DATA区上占用多个簇,FAT32文件系统采用簇链的方式索引一个文件所占用的簇链。FAT(File Allocate Table)记录了DATA区哪些簇被使用,当前簇的后继簇簇号[1]。

4 FAT文件系统的实现

本文件系统的实现,可以分为USB协议栈和FAT32文件系统为主的四大部分[4]。层次结构关系如图3所示。

 

图3 软件结构模型

4.1 协议层的实现

大容量类设备都可能使用 RBC、SFF-8020i/MMC-2、QIC-157、UFI、SFF-8070i和 SCSI 等 6个命令集。严格来说,大容量类主机端的驱动都应全部支持以上指令集,但实际上常见的大容量设备都使用 SCSI 和 UFI 指令集。SCSI 和 UFI 指令集中常用的命令在大容量类协议中都可兼容。

U盘的整个文件系统在主机软件的协议层抽象为UFI(USB Floppy Interface)设备,通过含有UFI指令的命令块(Command Block)与U盘通信[5]。这层完成的功能有将文件系统中的操作翻译为UFI指令,UFI指令打包成命令块及其对应的逆向操作。

表1 传输层API函数实现

 

4.2 传输层的实现

传输处理层用于处理命令块,包括主机传输命令块到大容量类设备、主机与大容量设备之间的数据传输和主机接收命令块处理状态。大容量类设备传输协议分为Bulk-Only协议和 CBI-Only协议。该层为命令层提供了命令块处理函数的统一接口,使命令层不需理会当前大容量类设备的传输协议。

传输层接收由协议层包装好的命令块,根据已注册的Mass Storage Class设备的信息,采用单批量(Bulk Only)传输模式从批量输出端点(Bulk Data Out Endpoint)传输出去。类似,也可以从批量输入端点(Bulk Data In Endpoint)接收数据,向上传递到协议层解析。

4.3 USB主机协议栈的实现

在U盘连接到USB电缆上后首先为ISP1160注册一个Root Hub Class,再为U盘注册一个Mass Storage Class的设备。接着,为了检测U盘的连接,启动查询当前状态的Host_Serve的任务。当ISP1160 与U盘连接后,ISP1160通过中断通知20B,20B进入中断服务程序改变当前状态。在Host_Serve任务中检测到状态的改变,开始USB协议的通信。至此,U盘(USB Mass Storage设备)注册完成(大容量类相关代码见程序清单3.1,3.2,表2)。由此以后,FAT32文件系统所要对U盘进行的操作都经过Bulk- Only传输完成。

 


程序清单3.1 大容量设备描述信息数据结构

 


程序清单2.2 逻辑单元描述信息数据结构

实现的大容量类的API函数如表2所示。

表2 大容量类API函数列表

 

[!--empirenews.page--]

4.4 此文件系统在μcosII中的移植

FAT32文件系统来源于开源代码,移植的主要工作是替换消息通讯函数。这些工作完成后,将对File的各种操作包装成一个OSFile任务,接收应用程序发出的文件操作要求。文件系统的整体结构图如图4所示。

 

图4 文件系统层次结构[2]

5 性能测试

基于已经实现的方案,进行了详细的测试。首先,对目录的创建,目录的删除,进入目录,退出目录,文件的创建,文件的删除,文件的读取,文件的写入等基本功能进行了测试,均能圆满完成以上功能。

接下来对比较关键的文件读取功能进行了详尽的测试。测试所得到的结果完全达到了对数字相片读取的要求。

表3 不同文件的读取时间

 

6 结束语

基于20B的UPI接口实现USB的传输,之前没有可以参考的范例,完全是出于对硬件时序和文件系统的理解设计了整个解决方案。此方案解决了20B芯片上外挂U盘的问题, 从而使20B芯片可以应用于数字相框(Digital Video Frame)领域。

为了让文件系统能够更好的适应嵌入式应用的需求,可以对文件系统做出一些优化,尽量做到对flash的写平衡,提高文件的读取速度,减少文件系统对CPU和内存资源的占用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭