基于嵌入式USB主机的飞控数据记录器设计及实现

2011-06-05 11:01樊文侠
电子设计工程 2011年19期
关键词:记录器飞行数据飞控

樊文侠,房 壮

(西安工业大学 电子信息工程学院,陕西 西安 710032)

飞行数据记录系统对保障飞机的日常飞行训练,分析飞行事故,评估飞行训练质量都发挥了极其重要的作用。但是,当前的飞行数据记录器的缺点十分明显,主要反映在以下几点:

1)体积大、重量大、功耗大的缺点;

2)地面PC通过RS232串口卸载数据记录器中的数据,存在卸载速度慢,无法脱离PC的应用环境,给现场卸载数据带来了不便;

3)地面PC需要安装相应的数据卸载软件,导致数据记录器移动性差。

随着USB接口技术的成熟和USB移动存储设备的普及,如果在飞行数据记录器集成USB主机接口,飞行数据记录器可以与USB大容量存储设备(如U盘)之间直接通信,摆脱了只能通过PC来进行相互的文件和数据交换,提高了数据卸载速度,实现了飞行数据卸载的灵活移动。

根据具体飞行数据器的实际需要,研究设计了一种新型飞行数据固态记录器,通过RS232接口接收机载数据,并以BIN文件格式保存到NAND Flash海量存储芯片上,数据记录器通过USB主机接口与大容量设备进行文件和数据交换,完成数据卸载的任务。

1 飞行数据记录器的工作原理和整体设计

飞控数据记录器用于记录无人机在飞行过程中的飞行参数,首先接收RS422串口数据并以BIN文件格式记录在海量存储器中,待飞机返回地面后数据以一定的文件格式转存到USB大容量存储设备中,并可以在PC机上根据需要分析数据。工作流程如下:

1)通过RS422接收数据 ARM控制器在完成系统初始化和构建FAT16文件系统后,默认进入接收RS422端口的数据状态,飞行参数按照BIN文件的格式保存到NAND Flash存储器中。

2)通过USB接口卸载数据 当USB设备插入主机体统上后,由USB主控器通过外部中断信号来通知ARM控制器,ARM控制器与USB主控器完成设备的枚举、配置等操作后,将存储在NAND Flash存储器的飞行参数文件卸载到U盘。模块的硬件结构图如图1所示。

2 硬件层设计

2.1 系统主要硬件选型

图1 USB数据记录器结构框图Fig.1 USB data recorder configuration diagram

从图1可知,USB飞控数据记录器可以细分为ARM微处理器、USB主机控制器、NAND Flash大容量存储器。ARM微处理和USB主机控制器共同实现了USB功能,USB主机控制器为移动存储设备提供接口,并实现部分的底层USB协议;大容量存储器是存储飞行数据的设备。

1)微控制器:选用 NXP公司的 ARM7TDMAI处理器LPC2214主要优点:低功耗,采用3.3 V供电,内核电压1.8 V;主频高,运行频率达到60 MHz,拥有256 kB片内的Flash编程存储器,16 kB SRAM;-40~85℃的工作范围满足数据记录器的工作条件[1]。

2)USB主机接口:PHILIPS公司的ISP1161A1是一个单片通用串行总线(USB)主机控制器(HC)和设备控制器(DC)。ISP1161A1的主机控制器符合串行总线2.0规范,支持全速(12 Mbit/s)和低速(1.5 Mbit/s)的数据传输。 ISP1161A1 提供两个下行端口,每个下行端口都有一个过流(OC)检测输入及电源快关控制输出引脚[2]。

3)FlASH:由于记录器要存储容量至少达到128 MB,从而选用SASUNG公司的NANDFLASH K9F1G08U0M,其实际的存储容量高达128 MB+4 MB,其中4 MB为备用空间;-40~85℃的工作范围满足数据记录器的工作条件;供电3.3 V,功耗低,可以和LPC2214芯片使用同一个3.3 V稳压电源,简化了电源电路的设计。

4)片外RAM扩展:由于需要在飞控数据记录器构建USB主机协议栈、FAT16文件系统,对系统的内存开销很大,LPC2214的自身16 k已无法满足要求,需要向片外扩展RAM,选择 8 MB 的 PSRAM(MT45W4MW16),16位总线接口系统硬件电路的设计。

2.2 硬件电路设计

飞控数据记录器的硬件部分结构如图1所示,主要由ARM最小系统,用于存放飞行参数的片外NAND Flash存储电路、RS-422接口电路、USB主机接口、片外SRAM扩展电路五部分构成。本文主要介绍NAND Flash存储电路和USB主机部分的电路。

1)NAND Flash 存储电路

