ARM Cortex-A8/A9开发板 | ARM11开发板ARM11开发套件 | ARM9开发板ARM9开发套件 | 飞思卡尔I.MX28I.MX6开发板 |
tiny210/mini210开发板 | mini6410开发板/套餐 | Tiny6410开发板无线套件 | mini2440开发板/套餐 | micro2440开发板带核心板 | 友善开发板配件 模块 | QQ2440 V3 SBC-2410X |
FL2440 OK2440-IV V4 | OK2440-III OK2440V3 | TE2440-II TE2440V2 | OK6410 S3C6410 ARM11 | FL6410/OK6410B ARM11 | TE6410 S3C6410 ARM11 | TE-9263 AT91SAM9263 | 开发板配件 模块和其他 |
Xilinx开发板/fpga开发套件 | altera开发板/fpga开发套件 | 基于FMC FPGA/DSP子卡 |
BeagleBoard原厂开发板 | PandaBoard原厂开发板 |
TI DM3730 DevKit8500D | TI系列 omap3530开发板 | ATMEL系列 开发板 | Samsung系列 开发板 | 开发板配件-仿真器 模块 | NXP LPC3250 mini3250 |
Tiny210 三星S5PV210 | Mini210/Mini210s开发板 | Tiny4412开发板Cortex-A9 | Tiny6410开发板 ARM11 | mini2440开发板 ARM9 | micro2440开发板 ARM9 | mini6410开发板 ARM11 | 友善ARM开发板配件 模块 |
keil ARM仿真器/开发工具 | STM32开发板 Cortex-M3 | NXP LPC开发板Cortex-M3 | ATMEL系列 ARM开发板 | Luminary EKK8962开发板 | Freescale i.MX31开发板 | 三星s3c2440 s3c6410开发板 |
FL2440 OK2440-IV V4 | OK6410 S3C6410 ARM11 | FL6410/OK6410B ARM11 | OK210/-A Cortex-A8 | TE2440-II TE2440V2 | TE6410 S3C6410 ARM11 | TE-9263 AT91SAM9263 | ARM开发板配件 模块等 |
Real6410开发板/套餐 | Real210开发板/Real2410 | WIFI GPS GPRS模块摄像头 |
Xilinx开发板/开发套件KIT | Altera开发板/开发套件KIT | 配套模块 |
NXP LPC开发板 ARM7 | Cortex-M3 STM32开发板 | 最小系统模块类(初学者勿选) | 开发工具 仿真器 调试器 | TFT液晶屏LCD 液晶模块 |
DM642开发板/DM642实验箱 | DM6446开发板/DSP实验箱 | DSP仿真器 液晶屏 摄像头等 |
DM3730/AM3715/AM3359 | OMAP3530AM1808AM3517 | 飞思卡尔Cortex-A9开发板 | ATMEL系列ARM开发板 | NXP LPC3250 LPC1788 | Samsung系列ARM开发板 | STM32系列F207/F407 | ARM开发板配件-仿真器 模块 |
Realv210 S5PV210开发板 | Real6410开发板 ARM11 | WIFI GPS GPRS模块摄像头 |
NXP LPC开发板 ARM7 | Cortex-M3 STM32开发板 | ARM小系统模块(初学勿选) | 开发工具 ARM仿真器 调试器 | TFT液晶屏LCD 液晶模块 |
keil ARM仿真器/开发工具 | STM32开发板 Cortex-M3 | NXP LPC开发板Cortex-M3 | ATMEL系列 ARM开发板 | Luminary EKK8962开发板 | Freescale i.MX31开发板 | 三星s3c2440 s3c6410开发板 |
Exynos4412开发板A9四核 | UT-S5PV210 S5PC100 | UT-S3C6410开发板 ARM11 | idea 6410开发板 ARM11 | UT-S3C2450开发板 ARM9 | UT-S3C2416开发板 ARM9 | UT-S3C6410核心板 工控 |
Xilinx开发板 FPGA开发套件 | altera开发板 FPGA开发套件 | FMC模块 配件 下载线 |
DM642开发板/DM642实验箱 | DM6446开发板/DSP实验箱 | DSP仿真器 液晶屏 摄像头等 |
s3c2410 ARM9 FS2410 | s3c2440开发板 ARM9 | s3c44B0开发板 ARM7 | s3c6410 2450 2443/13 | PXA270 PXA320 PXA255 | Atmel 9200 9261 9G20 | Philips NXP开发板YL-LPC | FS-EP9315开发板ARM9 | LCD液晶屏TFT真彩/触摸屏 | ARM仿真器/仿真调试工具 | ARM开发板配套ARM核心板 |
三星s3c2410 s3c44B0 | 三星s3c6410 s3c2443 | Intel PXA270 PXA320 | UP-CUP OMAP5910平台 | FPGA Xilinx altera平台 | 配件-仿真器 模块 液晶屏LCD | 龙芯开发板UP-DRAGON-I | 物联网教学科研设备 | EDA/FPGA/SOPC教学科研 |
utu2440-F-V4.5 含核心板 | utu2440-S-V4.1 单板结构 | YC2440-F-V5.1开发板 豪华型 | YC-ePC-A系列人机界面 | Mars-EDA套件CPLD FPGA | 触摸屏LCD 摄像头 WI-FI模块 |
ARM开发板/开发平台 | FPGA开发板/开发平台 | 编程器/烧写器下载器烧录 | ZLG 仿真器ARM FPGA DSP | ZLG周立功逻辑分析仪 |
DSP初学者开发套件(DSK) | DSP仿真器/仿真系统 | DSP开发板/DSP试验箱 | DaVinci系列多媒体平台 | Xilinx FPGA大学计划产品 | SEED教学实验系统 | FPGA/DSP FPGA开发板 | TI原厂开发板套件/CCS软件 |
ARM开发板 | XSCALE开发板 | ARM仿真器 | SOPC开发板 | DSP开发板 | 达芬奇系列DSP开发平台 | DSP仿真器 | DSP实验箱 | DSP专业研究平台 | ARM实验箱系列 |
广嵌实验室项目产品 | GEC2440/GEC6410开发板 |
泰克Tektronix示波器 | 普源RIGOL示波器 | USB虚拟示波器 |
UT-S5PC100 UT-S5PV210 | UT-S3C6410开发板 ARM11 | idea 6410开发板 ARM11 | UT-S3C2450开发板 ARM9 | UT-S3C2416开发板 ARM9 | UT-S3C6410核心板 工控 | 开发板模块wifi gps等 |
EMA OMAP3530开发板 | EMA OMAP 3530核心板 |
三星s3c2410 s3c44B0 | 三星s3c6410 s3c2443 | Intel PXA270 PXA320 | UP-CUP OMAP5910平台 | FPGA Xilinx Altera平台 | 配件-仿真器 模块 液晶屏LCD | 龙芯系列 UP-DRAGON-I |
utu2440-F-V4.5 含核心板 | utu2440-S-V4.1 单板结构 | YC2440-F-V5.1开发板 豪华型 | 触摸屏LCD 摄像头 WI-FI模块 | Mars-EDA套件CPLD FPGA | ePC系列工控一体机ARM9 A8 |
ARM开发板/开发平台 | FPGA开发板/开发平台 | 编程器/烧写器下载器烧录 | ZLG 仿真器ARM FPGA DSP | ZLG周立功逻辑分析仪 |
DSP初学者开发套件(DSK) | DSP仿真器 | DSP开发板 | DSP实验箱 | Xilinx FPGA大学计划产品 |
ARM开发板 | XSCALE开发板 | ARM仿真器 | SOPC开发板 | DSP开发板 | 达芬奇系列DSP开发平台 | DSP仿真器 | DSP实验箱 | DSP专业研究平台 | ARM实验箱系列 |
ARM开发板S3C6410等 | Cortex-A8/ARM11仿真器 | ADSP Blackfin开发板 | FPGA Spartan-3E开发板 |
GEC2410开发套件ARM9 | GEC2440开发套件ARM9 |
泰克 示波器 |
移动终端是车辆监控体系的告急构成部分,紧张用来汲取 GPS 信号并对其举行处理惩罚处罚,然后通过 GPRS 网络发送给监控中间。本文先容了一种嵌入式 Linux 体系平台下,移动终端软件的筹划方案及其干系实现。
关键词:移动终端;嵌入式 Linux;环球定位体系;通用分组无线业务;车辆监控体系
1 小序
及时利用体系(RTOS)是嵌入式应用软件的底子和开辟平台,应用步调都是创建在它之上。及时嵌入式利用体系的种类繁多,大概上可分为两种:商用型和免费型。商用型的及时利用体系结果稳固、可靠,有美满的技能支持和售后办事,但价格昂贵。免费型的及时利用体系在价格方面具有上风,如今紧张有 Linux、μC/OS 等。
与别的嵌入式利用体系相比,嵌入式 Linux 具有开放源代码、高可靠性以及强大的网络结果等上风,因此选用了嵌入式 Linux 体系作为移动终真个软件平台。
2 车辆监控体系概述
车辆监控体系是融环球定位技能(GPS)、地理信息技能(GIS)和通用分组无线业务(GPRS)于一体的高科技体系,由移动终端、GPRS 网络和监控中间构成[1]。移动终端摆设在各个移动车辆上,其上的 GPS 汲取器及时征求卫星定位信息,然后通过串口 1 发送给 ARM 处理惩罚处罚器。ARM 处理惩罚处罚器先解算出有效的数据(经纬度、速率、状态等),然后根据 TCP/UDP 协议的格局封装成 TCP/UDP 数据包,接着加上 IP 报头和报尾封装成 IP 数据报。由于 ARM 处理惩罚处罚器与 GPRS 通讯模块之间的通讯依照 PPP(Point to Point Protocol,点对点协议),因而,须要将 IP 数据报根据 PPP 帧的帧格局封装成 PPP 帧,然后转达给接在串口 2 上的 GPRS 通讯模块。GPRS 通讯模块通过无线链路将数据进一步发送到 SGSN(Serving GPRS Support Node,GPRS 业务支持节点)。SGSN 举行相应的协议转换,并根据 GPRS 特有的 GTP(GPRS Tunnel Protocol,GPRS 隧道协议)将数据封装成 GTP 包,然后通过 GPRS 骨干网发送到相应的 GGSN(Gateway GPRS Support Node,GPRS 网关支持节点)。GGSN 也举行相应的协议转换,再根据外部数据网的协议格局对数据举行新的封装,并且根据其目标 IP 地点选择路由举行发送,从而终极发送到监控中间。监控中间在具有地理信息处理惩罚处罚和查问结果的电子舆图上举行车辆活动轨迹的表现,并对被监控车辆的精确位置、速率、活动方向、行车状态等参数举行监控和查问。同时,监控中间也可以向移动终端发送文本信息和控制下令。
由此可见,移动终真个内核结果是汲取 GPS 信号、处理惩罚处罚 GPS 数据以及通过 GPRS 网络与监控中间举行通讯(包括向监控中间发送定位信息和汲取监控中间的指令)。
3 移动终端软件体系的筹划
3.1 总体筹划
在移动终端上,软件体系紧张由三个部分构成:GPS 信号汲取步调、GPS 数据处理惩罚处罚步调和 GPRS 通讯步调。在嵌入式 Linux 体系平台下,移动终真个软件体系布局如图 1 所示。
图 1 移动终真个软件体系布局
图 2 GPS 信号汲取步调的层次布局
3.2 GPS 信号汲取步调
敷衍移动终端,它的第一个任务便是汲取 GPS 信号。在嵌入式 Linux 体系平台下,GPS 信号汲取步调的层次布局如图 2 所示。
此中,tty 层、N_TTY 行规程(Line Discipline)层和低层驱动步调是嵌入式 Linux 体系中串行通讯驱动模块三个固有的逻辑层,这三层之间有相互调用的接口函数。嵌入式 Linux 体系提供了多种行规程供种种配置举行选择,如:TTY 行规程(N_TTY)用于连接终端输入驱动配置和终端表现驱动配置,而 PPP 行规程(N_PPP)用来连接终端驱动配置和网络驱动配置。GPS 信号汲取步调利用了 N_TTY 行规程,GPS 汲取器汲取到的数据必须颠末 N_TTY 行规程模块举行典范处理惩罚处罚。低层驱动步调用来直接对硬件举行利用,而 flip_buffer 是低层驱动步调和 N_TTY 行规程之间的高速接口,它生存 GPS 汲取器汲取到的数据。
在嵌入式 Linux 体系中,内核给接在串口 1 上的 GPS 汲取器提供了一个配置节点 /dev/ttyS0 以及标准的文件体系接口[2]。如许,GPS 信号汲取步调对配置节点 /dev/ttyS0 的利用就会被内核映射成对 GPS 汲取器的利用。当 GPS 汲取器汲取到卫星信号时,会触发低层驱动步调事先注册到体系中的克制处理惩罚处罚函数,从而调用函数 receive_chars( ) 把数据添补到 flip_buffer 中,然后调用函数 tty_flip_buffer_push( ) 将数据转达给 N_TTY 行规程模块。N_TTY 行规程模块中的函数 n_tty_receive_buf( ) 对数据举行典范化处理惩罚处罚后将其存入 tty 缓冲区中,提供用层的 GPS 信号汲取步调来读取。
当应用层的 GPS 信号汲取步调开始运行时,它会向文件体系发出读恳求,文件体系发明此恳求的东西为 tty 配置,于是调用函数 tty_read( ),接着调用函数 read_chan( ) 读取 tty 缓冲区中的数据。
3.3 GPS 数据处理惩罚处罚步调
GPS 汲取器与嵌入式 Linux 平台之间的通讯协议有很多种,这里采取的通讯协议是 NMEA-0183,它规定了 GPS 数据的输出速率为 4,800 波特,其输出都是 ASCII 字符,变乱模式为 8-N-1。通讯协议 NMEA-0183 中包括的语句有 GPGGA、GPGLL、GPGSA、GPGSV、GPRMC、GPVTG 等,要想知道车辆的位置信息,至少要提取出 GPGGA、GPGLL、GPRMC 中的一种。NMEA-0183 协议报文的语句格局如图 3 所示。
图 3 NMEA0183 的报文格局
此中,$ 为串头,表现串的开始;AA 为辨认符;XXX 为语句名;ddd…ddd 为数据字段,字母或数字;* 表现串尾;hh 表现 $ 与 * 之间全部字符代码的校验和;< CR > 为回车控制符;< LF > 为换行控制符。
在车辆监控体系中,紧张体贴的是时间、车辆的位置和速率等信息。因此,在移动终端上,GPS 数据处理惩罚处罚步调的紧张结果是从 GPS 汲取器汲取到的数据中提取出 GPRMC 定位语句,敷衍失其他信息[3]。以后,移动终端上的 GPRS 通讯步调认真将干系的数据发送给监控中间。
3.4 GPRS 通讯步调
3.4.1 拨号到 GPRS 网络的基源头底子理
移动终端要想通过 GPRS 通讯模块访问 Internet,起首得附着在 GPRS 网络上,然后提倡 PDP(Packet Data Protocol,分组数据协议)上下文激活进程[4],如图 4 所示。只有通过此进程,GPRS 通讯模块才华与 GGSN 创建一条逻辑通路,从而访问 Internet。
图 4 PDP 上下文激活进程表现图
3.4.2 移动终端上拨号步调的实现
在嵌入式 Linux 体系平台下,移动终端利用 pppd(包括 chat)拨号到 GPRS 网络。pppd 是一个用户空间的背景办事进程(daemon),而 chat 是 pppd 所带一个资助东西,用来与 GPRS 通讯模块创建会话。在 PDP 上下文激活进程中,chat 完成了第 ① 步,而 pppd 完成了第 ②、③、④、⑩ 步。pppd 拨号步调的层次布局如图 5 所示。
图 5 pppd 拨号步调的层次布局
此中,N_PPP 层便是 PPP 协议层。PPP 协议模块不但提供大抵的数据链路层结果,它还提供诸如鉴权(如PAP/CHAP),数据压缩/解压(如CCP)和数据加密/解密(如ECP)等扩展结果。由于 GPRS 通讯步调恳求透明化地利用这些扩展结果,而 PPP 协议模块本身无法对种种战略举行选择,于是 pppd 应运而生。PPP 协议模块中战略性的内容都移到了 pppd 中,由 pppd 完成对鉴权、压缩/解压和加密/解密等扩展结果的选用。
在运行 pppd 的时间,pppd 起首读取配置文件中的配置信息,此中包括了设置 PPP 协议模块的参数、GPRS 通讯模块连接的端口(/dev/ttyS1)以及对 chat 举行调用的语句,等等。随后 pppd 调用 chat,chat 也会读取相应的配置文件(此中包括一些应答语句对和 AT 下令),然后利用默认的行规程 N_TTY 向 GPRS 通讯模块发送 AT 下令,接着 chat 将控制权返还给 pppd。pppd 将行规程切换为 N_PPP,而 pppd 与 PPP 协议模块之间采取了配置文件来举行通讯,配置文件名是 /dev/ppp。通过 read 体系调用,pppd 可以读取 PPP 协议模块的数据包(固然,PPP 协议模块只会把应该由 pppd 处理惩罚处罚的数据包发给 pppd)。通过 write 体系调用,pppd 可以把要发送的数据包转达给 PPP 协议模块,而通过 ioctl 体系调用,pppd 可以设置 PPP 协议模块的参数,可以创建/封闭连接。
以后,pppd 实行了 PDP 上下文激活进程的第 ②、③、④ 步。等 PDP 上下文激活进程的第 ⑤-⑨ 步(与移动终端不直接干系)完成之后,pppd 实行第 ⑩ 步,在函数 make_ppp_unit( ) 中调用 ioctl(PPPIOCNEWUNIT) 创建一个网络接口(如ppp0)。当 PPP 协议模块在处理惩罚处罚 PPPIOCNEWUNIT 时,调用函数 register_netdev( ) 向内核注册 PPP 网络接口,该网络接口的传输函数指向函数 ppp_start_xmit( )。值得过细的一点是,要是封闭进程 pppd,行规程会由 N_PPP 切换回默认的 N_TTY,因此,在移动终端与监控中间通讯的进程中不克不及封闭 pppd 进程。
至此,移动终端完成了向 GPRS 网络的拨号,如许它就拥有了一个可以用于与监控中间举行通讯的网络接口(如ppp0)。
3.4.3 移动终端与监控中间的数据交互
前面,移动终端已经与监控中间创建了网络链接。接下来,移动终端就可以与监控中间举行通讯了。GPRS 通讯步调的层次布局如图 1 的右半部分所示。
在移动终端向监控中间发送定位信息的进程中,移动终端上的 GPRS 通讯步调通过 socket 接口发送 TCP/IP 数据包,内核根据 IP 地点和路由表,找到 PPP 网络接口,然后调用函数 ppp_start_xmit( ),此时控制权就转移到了 PPP 协议模块。函数 ppp_start_xmit( ) 调用函数 ppp_xmit_process( ) 去发送行列步队中的全部数据包,而函数 ppp_xmit_process( ) 会进一步调用函数 ppp_send_frame( ) 去发送单个数据包。函数 ppp_send_frame( ) 根据前面 pppd 对 PPP 协议模块的设置调用压缩等扩展结果之后,又经函数 ppp_push( ) 调用函数 pch->chan->ops->start_xmit( ) 发送数据包。函数 pch->chan->ops->start_xmit( ) 是细致的传输要领,敷衍串口发送要领,则是 ppp_async.c:ppp_asynctty_open 中注册的函数 ppp_async_send( ),函数 ppp_async_send( ) 经函数 ppp_async_push( ) 调用函数 tty->driver->write( )(定义在低层驱动步调中)把数据发送到串口 2(GPRS 通讯模块接在串口 2 上)。
ppp_async.c 在初始化时(ppp_async_init),调用函数 tty_register_ldisc( ) 向 tty 注册了行规程 N_PPP 的处理惩罚处罚接口,也便是一组回调函数。在移动终端汲取监控中间指令的进程中,当 GPRS 通讯模块收到数据时,就会回调 N_PPP 行规程中的函数 ppp_asynctty_receive( ) 来汲取数据。函数 ppp_asynctty_receive( ) 调用函数 ppp_async_input( ) 把数据 buffer 转换成 sk_buff,并放入汲取行列步队 ap->rqueue 中。ppp_async 别的有一个 tasklet(ppp_async_process)专门处理惩罚处罚汲取行列步队 ap->rqueue 中的数据包,ppp_async_process 不绝挂在汲取行列步队 ap->rqueue 上,一旦被唤醒,它就调用函数 ppp_input( ) 让 PPP 协议模块处理惩罚处罚该数据包。在函数 ppp_input( ) 中,数据被分成两路,一起是协议控制数据包,放入行列步队 pch->file.rqb 中,交给 pppd 处理惩罚处罚。别的一起是用户数据包,经函数 ppp_do_recv( )、ppp_receive_frame( ) 举行 PPP 协议干系的处理惩罚处罚后,再由函数 netif_rx( ) 提交给上层的 TCP/IP 协议模块举行处理惩罚处罚,着末经 socket 接口转达给应用层的 GPRS 通讯步调。
4 总结
近几年,智能交通体系(包括车辆监控体系)生长非常敏捷,因此,移动终端将会有非常广泛的应用远景。随着市场需求的不绝扩大,越发丰富的结果将会被集成到移动终端上,而嵌入式 Linux 体系依附其自身的上风将会被越来越多地应用到这个范畴。
本文作者创新点:本方案充分利用了嵌入式 Linux 平台所提供的体系结果,大大简化了应用步调的开辟,并且具有精良的可扩展性。在过细先容 GPS 信号的汲取进程并给出一个简便的 GPS 数据处理惩罚处罚步调后,本文提供了一种确切可行的拨号到 GPRS 网络的要领,从而实现了移动终端高出 GPRS 网络与 Internet 上监控中间的通讯。
参考文献:
[1] 李艳晴等.基于 GPRS/GPS 的车辆监控体系的筹划[J].微谋略机信息,2004,20-4:39-40.
[2] Alessandro Rubini等.LINUX 配置驱动步调(第三版)[M].中国电力出版社.2005.
[3] 成洁,路欣.嵌入式Linux平台的GPS数据征求研究[J].江西理工大学学报,2006,vol.27,No.3.
[4] 刘旭,张其善.一种基于 GPRS 的车辆监控体系[J].遥测遥控,2003,1,42-45.
博航网 www.broadon.net 版权所有
京ICP备10051899号-2 京公网安备110108006479号