周博
(天津工业大学信息与通信工程学院,天津300160)
早期高校校园面积相对较小,学校的教学区、生活区、学校的各个部门都相对集中,从校园一个区域到另一个区域只需要很短的时间,部门的搬迁也可能在同一栋或相邻的两栋之间,即使导航出错,带来的负面影响也相对较小。校园导航基本上采用平面示意图即可解决。
随着高校的发展,校园面积也由原来的上百亩扩大到上千亩,教学区、办公区、生活区、活动区等在地理位置上相对变得疏远,那么跨区域活动在区间往复的时间成本越来越高,中间稍有耽误,将不能按照预定时间到达目的地,给我们的生活学习带来不便。早期的校园平面示意图导航表现出种种弊端,逐渐不能满足新形势下校园导航的要求。新的导航系统的设计势在必行。
s3C2410X微处理器是Samsung公司推出的16/32位RISC处理器(RAM920T内核),适用于手持设备、POS机、数字多媒体播放设备等等,具有价格低、低功耗、高性能等特点。S3C2410X提供了丰富的内部设备,采用ARM920T内核,0.18um工艺的CMOS标准宏单元和存储器单元。它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。同样它还采用了AMBA新型总线结构。S3C2410X提供了一系列完整的系统外围设备,消除了为系统配置额外器件的需要,大大减少了整个系统的成本。S3C2410X主要特征如下[4]:
(1)203Mhz的ARM920T内核,支持JTAG仿真调试。
(2)16KB的1-Cache;
(3)具有MMU,支持WinCE、EPOC32、Linux等操作系统;
(4)外部存储器控制器(SDRAM控制和片选逻辑),共分8个Bank,每个Bank可以访问128MB空间。
(5)片内4KB SDRAM,可用作NAND Flash系统引导的缓冲区;
(6)LCD控制器(最大支持4K色STN和256K色TFT),1通道LCD专用DMA;
(7)4通道DMA,有外部请求引脚;
(8)3个UART(IrDA1.0,16字节RxFIFO);
(9)2个SPI总线接口;
(10)1个多主IIC总线接口;
(11)1个IIS总线接口;
(12)兼容SD主接口协议1.0版和MMC卡协议2.11兼容版;
(13)NAND Flash/SM卡接口,支持NANDFlash系统引导;
(14)2个USB主机接口,I个USB设备接口(V1.1);
(15)4个PWM定时器和1个内部定时器;
(16)看门狗定时器;
(17)117个通用I/O口;
(18)24个外部中断;
(19)8通道10位ADC和触摸屏接口;
(20)具有日历和时钟功能的RTC;
(21)1.8V内核供电,3.3V存储器供电,3.3V外部I/O供电;
(22)功耗控制模式:普通,慢速,空闲和掉电模式;
(23)具有片内PLL时钟发生器。
μC/OS-II是一个完整的、可移植、可固化、可剪裁的、占先式实时多任务内核。μC/OS-II是用ANSI C语言写的,包含一部分汇编语言,使之可以供不同架构的微处理器使用。μC/OS-II可以管理64个任务,具有信号量、互斥信号量、事件标志组、消息邮件、消息队列、任务管理、时间管理和内存块管理等系统功能[1,2]。
μC/OS-II包括以下三个部分:
(1)μC/OS-II核心代码:包括10个C程序文件和1个头文件,主要实现了系统调度、任务管理、内存管理、信号量、消息邮箱和消息队列等系统功能。此部分的代码与处理器无关。
(2)μC/OS-II配置代码:包括2个头文件,用于裁剪和配置μC/OS-II。此部分的代码与用户实际应用相关。
(3)μC/OS-II移植代码:包括1个汇编文件、1个C程序文件和1个头文件,这是移植μC/OS-II所需要的代码。此部分的代码与处理器相关。(说明:移植代码的文件名不是固定的,但为了保持μC/OS-II系统的一致性,文件名一般也不要改变。即:OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C)。
GPS(全球定位系统)具有全球、全天候工作,定位精度高、功能多、应用广的特点,通过GPS接收机可以实现精确的自主定位,为实现精准的定位和导航奠定了基础。GPS系统包括三大部分:空间部分—GPS卫星星座;地面控制部分—地面监控系统;用户设备部分—GPS信号接收机。本文主要涉及GPS信号接收机部分。它的硬件和机内软件以及GPS数据的后处理软件包,构成完整的GPS用户设备。主要任务是:能够捕获到按一定卫星高度截止角所选择的待测卫星的信号,并跟踪这些卫星的运行,对所接收到的GPS信号进行变换、放大和处理,以便测量出GPS信号从卫星到接收机天线的传播时间,解译出GPS卫星所发送的导航电文,实时地计算出测站的三维位置、三维速度和时间。
本嵌入式导航系统的硬件核心是三星公司的ARM9系列中的16/32位RISC处理器S3C2410芯片,该芯片强大的实时处理能力和丰富的外围接口非常适合嵌入式系统的开发,本系统正是基于该芯片的这些特点而设计的。
该系统以S3C2410微处理器为核心,与一片64MB的SDRAM、一片64MB的NAND Flash和一片2MB NOR FLASH组成。外部添加了用于接收GPS信号的GPS模块,用于显示的液晶面板以及键盘输入模块。
该嵌入式系统采用uC/OSII操作系统,由于MCU的处理功能有限,所以在具体的软件实现过程中采用多线程技术。主控线程主要实现界面功能、导航功能中的地图匹配和导航引导模块、浏览功能中的地图浏览模块以及这些模块间的消息派送、接收和处理,同时协调各个工作线程异步运行。
移植μC/OS-II之前需要注意,目标处理器必须满足以下几点要求:
(1)处理器的C编译器能产生可重入型代码;
(2)处理器支持中断,并且能产生定时中断;
(3)用C语言就可以开/关中断;
(4)处理器能够支持一定数量的数据存储硬件堆栈(可能是几千字节);
(5)处理器有将堆栈指针以及其它CPU寄存器的内容读出,并保存到堆栈或内存中去的指令。
S3C2410A微控制器可以满足第2、4和5点要求,使用ADS 1.2的C编译器可以满足第1、3点要求。使用ARM公司提供的ADS1.2集成开发工具新建一个工程,将μC/OS-Ⅱ2.52V的源代码拷贝到工程文件下相同目录中,并添加到工程中,按照移植实施中的步骤修改或添加代码在文件OS_CPU.H,OS_CPU_C.C,OS_CPU_A.S后,通过JTAG口下载到目标平台中运行即可。
导航软件是以导航数据库为数据基础的。主要包括导航功能模块和人机交互功能。其导航功能是在动态行进过程中进行导航定位、地图匹配、路径规划和路径引导等。人机交互功能主要是在静态过程中对导航的地理信息提供浏览查询服务。
导航功能模块主要包括以下4个模块:(1)导航定位模块;(2)地图匹配模块;(3)路径规划模块;(4)导航引导模块。
人机交互功能模块设计主要包括以下2个模块:(1)地图浏览模块;(2)地图查询模块。
导航软件设计实现流程如下:(1)运行导航定位线程从输入口读取GPS天线接收到的当前位置的经纬度坐标值;(2)将经纬度坐标转换到屏幕的像素坐标;(3)根据当前位置结合导航地图进行匹配处理,把当前位置信息匹配到地图上;(4)显示并实时刷新导航地图和当前位置;(5)是否求解最佳路径;(6)在导航数据库中选择起始和终止位置,运行路径规划线程在道路网数据中解算出最佳路径并显示到地图上。
GPS板只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送到嵌入式系统中。从串口接收的数据帧(长串ASCII码字节流)通过程序将各个字段的信息从接收到的字节流中提取出来,将其转化成有实际意义的、可供高层决策使用的定位信息数据。
对GPS信息进行提取必须首先明确其帧结构,数据帧主要由帧头、帧尾和帧内数据组成。对于不同的数据帧,其帧头是不同的,主要有“$GPGGA”、“$GPGSA”、“$GPGSV”以及“$GPRMC"等。这些帧头标识了后续帧内数据的组成和结构特点。各帧均以回车符<CR〉和换行符<LF〉作为帧尾,标识一帧的结束。
对数据帧处理,是先对帧头进行判断,然后只对感兴趣的帧进行数据的提取处理。由于帧内各数据段被逗号分割,因此在处理接收数据时一般是首先通过搜寻ASCII码“$”来判断是否是帧头,接着对帧头的类别进行识别,然后再根据识别出来的帧类型以及逗号‘,’个数来确定当前正在读取的是哪个定位导航参数,并作出相应的提取和存储。
最后,通过GPS和人工输入接收到的数据,经过MCU的处理,在地图上用醒目的颜色显示出来。
经过实验,系统能够稳定可靠地运行,进一步验证了以ARM9处理器+μC/OS-II操作系统+GPS接收机模式开发的校园导航系统具有开发简单、性能可靠的特点,有着良好的应用前景。
[1]杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.
[2]任哲.嵌入式实时操作系统[M].北京:北京航空航天大学出版社,2005.
[3]吴迪.嵌入式系统原理、设计与应用[M].北京:机械工业出版社,2004.
[4]周立功.嵌入式系统基础教程[M].广州:北京航空航天大学出版社,2006.
[5]Jean J.Labrosse.嵌入式实时操作系统μC/OS-Ⅱ[M].北京:北京航空航天大学出版社,2003.