一种基于Android系统的4G模块稳定工作方法技术方案

技术编号:21140631 阅读:26 留言:0更新日期:2019-05-18 05:02
本发明专利技术所设计的基于Android系统的4G模块稳定工作方法,包括Android主机和4G模块,所述的4G模块通过USB接口以及UART接口与Android主机的主控芯片通信,所述的Android系统包括应用层、应用框架层、系统运行库层、硬件抽象层HAL、Kernel内核层和Device设备层,通过在硬件抽象层主动监测4G模块的工作状态,以及通过监测4G模块对AT指令的相应状态,发现异常情况,然后主动重启4G相关的软件控制,从而达到保证4G模块稳定运行的效果。

A Stable Working Method of 4G Module Based on Android System

【技术实现步骤摘要】
一种基于Android系统的4G模块稳定工作方法
本专利技术涉及一种基于Android系统的4G模块稳定工作方法,应用于车载系统,通过在Android系统的硬件抽象层HAL监测Linux内核热插拔事件以及4G模块主动上报的消息机制来使得系统4G模块处于稳定工作状态。
技术介绍
无线4G模块是指硬件加载到指定频段,软件支持标准的LTE协议,软硬件高度集成模组化的一种产品的统称,是一种基于4G技术来实现数据传输的无线通信模块。由于4G模块利用了移动运营商的4G全球覆盖的网络,它可以进行远距离的数据通信,是工业与物联网应用中经常使用的技术手段。4G模块组建的网络具有覆盖范围广,传输可靠,扩容性好,组网灵活,建设周期快,运营成本低等优点。其组建网络成本也很低廉,中心站只添置一台接口服务器和通信数据线路,终端站只需要添置一个4G无线通信模块就能组建完整的数据采集和控制系统。由于以上优点,4G模块被广泛应用于移动宽带接入、视频监控、手持终端、车载设备等众多领域。但是在使用过程中,经常会因为软件运行效率,各个程序之间的冲突,以及短暂的硬件断连导致的4G模块失效,从而影响了系统运行的稳定性,及产品实用的流畅度。上述的大多数情况均可以通过简单的重启模块解决,但是由于系统的机制,需要用户发现情况后通过人工重启,导致用户体验下降。
技术实现思路
为解决上述问题,本专利技术提供了一种能自动在硬件抽象层以下监测4G模块工作状态,根据其状态重启4G模块从而保证稳定运行的基于Android系统的4G模块稳定工作方法。为了达到上述目的,本专利技术所设计的基于Android系统的4G模块稳定工作方法,包括Android主机和4G模块,所述的4G模块通过USB接口以及UART接口与Android主机的主控芯片通信,所述的Android系统包括应用层、应用框架层、系统运行库层、硬件抽象层HAL、Kernel内核层和Device设备层,包括以下步骤:1)ril-daemon服务启动时会执行/system/bin/rild程序,此时在rild的main方法中通过pthread_create创建一个监听线程;2)用户空间和Linux内核使用Netlink机制进行通信,所以在监听线程中创建Netlink套接字,调用socket函数创建套接字,并得到唯一的文件描述符的值;3)使用poll机制轮询2)中创建的套接字描述符,调用poll方法时,没有数据线程会阻塞,有数据会立刻返回;4)等待linux内核uevent事件产生;5)当没有uevent事件产生时,创建的线程处于阻塞状态,节省系统资源;6)当有uevent事件产生后,在硬件抽象层HAL中解析事件消息内容,获取"add"和"remove"消息,并提取PRODUCT字段数据,得到产品识别码pid、厂商识别码vid的值;7)根据获取到的pid、vid值,和系统预设的值进行比较;8)如果比较结果不一致,此时不做处理;9)如果比较结果一致,那么使用exit命令退出rild进程,此时系统会重启ril-daemon服务,重新恢复通信机制,到此一个完整的监测事件机制完成。进一步的方法是通过以下步骤,完成对SIM卡状态监测处理,1)在reference-ril文件中,通过在onUnsolicited函数中定义整型变量count,用来统计4G模块在工作时产生的aterror次数;2)统计计数时,判断是否为连续产生的aterror消息;3)如果不是连续性的aterror消息,则对count清零;4)如果是连续性的aterror消息,统计count计数,并设置最大的计数阈值为80;5)每次计数时判断计数值是否达到阈值大小;6)如果没有达到阈值,继续对count加1计数;7)当计数达到最大阈值时,首先对count清零处理,用来下次继续计数,然后发送at命令到4G模块,对4G模块做软重启操作。本专利技术所公开的原理如下:Android的硬件抽象层,是对Linux内核驱动程序的封装,向上提供接口,屏蔽linux底层的实现细节。而Linux的热插拔事件是通过内核的kobject机制来实现,当有事件产生时,我们就可以尝试在硬件抽象层HAL捕获产生的事件,再进行事件过滤,从而提取出需要轮询的事件。Android系统启动时会加载ril-daemon服务,在服务中会执行rild进程,rild所处的位置就是在硬件抽象层之中。在硬件抽象层HAL中使用pthread_create函数创建一个线程,线程里面创建PF_NETLINK套接字并通过poll机制轮询是否有热插拔事件产生。如果当前系统没有事件产生,那么创建的线程一直处于阻塞状态,等待事件发生。当4G模块与主控制器usb接口出现异常情况,如松动时,Linux内核会上报uevent事件消息,此时硬件抽象层HAL中会接收到事件并过滤掉不相关的消息字段,只保留"add"以及"remove"消息并提取出"PRODUCT"消息内容,此时我们在硬件抽象HAL中就可以获取到4G模块的厂商识别码vid、产品识别码pid,然后与系统默认设置的usb数据进行匹配,如果匹配不成功,说明不是当前4G模块产生的事件,不做处理,如果匹配成功则重新启动android后台rild进程,以此恢复正常工作状态。同时,在正常情况下,4G模块可以通过usb接口主动上报当前网络状态、信号值等信息,上层应用也可以通过usb接口下发AT指令到4G模块。当4G模块处于正常工作时,模块对AT指令都会做出响应。在车载环境中,对于卡槽式SIM卡,可能会出现SIM卡座触点和SIM卡触点未接触好、或者由于SIM卡松动、或者经过无网络区域后无法找到4G信号等情况造成4G模块对AT指令不识别,4G模块不能处理相应的业务功能,从而导致通信中断,由此可以判断出模块出现了SIM卡识别故障,此时系统radio日志中会重复出现AT错误指令。因此可以在硬件抽象层中修改reference-ril文件中的onUnsolicited方法,通过连续捕获radio日志中出错AT指令的次数count,当连续错误次数count达到设置的最大阈值时,判断模块不能对AT指令作出响应,此时直接发送AT软重启指令重启4G模块,以此恢复模块正常工作状态。与现有技术相比,本专利技术所公开的方法,通过在主动监测4G模块的工作状态,发现出现异常情况后,即主动重启4G相关的软件控制,从而达到保证4G模块稳定运行的效果。附图说明图1为Android系统的硬件抽象层监测Linux内核热插拔事件的实施流程图。图2为通过4G模块自主上报的消息机制来监测SIM卡状态的实施流程图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述。实施例1。本实施例描述的基于Android系统的4G模块稳定工作方法,包括Android主机和4G模块,所述的4G模块通过USB接口以及UART接口与Android主机的主控芯片通信,所述的Android系统包括应用层、应用框架层、系统运行库层、硬件抽象层HAL、Kernel内核层和Device设备层,针对Linux热插拔事件的处理步骤如下,流程图如图1所示:1)ril-daemon服务启动时会执行/system/bin/rild程序,此时在r本文档来自技高网...

