当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]CAN/GPRS无线车载网关的设计与实现

1 引言
随着汽车电子技术的不断发展,车上的电子装置越来越多,并与传感器和执行器一起共同组成了许多复杂的电子控制系统。结果连接这些电子装置的电子线路迅速膨胀,布线变得越来越困难,导致了车身重量明显增加,车辆运行的可靠性降低。传统点对点的连接方式已经无法满足现代汽车电子技术发展的要求,多路传输的车载网络技术成为解决这些问题的必然选择。德国BOSCH 公司[1]推出的控制局域网CAN(Controller Area Network)依靠其稳定的性能、低廉的价格和很高的可靠性和实时性,现在已经被广泛地应用于汽车内部网络。CAN总线的采用使汽车内部的信息数据共享成为现实。然而,现在信息数据的共享不仅仅局限于汽车内部,许多数据信息需要与外界进行交换。这些信息主要用于汽车导航、汽车GPS 定位、汽车防盗、汽车远程监控、汽车远程调度和收费等方面。由于汽车可移动性的特点,很多与外界交互的信息需要通过无线传输,所以我们选择具有覆盖面广、接入速度快、按流量计费等优点的通用分组无线业务GPRS(General Packet Radio Service)来承载无线数据通信。GPRS 是在GSM 基础上发展起来的一种无线分组交换技术[2],被称为2.5G,最高带宽可达171.2Kb/s,可较好的满足无线通信的要求。
2 总体网络拓扑
总体网络拓扑如图 1 所示,汽车内部的电子控制单元都挂接到CAN 网上,汽车的内部数据信息通过CAN 总线进行传递,而需要与外界交互的数据则通过CAN/GPRS 无线车载网关进行收发。
500)this.style.width=500;" border="0" />

数据经过基站收发信机 BTS(Base Transceiver Station)、基站控制器BSC(Base Station Controller)和GPRS 服务支持节点SGSN(Serving GPRS Support Node)进入GPRS 骨干网;然后再通过GPRS 网关支持节点GGSN(Gateway GPRS Support Node),进入Internet 互联网;并可以通过TCP 或UDP 协议把数据传送到Internet 远程服务器。
3 CAN/GPRS 无线车载网关硬件实现
因为整个汽车内部CAN网与外界交互的数据都需要通过CAN/GPRS无线车载网关进行收发,所以网关需要配备一个性能较高的微处理器。我们选择具有较高性价比的一款三星公司的32 位ARM9 微处理器S3C2410X 来作为网关的主控制器。S3C2410X 包含ARM920T核,最高处理速度为203MHz[6],丰富的外围设备包括3 通道的UART、4 通道的DMA、2个SPI 接口、117 个通用I/O 口和24 个外部中断源等。采用一片三星的K9F1208 NAND Flash芯片(64M *8Bit)来储存网关软件系统的Bootloader,Linux 内核,根文件系统和网关程序。由两片HYNIX 的HY57V561620 DRAM 芯片(4Banks*4M*16Bit)构成64M 的SDRAM,用于加载Linux 操作系统和运行程序。采用12MHz 的有源晶振。设计了一个20 针JTAG 接口,用来烧写Bootloader。使用1 片MAX3232 构成UART 调试接口。因为整个系统的输入电压为5V,所以需使用AMS1117-3.3 和AMS1117-1.8 分别得到稳定的3.3V 和1.8V 电压。
CAN 控制器选择Microchip 的MCP2510,CAN 收发器选择Philips 的TJA1050 以组成网关的CAN 通信模块。MCP2510 支持CAN 总线V2.0A 和V2.0B 技术规范,通信数率可达1Mb/s,拥有3 个发送缓冲器、2 个接收缓冲器,高速SPI 接口支持0,0 和1,1SPI 模式。TJA1050具有对总线差分信号的收发功能和抗汽车环境下的瞬间干扰等能力。网关的GPRS 接口采用SIMCOM 公司的SIM300 GSM/GPRS 模块,该模块可为GSM 语音、短消息和GPRS 上网等业务提供无线接口。采用6 脚SIM 卡座来连接SIM 卡。网关的硬件结构如图2 所示。

