基于μC/OS-II的便携式飞行参数数据卸载器
2012-01-19刘文波
蒋 韬,刘文波
(南京航空航天大学自动化学院,江苏南京 210016)
基于μC/OS-II的便携式飞行参数数据卸载器
蒋 韬,刘文波
(南京航空航天大学自动化学院,江苏南京 210016)
飞行参数数据卸载器作为民用和军用飞机普遍配置的设备,在地勤维护、飞行事故预防和调查分析以及飞行质量评估等方面起着重要作用。随着飞行参数数据量的加大以及对飞行参数使用要求的提高,逐渐暴露出一些影响飞行参数正常使用的问题,其中误码率高、数据卸载速度慢、飞行参数卸载设备型号多等是影响其工作的关键。因此,文中介绍了一种新型的便携式飞行参数数据卸载器,利用嵌入式技术实现其小型化、模块化、可视化,提高了飞行参数使用效率,有效地降低误码率以及实现数据高速转录。
STM32;飞行参数卸载;μC/OS-II;μC/GUI;USB存储
随着嵌入式系统的广泛应用和功能的不断强大,对系统中人机界面的要求也越来越高,因此在嵌入式系统中加入图形用户界面得以广泛运用。为充分发挥32位处理器的功能和性能优势,提高系统的可靠性,使操作更加人性化,更多的工程师在其项目开发中选择移植嵌入式实时操作系统(RTOS)和图形用户界面(GUI)。基于ARM Cortex-M3内核的STM32系列处理器具有性能优异、功耗超低、接口方便、集成度好、开发容易等优点,针对国内某型号飞机飞行参数检测设备体积大、结构复杂、数据卸载速度慢、误码率高等问题,设计出基于嵌入式实时操作系统μC/OS-II的便携式飞行参数数据卸载器,可解决以上问题。
μC/OS-II是一个可裁剪的实时操作系统多任务内核,可根据实际需求量身定做地加载一些模块,如图形界面、文件系统、TCP/IP等,使μC/OS-II成为一个面向问题的实用嵌入式操作系统[1]。文中首先介绍飞行参数记录系统,然后介绍如何在STM32系列处理器上移植μC/OS-II和图形界面μC/GUI以及飞行参数数据卸载器的功能实现。
1 飞行参数记录系统
飞行参数记录系统测试对象为国内某型战斗机所装备的飞行参数记录仪,其用于记录飞机的各种飞行参数和机载设备的工作状态信息,为在地面对飞机的飞行状态和机载设备工作状态进行分析提供原始数据。飞行参数记录系统主要由信号转换器、磁带记录器、电源3部分组成,其结构框图如图1所示。
图1 飞行参数记录系统的组成
信号转换器的主要功能是将来自飞机的各种传感器参数处理和转换成9位二进制并行数字信号,同时产生循环脉冲和地址同步脉冲,并产生相应逻辑控制信号,控制磁带记录器正、反转等工作状态。
电源部分的主要功能是为信号转换器、磁带记录器和电源故障指示等部件可靠地提供所需的直流稳压电源,同时输出设置时间和飞行架次两个辅助参数的信号到信号转换器。
磁带记录器的主要功能是完成对经信号转换器转换后输出的不同工作状态下原始信息的记录和输出。磁带记录器在写入数据时,写入的是信号转换器输出的12位并行码。读出时,将记录数据以12位并行码形式输出,输出数据的速度是写入数据速度的10倍,当检测到有循环脉冲时,通过D触发器锁存上升沿信号,可有效克服因黑匣子中磁带偏离导致的数据丢失现象,使采样数据合格率达到99.9%以上,有效地降低飞行参数误码率[2]。
2 飞行参数数据卸载器
文中设计的飞行参数数据卸载器主要由Flash存储模块、矩阵键盘模块、LCD驱动模块及USB传输模块等组成,其硬件连接图如图2所示。
图2 飞行参数数据卸载器硬件连接图
2.1 Flash存储器模块
STM32处理器通过SPI接口连接Flash存储器并与其进行串行通信,当配置SPI为主设备时,STM32为Flash存储器提供连接时钟SCK[3]。当GPIO口开始读取12位并行码数据时,定义双缓冲数组,将每2 Byte数据分别存入待写Flash的地址,在写入内容前,必须保证将要写入的地址处于被擦除状态。选用64 Mbit Flash芯片,与STM32实现数据传输时,具有快速时钟周期、高可靠性、低功耗等优点,在技术上成功解决高速转录问题,转录速度最快可达5 120 bit/s,即下载速度为 20∶1。
2.2 矩阵键盘模块
键盘控制器ZLG7289与STM32处理器之间的通信采用SPI接口方式,但由于JTAG和Flash都需要用到SPI接口通信,考虑到键盘读取对实时性要求不高,所以使用IO口模拟SPI来读取键盘数据。时钟、片选、数据信号这3根线完成与ZLG7289之间的相关通信。
当键盘中有键按下时,ZLG7289的中断信号线由高电平变为低电平,通知STM32已有按键按下,STM32此时通过数据线得到键盘控制器输出的按键码值,从而得知具体的按键,并作出响应。
2.3 LCD驱动模块
LCD驱动模块接口有总线式和模拟IO式两种,总线式有较快的数据传输速度,由于STM32有大量IO口,为配合μC/GUI底层驱动,文中采用IO口模拟8080总线接口连接STM32和由CPLD+SDRAM组成的LCD驱动板。驱动板的原理是:SDRAM相当于显示缓存,CPLD产生SDRAM和LCD的控制时序,一方面配合STM32将数据写入SDRAM,另一方面是将SDRAM中的数据不断地刷新到屏上。每次点亮LCD时对其进行复位,通过命令数据选择线来控制从STM32中写入的是命令还是数据,从而完成相应的显示功能。
2.4 USB传输模块
便携式飞行参数数据卸载器要求有U盘卸载数据功能,因此采用 CH376芯片实现 U盘的读写。CH376是文件管理控制芯片,用于STM32读写U盘中的文件。CH376支持USB设备方式和USB主机方式,支持常用的USB存储设备。文中设计STM32通过SPI通信接口控制CH376芯片,将卸载的数据存入U盘。
3 嵌入式系统移植及实现功能
嵌入式实时操作系统μC/OS-II是一个可移植、固化、裁剪的占先式实时多任务内核,要想在μC/OSII内核上进行应用程序的开发,就要在μC/OS-II的基础上建立完整的实时操作系统。一个相对完整的嵌入式实时多任务操作系统,需要进行较多扩展工作。为外部设备建立相应的API函数,创建图形用户界面函数和建立文件系统等。
μC/OS-II的工作流程为首先进行操作系统初始化OSInit(),主要完成任务控制块初始化。随后就可以开始创建新任务OSTaskCreate()、初始化任务堆栈区。最后调用0SStart()函数,启动多任务调度。在多任务调度开始后,启动时钟节拍源开始计时。当中断时,系统把当前正在执行的任务挂起,保护现场,进行中断处理。
μC/GUI是μC/OS-II设计者所开发的一种用于嵌入式应用的图形支持软件。μC/GUI的主要特点有:通过可选组件可以实现个性定制。具有丰富的开发工具和小封装的特点。可适用各种内存容量的系统。相比较其它常用的GUI而言,μC/GUI具有其独特的优势,并且可以方便地移植到 μC/OS-II系统上[4]。
3.1 系统软件移植
文中基于μC/OS-II内核系统软件结构的整体框图如图3所示。
图3 系统软件结构整体框图
(1)系统外围设备的硬件部分。系统外围设备的硬件部分是保证系统能够实现指定功能的最底层的部分。系统外围设备硬件部分包括:液晶屏LCD、Flash存储器、文件管理控制芯片、键盘驱动芯片、JTAG调试接口等。
(2)驱动程序模块。驱动程序是连接底层的硬件和上层的应用程序接口API函数的纽带,每个器件的开发都有一个通用API驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。如stm32f10x固件库里提供了各种资源的接口,可方便地利用库函数对GPIO、SPI等外设接口进行编程。
(3)操作系统的API函数。在操作系统中提供标准的API函数,可以加速用户应用程序的开发,在API函数中,提供了大量的常用模块简化应用程序的编写,如任务管理函数、时间管理函数、信号量管理函数等。
(4)实时操作系统的多任务管理。μC/OS-II作为操作系统内核,主要任务是完成多任务间的调度和同步。在建立多任务时指定优先级,对μC/OS-II这个可剥夺内核而言,让进入就绪态的优先级最高的任务开始运行。
(5)用户应用程序。用户的应用程序建立在系统的主任务基础之上。用户应用程序主要通过调用系统的API函数对系统进行操作,完成用户的要求。在用户的应用程序中也可以创建自己的任务。任务之间的协调主要依赖于系统对任务的调度以及任务优先级的分配。
(6)通用图形界面。用户将配置好LCD驱动的μC/GUI加入μC/OS-II实时操作系统之中,利用一个任务对 GUI进行初始化,随后进行相应的功能显示。
3.2 飞行参数数据卸载器实现功能
飞行参数数据卸载器的软件设计目前分为波形显示、键盘中断、Flash读写和USB存储数据4个部分。以加入优先级低于主任务的低功耗任务,可以保证在外场长时间操作。程序开始时初始化μC/OS-II,然后创建新任务,启动多任务调度后,系统就进入了多任务操作系统状态。系统根据优先级,开始Mytask任务,μC/GUI初始化,显示波形和其他飞行参数信息。在多任务环境中,处理器会响应中断,当有按键按下时,会进入按键中断服务子程序,从而进入不同的工作状态和界面。系统主任务流程如图4所示。
图4 系统主任务流程图
在数据卸载时能够显示工作状态、卸载方式和查看方式,在显示波形时可以同时显示时间、日期、架次等信息及误码率,显示界面可根据需要同时显示多个波形,在波形动态移动时,若使用简单的Draw函数,波形闪烁强烈,是因为直接将数据显示在波形上而造成的图像闪烁。解决办法为利用GUI_MEMDEV_Draw()进行绘图,其在执行时会调用回调函数[5],基本可以消除显示屏上的闪烁。
4 结束语
嵌入式实时操作系统μC/OS-II和图形用户界面μC/GUI为便携式飞行参数数据卸载器提供了新的思路,STM32系列微处理器较以往的8位单片机或工控机而言,丰富的外设接口及高性能提供了更多的功能,加入大尺寸液晶屏显示创造了良好的人机界面,在STM32上移植 μC/OS-II和 μC/GUI,其实时性、多任务、可视化及小型化的特点,以及该设计中D触发器锁存信号降低误码率及最高5 120 bit/s高速数据转录的实现,可提高飞行参数数据卸载器的功能应用和使用效率。
[1]LABROSSE J J.嵌入式实时操作系统 μC/OS-II[M].邵贝贝,译.北京:北京航空航天大学出版社,2003.
[2]王文杰.便携式飞行参数记录仪测试系统的设计[D].南京:南京航空航天大学,2009.
[3]王永虹,徐炜,郝立平,等.STM32系列 ARM Cortex-M3微控制器原理与实践[M].北京:北京航空航天大学出版社,2008.
[4]王同刚.基于S3C44B0X的服务机器人嵌入式控制系统的研制[D].哈尔滨:哈尔滨工业大学,2006.
[5]Micriμm Inc.Graphical user interface with graphic library[M].USA:Micriμm Inc,2002.
[6]邸兴,陈见,韩俊.基于STM32的便携式人机界面系统[J].电子设计工程,2011(5):100 -103.
Portable Unloader for Data of Flight Parameters Based on the μC/OS-II
JIANG Tao,LIU Wenbo
(College of Automation Engineering,Nanjing University of Aeronautics and Astronautics,Nanjing 210016,China)
The portable unloader for the data of flight parameters is generally used in civil and military aircraft.It also plays an important role in ground maintenance,prevention and investigation of flight accidents and flight quality evaluation.With higher requirements and larger data of flight parameters,some problems are exposed and have had many negative effects.Both high error rates and slow data unloading are the key elements that affect its work.A new portable unloader for the data of flight parameters is therefore introduced in this paper.By the embedded technology,we achieve a small,modularized and visual unloader which realizes high flight efficiency,low error rates and a high-speed data transcription.
STM32;flight parameters unloading;μC/OS-II;μC/GUI;USB storage
TP316.2
A
1007-7820(2012)06-041-04
2011-12-22
蒋韬(1987—),男,硕士研究生。研究方向:嵌入式系统。刘文波(1968—),女,教授,博士生导师。研究方向:数字信号处理,非线性动力系统分析,计算机测试与控制。