【技术保护点】
1.一种基于Android系统的4G模块稳定工作方法,包括Android主机和4G模块,所述的4G模块通过USB接口以及UART接口与Android主机的主控芯片通信,所述的Android系统包括应用层、应用框架层、系统运行库层、硬件抽象层HAL、Kernel内核层和Device设备层,其特征是包括以下步骤:1)ril‑daemon服务启动时会执行/system/bin/rild程序,此时在rild的main方法中通过pthread_create创建一个监听线程;2)用户空间和Linux内核使用Netlink机制进行通信,所以需要在监听线程中创建Netlink套接字,调用socket函数创建套接字,并得到唯一的文件描述符的值;3)使用poll机制轮询2)中创建的套接字描述符,调用poll方法时,没有数据线程会阻塞,有数据会立刻返回;4)等待linux内核uevent事件产生;5)当没有uevent事件产生时,创建的线程处于阻塞状态,节省系统资源;6)当有uevent事件产生后,在硬件抽象层HAL中解析事件消息内容,获取"add"和"remove"消息,并提取PRODUCT字段数据,得到产品识别码pid、厂商识别码vid的值;7)根据获取到的pid、vid值,和系统预设的值进行比较;8)如果比较结果不一致,此时不做处理;9)如果比较结果一致,那么使用exit命令退出rild进程,此时系统会重启ril‑daemon服务,重新恢复通信机制,到此一个完整的监测事件机制完成。...

【技术特征摘要】
1.一种基于Android系统的4G模块稳定工作方法,包括Android主机和4G模块,所述的4G模块通过USB接口以及UART接口与Android主机的主控芯片通信,所述的Android系统包括应用层、应用框架层、系统运行库层、硬件抽象层HAL、Kernel内核层和Device设备层,其特征是包括以下步骤:1)ril-daemon服务启动时会执行/system/bin/rild程序,此时在rild的main方法中通过pthread_create创建一个监听线程;2)用户空间和Linux内核使用Netlink机制进行通信,所以需要在监听线程中创建Netlink套接字,调用socket函数创建套接字,并得到唯一的文件描述符的值;3)使用poll机制轮询2)中创建的套接字描述符,调用poll方法时,没有数据线程会阻塞,有数据会立刻返回;4)等待linux内核uevent事件产生;5)当没有uevent事件产生时,创建的线程处于阻塞状态,节省系统资源;6)当有uevent事件产生后,在硬件抽象层HAL中解析事件消息内容,获取"add"和"remove"消息,并提取PRODUC...

【专利技术属性】
技术研发人员:康克勤金昊炫张宏宽胡权
申请(专利权)人:数源科技股份有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1