将CPU的总线读写信号/OE和/WE分别与静态存储器的片选信号线/CS0相或之后作为NAND FLASH的读写信号,这样做的一个好处是当以后扩展新功能时,/OE和/WE的状态不会影响NAND FLASH的读写信号。而NAND FLASH的片选信号/CE通过CPU的IO口P4.22进行控制。7管脚接上拉电阻使该FLASH处于就绪状态,同时将忙信号通过P4.23反馈给LPC2214。命令锁存使能、地址锁存使能信号分别与地址线A21、A20相连。这样连接的一个主要原因是,所有的CPU管脚都在一起,方便PCB板的布线。NAND FLASH的连线如图2所示。

图2 NAND Flash存储电路Fig.2 Circuit of NAND Flash storage

2)USB主机接口电路

当USB设备与主机连接或断开时,会产生大电流也就是浪涌,因此需要设计一个过流保护电路。ISP1161A1主机芯片的VCC接到5V电源时,内部过流检测电路被使能。当芯片检测到一个过流状态时,将关闭下行端口Vbus的5 V电源。当处于非过流状态时,将打开Vbus的5 V电源。在设计中,用一个P-沟道MOSFET作为Vbus电源开关。用一个P-沟道MOSFET的源极与5 V电源连接,Vbus接源级和H_PSWn接闸级。漏极与源级上的压降,为过流检测电压(VOC)。当VOC标称的电压阀值H_PSWn将输出高电平,关闭P-沟道MOSFET。如图3所示。

3 飞控数据记录器的软件设计

3.1 飞控数据记录器软件设计的总体框架

系统的软件平台核心为μC/OS-II,它是一个源码公开的、占先式任务管理的实施操作系统内核,已在相当多的系统中得到成功应用,具有其性能稳定、源码公开的优点。

系统通过μC/OS-II操作对系统的两大功能任务进行管理及其子任务间的调度:

1)基于NAND Flash的FAT16文件系统存储。由于NAND Flash的物理特性:出厂之前可能存储在坏块以及操作过程中再次出现坏块,擦除次数有限,页读块擦除,写之前需先擦除,存储器中的数据只能由1变0,为了有效的使用闪存,提高使用寿命和利用率,尽可能减少擦除次数,并且,擦除操作尽可能均匀分布在整个闪存上[3]。文中通过重新设计NAND Flash驱动程序,支持均衡写闪存和坏块管理,为上层FAT文件管理软件提供一个可靠的逻辑存储设备。NAND Flash驱动程序主要实现如下:①支持NAND Flash写平衡。驱动程序把编程操作分散到不同的物理扇区,使每个扇区的编程次数趋于相同,提高了闪存的寿命;②支持坏块管理。驱动程序会自动记录原始坏块和新产生的坏块,提高数据存储的可靠性。

图3 主机接口电路Fig.3 Circuit of host interface

2)实现USB主机对U盘的读写。USB主机为实现U读写提供的功能有:①将测USB外设的接入和移出;②管理主机和外设之间进行的USB标准流控制;③枚举外设;④管理主机和外设之间的数据流;⑤搜索系统状态和性能的统计信息;⑥主机与外设之间的电气接口,包括供电[4]。

3)USB协议规定了人机接口设备HID类、MassSorage类和音频类等一系列的设备类型,用于支持不同的设备。根据应用需要,开发了USB接口的海量存储类设备。该系统支持热插拔,可以识别插上是哪种设备,并调用对用的驱动。

3.2 NAND Flash坏块管理和均衡读写实现方法

1)NAND Flash文件系统的结构设计

为方便文件系统的移植,同时便于兼容更多的NAND Flash存储器,将整个文件系统分为文件管理层(FAT)、存储管理层(FFS)和NAND Flash驱动层。结构如图4所示。

图4 NAND Flash文件系统结构图Fig.4 NAND Flash file system structure

文件管理层对文件系统进行封装,为应用层提供统一的、标准的API接口,把用户对文件的操作请求提交给文件逻辑层来处理。标准的文件操作函数有:FileOpen()、FileClose()、FileRead ()、FileWrite ()、FileSeek ()、RemoveFile ()、MakeDir()、RemoveDir()等[5]。

文件逻辑层为文件管理层提供服务,把文件管理层对文件的操作转换为物理上的操作,均衡磨损控制,坏块管理,并提交给Flash驱动层处理。

Flash设备驱动层实现对Flash的物理操作,包括块的擦出、页面的写入和读出。它为文件系统和存储器提供统一的接口,提高了存储器的适应能力。

2)NAND Flash坏块管理算法

NAND Flash的每个扇区由数据区(主数据区)和备用数据区(附加数据区)组成。平衡读写驱动使用数据区存储数据,备用数据区存储此扇区的属性[4]。由于,第0块的高可靠性,可以用来保存NAND Flash硬件信息,作为系统区,而其他作为数据区。上层FAT文件管理系统使用驱动时,提供逻辑扇区号,但因为坏块和均衡磨损的要求,要经过NAND Flash存储管理层转换为物理地址后才能访问硬件层。