500)this.style.width=500;" border="0" />

在实际硬件连接时,S3C2410 的SPI 接口与MCP2510 的SPI 接口直接相连。MCP2510的TXCAN、RXCAN 引脚分别与TJA1050 的TXD、RXD 引脚相连,而TJA1050 的CANH和CANL 引脚分别接到CAN 总线的CANH 线和CANL 线上。因为S3C2410 的UART 口并没有引出DCD、 DTR、DSR 和RI 信号引脚,要通过SIM300 无线联网,最好使用全部的信号引脚,所以我们使用PHILIPS 的SC16C550 从S3C2410 上扩展出标准的UART 接口与
SIM300 的UART 接口进行连接。CAN/GPRS 网关主要通信模块的硬件电路原理图如图3 所示。
500)this.style.width=500;" border="0" />

4 CAN/GPRS 无线车载网关软件实现
4.1 ARM-Linux 操作系统移植.[!--empirenews.page--]
使用韩国 MIZI 公司开发的VIVI 作为bootloader、选择2.6 内核的ARM-Linux 作为嵌入式操作系统,并用busybox 制作Linux 的根文件系统。在K9F1208 NAND Flash 芯片上存储区域的划分如表1 所示。

500)this.style.width=500;" border="0" />

4.2 ARM-Linux 下SPI 驱动程序编写
使用 S3C2410 自带的SPI 通道0 与MCP2510 进行通信,其SPI 驱动程序流程[3]如下:
(1)写SPPRE0 寄存器,设置波特率。
(2)写SPCON0 寄存器,设置数据传输为0,0SPI 模式。
(3)向SPIDAT0 寄存器写10 次0xFF,以初始化MCP2510。
(4)设置GPIO 引脚,用来充当片选,设定低电平以激活MCP2510。
(5)检查SPSTA0 寄存器的发送状态位REDY 是否为1,若是,则可以向SPTDAT0 寄存器写数据并发送出去。
(6)SPCON0 寄存器的TAGD 不使能,向SPTDAT0 寄存器写入0xFF,在确认REDY 有效后,可从SPRDAT0 寄存器中读数据;TAGD 使能,确认REDY 后,也可从SPRDAT0 寄存器中读数据。
(7)设置GPIO 引脚,信号设为高电平,片选不使能。
4.3 ARM-Linux 下CAN 驱动程序编写
因为 CAN 应用层协议是基于CAN2.0B 技术规范设计的,所以通信报文采用CAN2.0B扩展帧格式。
初始化:(1)发送0xc0 复位指令,MCP2510 复位;(2)进入配置模式,设置CAN 总线波特率,关中断;(3) 设置屏蔽寄存器RXM(0、1)SID(L/H)、RXM(0、1)EID(8/0)和滤波寄存器RXF(0~5)SID(L/H)、RXF(0、1)EID(8/0)并启动;(4)设置CAN 设备为普通模式并切换到正常模式;(5)清空接收和发送缓冲区。(6)开启接收或发送缓冲区,开启中断。发送报文:(1)写标识符寄存器TXB(0~2)SID(L/H)、TXB(0~2)EID(8/0);(2)向发送缓冲器数据长度寄存器TXB(0~2)DLC 写入要发送的报文长度;(3) 写数据时,需依次向MCP2510 发送0x02 写指令、发送缓冲器数据寄存器TXB(0~2)DM 的8 位地址码和需要发送的报文数据;(4)必须进行发送有效性检测,即:检测发送缓冲器控制寄存器TXB(0~2)CTRL 的TXREQ 位。为1 时,说明正在发送报文,须等待;当此报文发送完毕后,该位将被自动清零,这时才可写入下一个将要发送的报文数据。接收报文:(1) 向MCP2510 发送0xA0 状态读指令,并不断检测中断标志寄存器CANINTF,当发现RX(0、1)IF 位为1,说明接收缓冲器已收到报文;(2)这时可从接收缓冲器标识符寄存器中读出帧的ID,从接收缓冲器数据长度寄存器RX(0、1)BDLC 读出收到的报文长度;(3)读数据时,需依次向MCP2510 发送0x03 读指令、接收缓冲器数据寄存器RXB(0、1)DM 的8 位地址码后MCP2510 才会将数据通过SO 引脚发送出来。读完数据,RX(0、1)IF 位需清零。
4.4 ARM-Linux 下串口驱动程序修改及加载
因为我们使用的是与 16c550 寄存器兼容的UART 控制器芯片SC16C550,所以需要加载其在Linux 下的驱动程序serial_8250.c。但SC16C550 芯片是通过外部总线和S3C2410 微处理器连接的,所以在驱动程序的serial8250_isa_init_ports 函数中需加入对SC16C550 芯片所在Bank 空间的初始化,包括设置读/写时序、速度和总线宽度等信息[4]。
4.5 ARM-Linux 下GPRS 联网
GPRS 通过PPP(Point-to-Point Protocol,点对点协议)来完成联网。PPP 是在直接连接的串行链路上创建和运行IP 网际协议或其他网络协议的一个方案。在ARM-Linux 下对PPP的支持需要内核和应用程序配合管理。对于Linux2.6 内核,在配置内核时需要选择对PPP的支持,如:在Network device support 菜单下,选择支持PPP 协议、PPP 异步/同步串口通信和PPP 压缩。此外,还需要移植Linux 下PPP 的应用程序工具包,即把交叉编译后得到的pppd、chat 程序加入根文件系统。在根文件系统的/etc/ppp 目录下,还需编写3 个脚本文件:options(pppd 配置脚本)、gprs-connect(pppd 连接脚本)、gprs-disconnect(pppd 断开脚本)。在options 脚本中需指定串口控制台设备/dev/ttse/0、连接波特率115200、连接和断开脚本的存放路径; 在gprs-connect 脚本中运行chat 程序, 并指定APN 接入点, 如:‘AT+CGDCONT=1,"IP","CMNET","",0,0‘和ISP 呼叫号码:‘ATD*99***1#‘等。这样系统启动
后,直接使用pppd &命令即可实现GPRS 无线接入互联网。
4.6 CAN 应用层协议与UDP 或TCP 协议转换
因为 GPRS 网络是建立在TCP/IP 协议基础上的,所以通过GPRS 网络与Internet 远程服务器通信可以使用UDP 或TCP 协议。由于S3C2410 上不仅移植了Arm-Linux 操作系统,其本身已支持TCP/IP 协议,而且我们也把CAN 的应用层协议加载了上去。所以在网关上无线发送数据时,只需将汽车CAN 网上的CAN 数据包数据域中的数据加上UDP 或TCP包头即可发送出去;当在网关上无线接收数据时,只需去掉UDP 或TCP 数据包的包头,得
到的数据可以遵照CAN 应用层协议的报文格式向CAN 网上发送。协议转换如图4 所示。

500)this.style.width=500;" border="0" />

4.7 心跳程序的实现
因为 CAN/GPRS 无线网关与Internet 远程服务器通信时,可能会出现连接的异常情况,所以需要使用心跳程序来检测异常情况的发生,并通过心跳程序重新拨号来保证无线通信链路的正常连接[5]。我们可以定时Ping 远程服务器,若能Ping 通,则表示无线通信链路工作正常;若多次无法Ping 通,则必须断开连接,重新拨号。
5 结论
本文详细介绍了 CAN/GPRS 无线车载网关的实现,所实现的网关在实验通信网络中能较好地完成汽车内部CAN 网数据信息与外界的交互任务,并能长时间稳定运行,基本上达到了工作要求。
本文作者创新点:在CAN/GPRS 无线车载网关上能成功地运行ARM-Linux 嵌入式操作系统、心跳程序和底层硬件驱动程序,完成了CAN 应用层协议与TCP 或UDP 协议的转换,使得汽车内部CAN 网能与外界进行无线数据通信。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