汽车行驶记录仪外围扩展器的设计与开发
2017-11-02王珏
王珏
(广东东箭汽车用品制造有限公司,广东佛山528315)
汽车行驶记录仪外围扩展器的设计与开发
王珏
(广东东箭汽车用品制造有限公司,广东佛山528315)
汽车行驶记录仪外围扩展器是在车辆行驶状态记录仪的基础上,增加了视频监控、语言播报、文字信息处理以及司机身份识别等功能的电子器件。介绍了基于ARM7的扩展器软硬件系统设计开发关键技术及其解决方案。借鉴C++面向对象的思想,提出了嵌入式系统开发的结构模块加功能核设计思想。该设计思想及实现方法对于嵌入式软件开发有参考价值。
汽车行驶记录仪;嵌入式系统;面向对象;模块
车辆行驶记录仪或汽车黑匣子主要借助于GPS技术和网络以及软件技术将车辆行驶的基本信息记录下来。车辆行驶记录仪一问世即显示出了强大的生命力和广阔的应用前景,并产生了巨大的社会效益和经济效益。我国汽车行驶记录仪的研究开发始于上世纪80年代[1-3],经过数十年的发展,目前已广泛应用于各种营运车辆和小车。
早前的汽车行驶记录仪没有国家标准,导致相应的产品处于无序开发状态,研究成果主要集中在嵌入式、ARM结构以及Linux环境方面[4]。从2009年开始,相关的产品演变成车载终端,并向多功能化发展,分别在数据存储、图像处理、摄像、3G通信、数据统计分析等方面增强了功能。但由于缺乏标准,研究趋于分散化,主要在总体结构的优化[5-6]、基于ARM9的结构设计优化[7-8]、多功能扩展设计[9-10]以及导航软件等方面开展研究。2012年,交通部发布了《GB/T 1.1-2012汽车行驶记录仪》(简称部标协议),从而统一了记录仪的技术规范。
车载终端扩展器本质上是多功能车载终端的一个标准化产品,它是为了满足公交车辆的营运与管理要求与车载主机接口的一个独立系统,主要与主机进行信息交换,以扩展车载主机在视频监控、语言播报、简单文字信息、司机身份识别、连接电子票箱、历史轨迹查询、公交线路设定、事故疑点信息、出租车调度以及公共事件管理等方面的功能。近几年,笔者的工作主要是开发佛山公交车载终端,即佛山公交车行驶记录仪外围扩展器的开发,本文总结了开发工作的几个关键技术及其实现的方法。
1 扩展器简介
外围扩展器扩展了车载主机的功能,使主机在公交出租行业中,能够发挥更大的效益。扩展器与车载主机相连结,它是具备数据收集与处理、外设对接、语音视频处理、简单文字处理以及司机调度管理等功能的车载辅助设备,它与主机之间的关系如图1所示。
图1 公交主机外围扩展器功能示意图
2 扩展器系统设计
2.1 总体设计
根据公交扩展器的功能要求,扩展器主要包括信号输入、数据保存和处理、数据显示、数据通信、复位电路、掉电保护以及其他辅助功能,相应的设计必须通过嵌入式系统。参考国内外的普遍做法,扩展器的硬件系统以STM32处理器为核心,对外部模拟输入、数字输入以及开关量输入的信号进行采集。将需要保存的数据经过处理后存于内部大容量存储器。硬件系统的总体结构设计如图2所示。
图2 扩展器硬件系统的总体结构示意图
由图2可以看出,扩展器设备除了能够与主机通信以外,还能够在车辆行驶的环境下,随着车辆的运转而运作。利用CPU-STM32芯片的串口映射功能,对接来自不同厂家的不同外围设备进行接口,使得公交出租车辆的电子设备能够统一管理而又独立运行。如果其中一个设备出现故障,则售后管理人员只需将替代者连接到扩展器对应接口的设备替换即可,而不会影响其他外围设备的工作。
2.2 软件系统设计
软件系统是支持扩展器工作的基础。除了需要服从硬件系统的要求以外,软件还需要符合用户的功能需求。鉴于用户需求的丰富性,本文仅介绍驱动扩展器工作的部分。由于扩展器的硬件是基于ARM7系统,因此驱动系统包括10个主要模块,分别是:
(1)主控模块:用于协调主程序的重启、恢复出厂设置。
(2)中断处理模块:用于主程序中的时间中断、定时处理。
(3)数据处理模块:用于各个外部设备与扩展器的数据采集、数据解析。
(4)显示模块:向LED、导航屏传输数字信号和模拟信号。
(5)故障和报警模块:用于处理特殊事件和报警类事故信息。
(6)GPS定位模块:用于GPS实现卫星定位,并接受卫星数据。
(7)数据存储模块:完成常规数据、一些重要数据以及异常时的数据记录。
(8)硬件初始化模块:完成软硬件初始化以及系统参数设置。
(9)PC机通信模块:用于参数设置和测试通信。
(10)ARM平台接口模块:实现测试、数据转发、外围扩展接口。
上述各个模块之间通过中断、时钟、循环相互调用的关系,实现扩展器在其工作过程中的逻辑原理,主要程序及子程序流程图如图3所示。
图3 软件系统各结构模块的数据关联关系示意图
2.3 软件设计的几个关键技术问题
软件设计方面,Boot-APP的系统布局、系统控制优先级的设计以及数据透传机制的设计是十分关键的技术问题。
(1)Boot-APP的系统布局。根据扩展器设备的运行特点,将整体程序设计成两个大的部分,分别是BOOT和APP程序。BOOT是扩展器的底层程序,在ARM7中其地址在0x8000之前,负责完成扩展器的初始化工作,然后引导扩展器执行功能区的APP。APP应用层程序,将在大循环中实现扩展器的全部功能工作,同时扩展器在准备远程更新程序版本时,它将从大循环中跳出,进入BOOT区域,升级后回到APP区域,运行新的更新程序。图4给出了这种Boot-APP分工布局原理图。
图4 Boot-APP分工布局原理图
(2)系统控制优先级的设计。在APP应用程序中,大循环首先需要执行的是扩展器与各个串口之间的数据通信。只有在通讯良好的情况下,才能够处理来自外部设备的数据。因为扩展器与不同外部对接设备,可能在短时间内发送不同厂家协议的数据到达CPU,导致数据堵塞。因此数据处理机制尤为重要,它是全部功能优先级判定的依据。此外,扩展器将根据不同外部设备的需求分类处理不同的信息。例如,它在同一时间收到了摄像头的图片抓拍数据和投币机的投币信息,此时需要将这些数据送达监控中心或后台服务器。由于摄像头的图片数据大量连续,占据很多时间,而来自投币机的数据则只需很少时间处理。因此需要将事件分级建立优先机制。优先处理机制如图5所示。限于篇幅,这里略去具体分级的介绍。
(3)数据透传机制。扩展器对接不同的外部设备,这就需要扩展器与主机通信的过程中采用新的框架协议以区别来自不同设备的数据含义。该框架协议既要符合广东省和国家规定的车辆部标协议,又要统一不同外部设备的不同协议。为此笔者设计了双重嵌套的方式,将外部设备的数据透传给主机。例如,将来自LED显示屏的数据和来自客流统计的数据,按其各自的协议发送到达扩展器后,扩展器将其变换具备透明传输的部标协议发送给主机。主机只需将这些数据依透传方式反编码发给后台服务器。图6给出了这种内部透传机制的作业原理示意图。
图5 数据处理的优先级控制机制示意图
图6 内部数据透传机制作业原理图
3 面向对象的硬件功能模块设计
由于嵌入式系统的资源有限,因而无法像PC机的Windows程序设计一样给每个功能模块以足够的资源。硬件需要结合嵌入式的作业特征来设计。本系统设计中,功能模块是处理某个具体功能需求信息的信息处理方法集合,它由一个具体功能信息分析处理内核与单一或者多个基础结构模块组合而成。可见,每个功能模块都具有一个分析计算特定信息的内核,并且需要一个或者多个结构模块协同才能完成其信息处理的功能。功能模块与结构模块之间存在一个1对多的映射关系,如图7所示。
例如,扩展器的视频监控功能模块,主要用于将视频设备的图片、图像信息转换成为可视化的模拟信号。其中涉及主控模块、中断处理模块、显示模块、数据采集模块、数据存储模块以及图片图像信息转换,如图8所示。图8中,圆角矩形表示功能核部分,方角矩形表示结构模块部分。
图7 功能模块的组成特征
图8 视频监控功能模块组成示意图
基于这样的分析,硬件系统采用了面向对象的思想,即将功能模块定义为功能核+一系列结构模块,类似面向对象类中的私有和公有属性,如图9所示。
图9 功能模块的组成特征示意图
采用这样的设计,功能核不受结构模块的影响,二者之间仅通过通讯联络,可实现分包任务,也可使系统占有最小的资源。这也是嵌入式程序设计的基本要求。在此基础上,将相应的软件系统设计成若干个公有的基础结构模块与处理特定信息的功能核组成。这样一来实现软硬件的协调设计。限于篇幅,相关的实现将在另文给出,这里不再赘述。
4 总结与展望
应用于公交出租的行驶记录仪外围扩展器,可加强车载终端的功能,实现标准化和模块化。借鉴C++面向对象的思想,笔者提出了嵌入式系统开发的结构模块加功能核实现功能模块的设计思想和方法,对过去的工作有很大的指导和促进,它不仅能让技术人员从单一技术的角度从事开发,还能从整体和全局考虑技术方案。该设计思想对于嵌入式软件开发有参考价值。
[1]徐忠阳,邹胜勇,俞宇萍.交通信息化——汽车行驶记录仪和车载GPS的应用[J].交通标准化,2005(7):124-126.
[2]张明明,陈天翼,樊晶光,等.我国汽车行驶记录仪应用现状及对策建议[J].中国安全生产科学技术,2006,2(4):91-95.
[3]潘寒尽,邱学军.GPS发展现状及其军事应用[J].数字通信世界,2011(2):64-66.
[4]彭李明,连迅.多功能汽车行驶记录仪的系统设计[J].电子测量技术,2009,34(3):143-147.
[5]庞丹,任晓奎.汽车行驶记录仪的研究设计[J].微计算机信息,2010,26(8):145-147.
[6]陈艳海.基于Arm-Linux的汽车行驶记录仪的设计[J].中国科技信息,2011(13):84,89.
[7]吕思杨.基于ARM9平台的GPS定位系统的研究与实现[D].长春:吉林大学,2012.
[8]高卫燕.基于ARM_Linux的公交车载GPS定位终端系统设计[D].重庆:重庆大学,2012.
[9]罗亚男.车载导航系统关键技术的研究与实现[D].哈尔滨:哈尔滨工程大学,2013.
[10]贺大胜.智能交通发展现状及在我国的应用研究[D].西安:长安大学,2013.
Design and development of periphery expander for vehicle traveling data recorder
WANGJue
(Guangdong East Arrow Auto Supplies Manufacturing Co.Ltd,Foshan 528315,China)
Periphery expander of vehicle traveling data recorder is an electronic device that adds extra functions to vehicle traveling data recorder in video-monitoring,voice-broadcasting,text-message treating,driver-identification,etc.This article introduces the key issues of developing software and hardware of the periphery expander on ARM 7 system.Based on the thought of C++object oriented programming,the article puts forwards a new embedded-system-developing idea of developing an embedded-system module with a functional kernel module and several constructive modules.The idea and thought are a valuable reference in embedded-system developments.
vehicle traveling data recorder;embedded system;object oriented;module
U463.859
A
2016-12-01
王 珏(1988-),男,湖北安陆人,广东东箭汽车用品制造有限公司工程师。
1008-0171(2017)05-0060-06
【责任编辑:王桂珍 foshanwgzh@163.com】