NAND Flash硬件信息的结构体变量有一个成员BlockState数组,数组中每一个元素对应一个物理扇区。数组保存每一个物理块的状态,用物理扇区号访问数组,就可得到物理块的状态。数组元素值有3个:BAD_BLOCK(坏块)、FREE_BLOCK(未使用)、USR_BLOCK(已使用)。

3)均衡读写实现方法算法

均衡读写主要是把需要写入Flash的数据编程到擦除次数的物理块。核心操作为查找擦出次数最少的块。因此,在构建NAND Flash硬件信息的结构体变量有一个成员BlockEaseSum数组,数组中每一个元素对应一个物理块[5]。数组保存每一个物理块的擦出次数,用物理块号作为下标读取这个数组,就可以得到这个块的擦出次数。当数组成员的值为0xFFFFFFF时,表示此物理块为坏块。

3.3 USB Mass Storage类协议框架的实现

USB Mass Storage类是USB协议所定义的用来磁盘管理及大容量数据传输的。USB定义两种海量存储协议,它们分别是Buck-only Transport和 CBI Transport。目前市场上的海量存储设备读写都采用块传输来实现通信[6],在命令包CBW包含了标志信息,数据长度以及UFI命令等信息。其中UFI命令包含有格式化磁盘、读磁盘、写磁盘和读磁盘容量等一系列磁盘管理命令。

大部分移动存储设备都采用FAT文件系统来管理文件。整个文件系统通过Mass Storage的UFI命令与外设的磁盘建立联系。 FAT文件系统将海量存储设备上的数据大致分成5个部分:MBR 区(主引导区)、DBR 区(系统引导区)、FAT区(文件分配表)、FDT区(文件目录表)和DATA区(数据区)。当USB接口的海量存储设备与主机连接后,系统读取MBR区和DBR区来获得每扇区字节数[7],每簇扇区数,FAT表个数等文件系统基本信息。获得这些基本信息后向海量存储设备写入一个文件的流程如图5所示。

图5 读文件流程图Fig.5 Process of reading file

4 结束语

在完成数据记录器设计后,按照设计要求进行实验室测试,步骤如下:

1)将一个文件通过RS-422串口下载到数据记录器中,并以FAT16格式保存;

2)通过本系统的USB主机接口与外部的U盘进行连接,系统对U盘成功枚举后,将数据记录器存储的文件保存到U盘中。

3)通过PC机对U盘中的文件进行分析。一方面,PC可以识别U盘中的文件格式并可以打开;另一方面,通过文件比较软件,将源文件和下载到U中的文件进行比较,并计算误码率。

4)使用不同品牌的U盘,重复上述过程。

按照上述步骤,对各种大小、不同类型的文件,RS-422使用多种波特率,对飞控数据记录器进行大量测试,测试结果表明上传文件全部正确,误码率为零,且支持市面上绝大多数的U盘,从而证明飞控数据记录器设计方案正确和可行,完全摆脱了对PC机的依赖,方便无人机飞行数据的卸载。

[1]王安,钱晓亮,樊文侠.基于ARM的USB接口飞控系统数据记录器的设计[J].测控技术,2007,26(4):37.WANG An, QIAN Xiao-liang, FAN Wen-xia.Design of USB interface for flight control system data recorder based on ARM[J].Measurement&Control Technology,2007,26(4):37.

[2]萧世文.USB2.0硬件设计[M].北京:清华大学出版社,2002.

[3]周立功.ARM嵌入式系统软件开发实例(一、二)[M].北京:北京航空航天大学出版社,2004.

[4]冯光磊,郭忠文,李正宝,等.基于ARM和Linux的USB OHCI驱动的设计与实现[J].计算机应用,2009,29(21):53.FENG Guang-lei, GUO Zhong-wen, LI Zheng-bao, et al.Design and realization of USB OHCI driver based on ARM and Linux[J].Joumal of Computer Applications,2009,29(21):53.

[5]陈智育.嵌入式系统中Flash的文件系统[J].单片机与嵌入式系统应用,2002(1):5-8.Cheng Zhi-yu.The flash system in embedded system[J].Microcontrollers&Embedded System,2002(1):5-8.

[6]冯光磊,郭忠文,李正宝,等.基于ARM和Linux的USB OHCI驱动的设计与实现[J].计算机应用,2009,29(21):53.FENG Guang-lei,GUO Zhong-wen,LI Zheng-bao, et al.Design and realization of USB OHCI driver based on ARM and Linux[J].Joumal of Computer Applications.2009,29(21):53.

猜你喜欢
记录器飞行数据飞控
民用飞机飞控通电自检测安全性研究
机载飞控1553B总线转以太网总线设计
GARMIN1000系统维修平台搭建预研究
02 飞控技术与机场安保引关注
浅谈飞行数据集中处理流程管理
汽车事故数据记录器数据规范及应用进展综述
飞控系统故障告警实时监控软件的设计与实现
民航空管自动化系统中飞行电报自动化处理
列车车厢视频记录器的应用
基于弹载图像记录器的压缩系统设计