刘 军,金 蕾,张方方
(1.西安邮电大学 计算机学院,陕西 西安 710121;2.西安邮电大学 电子工程学院,陕西 西安 710121;3.广州致远电子有限公司 广东 广州 510660)
近年来,随着中国汽车工业的发展,越来越多的人喜欢开私车出行,所到之地也越来越广,传统的“看地图,找地名”方式已很难为车主提供具体客观的路况等信息,各式各样的导航系统方兴未艾。
市面上的导航系统一般只提供道路、地点等静态信息,基本不提供道路拥堵及停车场车位情况等动态实时信息。而且基于Internet的实时路况查询系统一般都基于个人计算机,远没有嵌入式系统方便实用[1-2]。因此,本文利用SOPC工具进行系统设计时,硬件与软件系统的可裁减性,开发了一个“基于NOIS II多核智能交通车载终端”的系统,本系统的设计充分利用双Nios II软核的多种功能和特点,所有的控制和数据处理都是在一片FPGA生成的双Nios II软核处理器的管理下进行,充分体现了高度集成的SOPC解决方案,摆脱了传统软件依赖于硬件的开发模式[3-4]。
考虑到要向客户提供道路拥堵情况等实时信息,该系统采用客户机—服务器模式,将地图等静态信息存放于车载终端中,而实时的动态信息由后台服务器在用户发出请求后,通过无线通信模块传送给用户[5-6]。系统组成如图1所示。
图1 系统组成图Fig.1 System diagram
本系统设计分为软件和硬件两大部分。硬件结构如图2所示。
图2 硬件系统框图Fig.2 Hardware block diagram of system
其中CPU1运行应用程序(GUI),CPU2运行GPS模块和GPRS模块,CPU1与CPU2间通过3个互斥核通讯。其中GPS用于GPS模块与GUI键的通讯,GPRS_TX用于 GPRS向GUI发送数据,GPRS_RX用于GUI向GPRS发送数据[7-8]。
软件结构如图3所示。
图3 软件系统框图Fig.3 Software block diagram of system
μC/OS II是我们整个GPRS通信模块的基础,通信模块所有任务的调度和各个任务之间的通信都是依靠μC/OS II完成的,主要用来调度Task_start(主控任务)、Task_GPS_Send(从串口接受 GPS数据并向 GUI发送 GPS信息)、Task_GPRS_Send(向 GUI发送后台传来的数据)、Task_GPRS_TCP_Send(向后台发送前端服务请求)等9个任务。
μC/GUI不仅提供了丰富的界面元素(窗体,各种控件)和绘图函数,同时也提供了很好的颜色管理和汉字支持,对硬件也提供了良好的底层驱动支持。我们的应用程序正是基于这样的图形用户接口开发的[9]。
由于uc/GUI的调用关系复杂,地图数据的处理过于庞大,导致μC/OS II调度GUI所需的堆栈太大,调度效果很不理想,于是决定抛弃μC/OS II,提出双核设计,即满足了 uc/GUI运行于无操作系统环境中,又保证GPS和GPRS运行于有操作系统环境中。设计思想如下:
第一个CPU的功能:
1)人机交互,不设置操作系统;
2)μC/GUI及应用程序的运行。
第二个CPU的功能:
1)设置嵌入式实时μC/OS II操作系统;
2)通过UART1串口接受前端GPS数据;
3)通过UART2(自定义扩展)串口与GPRS模块通信。
2个NiosII软核通过mailbox进行软核间的通信。
Altera提供的双核互斥通讯机制使用效果不能满足系统要求,于是编写了邮箱机制来实现双核间的互斥通讯。
互斥信号量(mutex)是解决双处理器争用存储器的关键。它的位宽为2x32bit(见表1)。首先将VALUE值置0x0000,RESET位赋‘1’,使能mutex。而在多核的环境中也可以用信箱(mailbox)在多核之间进行通信,mailbox含有的互斥信号量(mutex)仅仅在同一时刻使一个CPU修改mailbox里面的内容,基于两者的优点,在互斥信号量的基础上用信箱的方式来解决双处理器争用存储器的问题。下面分别是共享存储器和信箱的结构体:
表1 互斥信号量Tab.1 Mutual exclusion semaphore
μC/GUI不仅提供了丰富的界面元素(窗体,各种控件),绘图函数,以及颜色管理和汉字支持,同时对硬件也提供了良好的底层驱动支持。在μC/GUI的基础上,使用压缩位图作为存储格式开发的智能交通导航系统界面如下:
首先定义GUIConf.h和LCDConf.h这两个文件,GUIConf.h是μC/GUI功能模块和动态存储空间 (用于内存设备和窗口对象)大小,默认字体设置等基本GUI预定义控制的定义。LCDConf.h为LCD大小,控制器类别,总线宽度,颜色选取等LCD参数控制文件。
GUI/CORE/LCD_ConfDefaults.h文件内可以找到所有囊括LCD配制默认选项,包括LCD屏个数,控制器个数,调色板,屏幕反向设置等众多配制选项。如果配备触摸屏可以通过GUITouchConf.h进行配制,根据触摸屏及其控制芯片编制以下几个函数:
void TOUCH_X_ActivateX (void);//准备 X 轴数据测量
void TOUCH_X_ActivateY (void);//准备 Y 轴数据测量
因为在本系统的软件中不需要测量X、Y轴的数据,所以以上两个函数均为空结构体;
int TOUCH_X_MeasureX (void);//根据AD转换结果返回X的值
int TOUCH_X_MeasureY (void);//根据AD转换结果返回Y的值
以上几个函数在GUI_TOUCH_Exec()会被调用,将它们写好即可。
虽然μC/GUI自身提供了RLE算法,但解压时要全部解压,会占用大量的内存和CPU,而对于本系统并不需要完全解压,在地图中主要以白色为主而且是连续的,因此采用了类RLE算法,即只压缩白色像素,以压缩率的微弱降低来换取更快的压缩速度,而且在解压时采用部分解压,即只解压屏幕上显示部分,大大减少了内存使用量。在实际操作中制作的地图达4.1M,而Altera的DE2板子的Flash只有4M,如果不采取压缩算法,地图根本无法运行,经过类RLE算法,地图压缩到了2.45M,节省了DE2板的Flash。
图4 导航系统界面Fig.4 Navigation system interface
服务器端软件是由Microsoft SQL2000和Microsoft Visual Studio.NET 2003完成的,数据库中主要包括的是酒店、商场、医院、车站、加油站及道路等信息,而.NET主要完成了界面的设计、算法设计和数据处理等。后端服务器软件的登陆界面如图5所示。
由于后端服务器可以实时的将路况的信息反馈给车主,本车载终端可用作交通部门的数据采集终端,假设交通部门装配了一定数目的该系统(比如安装在公交车、出租车上),则交通部门可以通过该车载终端发送的位置信息 (当然,用户也可以不发送)了解道路拥堵情况。算法设计如下:
N为某条道路S上装配该设备的车辆数目;
图5 后端服务器软件登陆界面Fig.5 Back-end server software interface
R为这些车辆的平均行驶速度(一定时间内,该时间会大于红绿灯的红灯时间,以免造成误判断);
R0为该路段限速最大值。
若R<<R0且N大于一定数目 (减少可能存在的司机停车情况对结果的影响),我们可以认为该路段拥堵,R越小则拥堵越严重。
为了更好的将道路实时信息反馈给车主,方便车主与控制中心联络和通信,本系统外置了GPRS模块,通过串口和FPGA中的NiosII软核联系。车主可以直接发送服务请求给后端的监控中心,并获得相关的服务,同时后端通过采集道路信息而及时了解道路交通情况。由于SOPC系统构件中硬件和软件的可裁剪性,使得系统开发过程中软硬件设计可以协同开发,几乎可以同时开始和同时完成,优势明显,加快了产品上市的进程,并可以保持一个较长的产品生命周期[10]。即使在开发过程中需要修改一些定义,也只需重新生成新的NiosII内核,对于其他的外围器件或者是NiosII程序没有任何影响。
[1]HungA,BishopW,AndrewKennings.Symmetricmultiprocessing on programmable chips made easy[J].1530-1591/05 IEEE.
[2]王卫源,戴紫彬,钱育蓉.NiosⅡ多处理器系统方案设计[J].微计算机信息,2007,7(2):96-97.
WANG Wei-yuan,DAIZi-bin,QIAN Yu-rong.Nios Ⅱmultiprocessor system design[J].Control&Automation,2007,7(2):96-97.
[3]李兰英.NiosII嵌入式软核SOPC设计原理及应用 [M].北京:北京航空航天大学出版社有限公司,2006.
[4]周航慈.基于嵌入式实时操作系统的程序设计技术[M].北京:北京航空航天大学出版社,2011.
[5]陆明,冯志勇.基于嵌入式SoC的车载系统设计与实现[J].微处理机,2008(4):174-176.
LU Ming,FENG Zhi-yong.Design and implementation of vehicle system based embedded SoC[J].Microprocessors,2008(4):174-176.
[6]Vanlvanno J W.嵌入式微计算机系统实时接口技术[M].李曦,周学海,方潜生,等译.北京:机械工业出版社,2003.
[7]张佐经,吴旭光.基于GPS和GPRS模块的车载导航定位系统设计[J].计算机测量与控制,2008,16(7):997-1000.
ZHANG Zuo-jing,WU Xu-guang.Design of multi-functional development board based on GPS module and GPRS module[J].Computer Measurement&Control,2008,16(7):997-1000.
[8]史军勇,张晓煜.基于GPRS的实时路况车载导航终端研究与实现[J].计算机技术与发展,2011,21(9):156-159.
SHI Jun-yong,ZHANG Xiao-yu.Study and implementation of real-time traffic information navigation terminal based on GPRS[J].Computer Technology and Development,2011,21(9):156-159.
[9]邵贝贝.嵌入式实时操作系统μC/OS-II[M].北京:北京航空航天大学出版社,2003.
[10]江国强.SOPC技术与应用[M].北京:机械工业出版社,2006.