定位数据的采集主要采集GPS和数字指南针的定位数据,采用串口接收中断的方式。NIOS II中,串口包括6个16位的寄存器,在软件中对应的数据结构为:
typedef volatile struct
{ int np_uartrxdata; //接收数据寄存器,只读
int np_uarttxdata; //发送数据寄存器,只写
int np_uartstatus; //状态寄存器,只读
int np_uartcontrol; //控制寄存器,可读写
int np_uartdivisor; // 波特率除数寄存器,可读写
int np_uartendofpacket; // 数据包结束符寄存器,可读写
} np_uart;
串口被当成字符设备,对其访问可以通过标准输入(stdin)和标准输出(stdio)来完成,也可以通过打开和写文件的方式,本系统采用直接访问寄存器方式,采用系统自动生成的访问宏,这样可以采用精简Newlib C,减少程序代码长度,并采用串口中断方式接收数据,NIOS II中使用中断首先要向系统注册,并且要打开硬件中断。中断采集GPS信号主要程序如下:
IOWR_ALTERA_AVALON_UART_CONTROL(UART2_BASE, 0X80) //向串口2控制寄存器写命令字,打开串口2接收中断,0x80为开接收中断命令字,串口2为与GPS模块通信串口。
int alt_irq_register (alt_u32 UART2_IRQ,
void* context,
void (*UART2_ISR)(void*, alt_u32));
//向系统注册中断,UART2_IRQ为串口2中断号,中断号越小优先级越高,context为中断服务程序UART2_ISR ( ) 的一个形参
Static UART2_ISR (void *contex,alt_u32 id)
//中断服务程序,串口有数据送入引起串口中断,执行该服务程序
{ *[buffer+i]=IORD_ALTERA_AVALON_UART_RXDATA(UART2_BASE)
//从串口2接收GPS定位数据,并存入缓冲。
… …
}
3.3.3 定时器中断方式程序实现
系统采用定时中断方式与监控中心通信,将定位数据发往监控中心。NIOS II提供了两种类型的时钟,HAL系统时钟(HAL system clock)和基于时标驱动(timestamp driver)的时钟,后者适用于对时钟具有高精度的场合。系统时钟提供了定时的功能,使用定时器和使用中断方式一样,首先要通过alt_alarm_start ( )函数向系统注册一个时钟中断,再在时钟中断服务程序中实现GPRS发送,alt_alarm_start ( )函数声明如下:
alt_alarm_start (&alarm,alt_ticks_per_second( ),GPRS_ISR ( ),NULL)
其中alarm为定时中断变量,由系统自动初始化,第二个形参为注册时钟中断后多长时间后开始执行服务程序,alt_ticks_per_second ( )为每秒系统时钟的“滴答”数,此处为一秒后开始执行,GPRS_ISR ( )为服务程序,NULL为服务程序的形参,此处为空。
定时中断服务程序完成将定位数据通过GPRS模块发往监控中心,通过串口向GPRS写数据实现,通过下条语句实现:IOWR_ALTERA_AVALON_UART_TXDATA(BASE, DATA) //向串口写数据,BASE为串口基地址,DATA为要写入数据。
3.4 软件开发中应注意的问题
针对NIOS II软核处理软件开发特点,总结以下需要注意的几点:
(1) HAL系统库作为NIOSⅡ处理器支持的软件包,可以给软件开发人员提供便利,包括自动初始化系统,可以使用ANSI C标准库等,但这样是以增加代码长度为代价的。
(2) 进行NIOSⅡ软核处理器的嵌入式软件开发时可以通过多种方式减少软件代码和提高工作效率,包括使用自定义初始化函数alt_main( ),使用精简Newlib C库,优化软件编译参数,自定义指令等,但这样无疑对软件开发人员提出了更高的要求。
(3) 编写中断服务程序时要注意防止系统“死锁”,尤其是使用ANSI C标准库函数访问IO设备时。
4 试验结果
该系统样机与GPS单一定位的定位系统在武汉徐东地下通道进行了对比试验。试验结果如图5、图6所示。从对比结果可以看出,GPS单一定位的定位系统在地下通道区出现了定位盲区,而本系统接收终端在地下通道行走时,监控中心地图上还可以实时显示轨迹,克服了以往单一GPS定位系统的定位盲区,验证了该系统的可行性并体现了其优越性。
5 总结
图5 GPS单一定位轨迹 图6 本系统定位轨迹
本文采用SOPC技术,设计并实现了一种基于NIOSII软核处理器的便携式组合定位系统,并采用GPS和数字指南针组合定位,克服了单一GPS定位的盲区。与传统的便携式定位产品相比,该系统具有开发周期短,开发成本低,产品生命周期长,适用范围广等优点。该系统体积小,便于携带,并可以缝制在衣服、饰物品中。适合于老人、小孩、智障人群佩戴,以便对他们进行监控,防止他们走失,也适合一些特殊行业,例如邮政、公安、电力、冶金行业,市场前景可观。