摘要:针对ARM是目前市场主流的嵌入式系统处理器,具备低电压、低功耗和高集成度等特点,且具有很强的开放性与可扩展性,对于学生学习嵌入式系统课程具有非常好的指导性与代表性,以光电耦合器这种特殊的信号传输元件为基础,设计一种数据物理单项导入设备实验,提高学生嵌入式系统的硬件设计与开发能力。本设计方案主要实现的是U盘文件单向导入功能,将从U盘中文件单向导入到PC机中指定的目录下,在底层的硬件数据传输过程中,创新性的加入了光电耦合器件,从硬件层面保证了数据传输的单向性和不可逆性;同时在USB主机控制芯片上实现了U盘文件的只读控制。该方案能从软件层面和硬件层面保障PC机内部的信息安全。
关键词:ARM开发;光耦合;单项导入
随着计算机技术的高速发展,嵌入式系统被广泛应用于工程、科研及日常生活等各个方面,成为目前国内高校的教学重点[1]。ARM是目前市场主流的嵌入式系统处理器,具备低电压、低功耗和高集成度等特点[2],而且具有很强的开放性与可扩展性,对于学生学习嵌入式系统课程具有非常好的指导性与代表性[3-4]。而本文光电耦合器这种特殊的信号传输元件为基础,设计一种数据物理单项导入设备实验,以提高学生嵌入式系统的硬件设计与开发能力。本实验根据实际教学需求,使用keil、SAM-BA、Visual C++6.0,针对制作完成的ARM开发板进行开发。
1 基于光耦的单向导入
1.1 系统总体设计方案
本设计方案主要实现的是U盘文件单向导入功能。将从U盘中文件单向导入到PC机中指定的目录下。在底层的硬件数据传输过程中,创新性的加入了光电耦合器件,从硬件层面保证了数据传输的单向性和不可逆性;同时在USB主机控制芯片上实现了U盘文件的只读控制。因而,该方案从软件层面和硬件层面保障PC机内部的信息安全。
导入系统采用ARM作为主控器件,控制CH375芯片对U盘的读写操作,从CH375输出的数据,通过光耦后,直接到CY7C68013A的FIFO中,最后通过CY7C68013A芯片实现与PC机之间数据传输,通过PC机上的应用程序保存U盘中的文件。系统结构框图见图1。
图1 系统结构框图
1.2 硬件逻辑结构
下面对系统的工作流程进行详细的描述。U盘插入到单向导入系统,系统自动检测到U盘;用户通过PC机的客户端应用程序运行导入文件的控件,开始进行U盘的单向导入;单向导入设备的从机通过USB2.0总线得到PC机发出的指令,通过解析后,触发CY7C68013A的某一输出口,使得导入设备的主控器ARM开始工作;主控制ARM与CH375发生通信,配置相关接口,读取U盘文件系统的基本信息,为随后的文件传输做准备;当CH375在ARM主控器的控制下,扫描到需要传输的文件,则放入传输队列,开始传输文件;从CH375出来的文件数据流通过光电耦合器后,发送到CY7C68013的FIFO端,最终上传到PC端,通过PC端的用户应用程序解析文件数据流,然后保存文件到指定的目录下;反复进行这个过程,直到整个U盘的文件传输完毕。
单向导入器硬件逻辑结构如图2所示。
图2 硬件逻辑结构图
1.3 硬件选型
按照前面的设计方案,选了以下设备作为本文的核心器件。本文将在随后对每个器件进行简单的说明,见表1。
表1 芯片选型表
1.3.1 USB设备主机控制芯片
本文CH375作为USB主机控制芯片,用来识别和读写U盘,见图3。
图3 CH375结构图
CH375 是一个USB总线的通用接口芯片,支持USB-HOST主机方式。在本地端,CH375 具有8 位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到ARM主控制器的系统总线上。CH375 的USB主机方式支持常用的USB全速设备,外部单片机可以通过CH375按照相应的USB 协议与USB 设备通讯。
CH375 还内置了处理Mass-Storage 海量存储设备的专用通讯协议的固件,外部单片机可以直接以扇区为基本单位读写常用的USB 存储设备(包括USB 硬盘/USB 闪存盘/U 盘)。
1.3.2 USB设备从机控制芯片
本设计方案选用的是CY7C68013A,它广泛用于数据采集、医疗设备之中。
它集成了USB 2.0和USB 1.0的通信协议,支持12 Mb/s的全速传输模式和480 Mb/s 高速传输模式。CY7C68013A的特点:①可以通过外部EEPROM装载固件程序;②工作电压为3.3 V,低功耗;③支持并行8位或16总线传输;④可设置为主从模式;⑤4个集成FIFO可以直接与外设实现“胶连接”。
CY7C68013A逻辑结构框图如图4所示。
图4 CY7C68013A逻辑结构框图
1.3.3 固件存储器
本电路选用24LC64,其功能是存储USB的固件程序。CY7C68013采用“C2加载”模式,使得系统上电后, EEPROM中存储的USB固件程序加载到CY7C68013中的增强型8051的RAM中运行,完成USB从接接口的出发ARM主控器工作和数据传输功能。
24LC64是一款具有 总线接口的串行EEPROM,最大的存储容量为64KB,可以重复擦写100万次,数据可以掉电保存100年。
1.3.4 单向导入器主控器
本设计方案选用ARM7作为USB主机接口芯片的主控器。实现U盘的读写控制。
ARM处理器是世界上最流行的嵌入式处理器,广泛应用于个人通信等嵌入式领域。AT91SAM7S64是Atmel 32位ARM RISC 处理器小引脚数Flash微处理器家族的一员。它拥有64K字节的高速Flash和16K字节的SRAM,丰富的外设资源,包括一个USB 2.0设备,使外部器件数目减至最低的完整系统功能集。这个芯片比以往的8位处理器拥有更加强大的处理能力和更大的存储器。
1.3.5 光电耦合器件
本设计方案选用的是双通道的高速光耦期间HCPL-2630器件。实现了信号的单向传输,且传输速率能达到10 Mbit/s,基本满足了设计的要求(由于受到光耦合器自身传输速率影响,最后产品的理想传输速率为1 MB/s)。
光电耦合器以光为媒介传输电信号。光电耦合器一般由三部分组成:光的发射、光的接收及信号放大。输入的电信号驱动发光二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。
光耦合器的主要优点是:信号单向传输,输 入端与输出端完全实现了电气隔离,输出信号对输入端无影响,抗干扰能力强,工作稳定,无触点,使用寿命长,传输效率高。
1.4 系统功能
本系统主要包括6个功能模块:主机USB接口功能、文件传输功能、缓存管理功能、光耦控制功能、从机USB接口功能、PC机文件接收功能。
软件功能组成如图5。
图5 系统管理软件功能模块
1.4.1 主机USB接口功能
USB主机接口模块是直接与U盘打交道的一个模块,是实现U盘识别与配置,U盘文件读写控制的重要模块。
1)U盘识别与初始化。这个模块实现识别和初始化U盘设备。当U盘插入到导入器时,该模块会根据USB总线上电压跳变情况,自动检测到U盘设备;当检测到U盘之后,对U盘设备进行初始化和配置相关的参数。
2)U盘文件目录获取。由于CH375内置了处理Mass-Storage海量存储设备的专用通信协议的固件,所以ARM主控器可以通过CH375将U盘作为可移动的大容量存储器。常常U盘都是以FAT32的文件系统来存储数据。所以,ARM控制系统需要直接读取U盘中的文件系统,可以直接调用CH375文件级子程序库提供的接口API,由子程序库处理文件系统。获取到U盘文件目录后,保存到一个队列,然后按照这个队列进行传输。
1.4.2 文件传输功能
1)文件传输管理。因为CH375提供了U盘文件级子程序库,ARM主控器可以直接调用子程序读写U盘中的文件数据。CH375的U盘文件级子程序库支持常用的FAT32文件系统。ARM控制系统不需要考虑文件系统,只需要了解文件名、文件长度等基础信息。因为,U盘中所有文件都是一组数据的集合,以文件名区分和识别。
ARM主控器需要从U盘的FAT开始读取根目录中的信息,从而获取U盘所有文件的文件名、文件长度等信息。然后将U盘中所有文件的基本信息放入传输队列进行等待传输。
2)文件自动推送。文件自动推送,是将文件队列中的文件依次推送到8位并行数据总线上。本设计的文件自动推送过程具体如下。在FAT32文件系统中,一个文件可以由若干个簇组成,这些簇的链表存储在U盘的FAT区中;一个簇有8个扇区组成。当读取一个文件时,找到该文件的首簇地址,进入该簇并读取簇内的8个扇区的内容;当读完一个扇区,判断是否这个簇的所有扇区都读完了,否则返回继续读下一个扇区;当簇的所有扇区都读完之后,判断该文件是否还有下一个簇要读取,如果有继续读取下一个簇的内容;如果文件的所有簇都读取完了,就进入下一个文件的自动推送,直到所有文件都传输完毕。文件传输模块的流程图如图6所示。
图6 CH375文件传输流程图
1.4.3 缓存管理功能
本设计中,缓存管理模块主要有两个作用。
1)将CH375输出的8位数据总线上的数据与命令分开,实现文件数据的正确传输。CH375的数据和命令都是通过这个8位数据总线传输的。USB主机接口芯片CH375,当A0=1时可以写命令,当A0=0时可以读写数据;我们将CH375的A0口与锁存器连接,可以实现数据与命令的分离。
2)保证8位总线上的传输的速率与光耦控制模块的工作频率相当。数据传输过程中,如果总线上传输数据的速率超过了光电耦合器件最大的工作频率,那么部分数据就会丢失,会给整个系统造成了误差,甚至传输的数据根本不能使用。加入了缓存器之后,我们可以根据光耦的平均传输速率。
1.4.4 光耦控制功能
光耦控制功能的硬件是采用多片光耦并行传输来实现数据电气隔离,数据不能反向传输。光耦控制功能主要是实现多个光耦之间并行传输与时序控制。
光耦一般由三部分组成:光的发射、光的接收及信号放大。输入的电信号驱动发光二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。
光电隔离的典型电路如图7所示。
图7 光电隔离的典型电路
1.4.5 从机USB接口功能
1)USB设备初始化。这里USB设备的初始化与前面的主机USB初始化有很大的不同。前面的USB设备初始化,主要是针对U盘的配置。
在这里,主要完成的是,当单向导入设备上电的时候,USB设备自动完成设备的枚举,从EEPROM下载程序到USB设备的ram中运行,满足客户独特的需求。同时,在PC机的设备管理器里,我们会发现新的USB设备,进行驱动的安装之后,我们开发的单向导入设备才可以正常的工作。
2)USB传输模块。当8位数据总线通过光耦之后,CY7C68013在SLWR信号的驱动之下,将总线上的数据传输到CY7C68013A的FIFO,当FIFO中的数据达到512 K时,自动将其打包送到PC机的USB2.0总线上,实现了PC机与单向导入器之间的数据传输功能。CY7C68013A中的FIFO模块中有4片相同的FIFO,当FIFO满的时候,则将数据打包上传,上传完之后,由进入下队列等待下面的数据传输,实现了数据传输的无缝胶合。
1.4.6 PC机文件接收功能
PC机文件接收模块,也是本设计的核心内容之一。它完成的包括以下内容:启动USB设备、检测USB设备、配置USB设备、启动文件传输、判断文件是否传输完、判断目录是否传输完、保存文件、推出系统。
在这个模块中,判断一个文件是否传输完成、判断U盘中所有文件是否都传输完成是需要对USB总线上传的数据进行分析。如果查询得到文件尾部的标记,则完成了这个文件的传输,同时保存文件,进行下一个文件的传输或者传输结束,关闭设备。文件的保存也需要对FAT32文件格式有深入的了解。通过相关函数,把文件保存到用户指定的区域中。整个PC机文件接收模块的流程如图8所示。
图8 PC机文件接收模块
2 ARM控制系统的程序开发
2.1 ARM控制系统程序开发
主要是开发ARM的控制程序,分别对USB主机接口芯片进行控制,机U盘文件级操作,同时完成文件的传输过程。
开发工具:ADS1.2。ADS(ARM Developer Suite),是在1993年由Metrowerks公司开发是ARM处理器下最主要的开发工具。ADS 是全套的实时开发软件工具,包编译器生成的代码密度和执行速度优异。可快速低价地创建ARM 结构应用。
2.2 USB从机固件程序和驱动程序的开发
本文采用Cypress公司EZ-USB Fx2系列芯片CY7C68013A,USB部分的软件设计主要包括CY7C68013A的固件程序设计与USB驱动程序的设计。
USB固件程序通过EZ-USB控制面板软件下载到EEPROM中。当USB设备上电时,固件程序加载到CY7C68013A的RAM中运行,完成设备的初始化以及相关特殊功能寄存器的配置。
USB驱动程序是连接采集设备与计算机的桥梁。USB驱动程序负责硬件与Windows操作系统打交道,安装USB驱动程序之后,Windows系统识别USB设备,用户应用程序采集USB总线上的数据。
开发工具:Keil uVision3。
2.3 PC机客户端应用程序的开发
用户应用程序是基于Visual C++ 6.0平台开发的。Visual C++ 6.0是微软公司推出的一个基于Windows系统平台集成开发环境。Visual C++ 6.0是一个功能强大的可视化软件开发工具。Visual C++6.0包含有编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。基于光耦的单向导入。
3 专用USB存储介质认证电路设计
为了提高专用USB存储介质使用的安全性,本项目将采用专用USB存储介质与导入器之间通过逻辑电路认证来实现USB存储介质的硬件认证。通过采用该认证电路后,可以保证USB存储介质具有以下安全特性:①保证专用USB存储介质接入到导入器以外的任何设备,都无法激活存储区,无法工作。②保证专用USB存储介质无法回避认证电路进行设备直连。
如图9所示,整个认证电路分为两大部分:一个是认证信号发生器,另一个是认证逻辑电路。
3.1 认证信号发生器
认证信号发生器是放置在导入器中的一个认证电平信号发生器,当有专用USB存储介质接入导入器后,其USB口线中的一个专用认证线与导入器中的认证信号发生器连接,电路连通,认证信号发生器被激活,并发送一个认证电平(高电平或者低电平)。
3.2 认证逻辑电路
认证逻辑电路放置于专用USB存储介质中,当导入器中发出认证信号后,认证信号Q在USB接口后端被转换为两个反相信号与,然后将与信号分别与来自于ARM控制器中对RAM的控制信号进行逻辑运算,保证逻辑运算后输出正确的控制信号给RAM。当没有认证信号到来时,ARM控制器信号经过逻辑运算后将给出错误的控制信号,RAM将不工作。
图9 认证电路原理图
4 结 语
《嵌入式系统》教学需要改革,使其能够提高学生的动手能力与设计能力,让学生能够通过实践操作熟练掌握ARM嵌入式系统的开发方法,提高学生的创新能力与综合素质。