法律状态公告日
法律状态信息
法律状态
2018-12-14
授权
授权
2016-10-12
实质审查的生效 IPC(主分类):G06F9/50 申请日:20140108
实质审查的生效
2014-04-09
公开
公开
技术领域
本发明涉及CPU负担动态平衡的方法,具体涉及一种车载导航屏和车载终端利用串口实现CPU负担动态平衡的方法。
背景技术
车联网行业GPS用户(如出租车,公交车)的GPS车载系统一般由车载终端加调度屏组成。随着社会经济的发展,技术的进步,传统的简单调度屏逐渐被功能强大的导航调度屏(简称导航屏)替代。导航屏一般都是7寸或更大的彩屏,采用Android或WinCE操作系统,可以实现调度、导航、多媒体播放等强大的功能,和车载终端之间的交互也更加复杂。导航屏一般采用和车载终端类似的ARM9或者更强大的CPU,性能较强。
但是在实际使用中,往往车载终端CPU负担较重,太多的功能导致CPU不堪重负,从而造成整体性能下降或延时,而导航屏往往负载较轻,CPU计算能力大部分时间被闲置。极端情况下(比如导航屏计算导航路线时)也会出现导航屏CPU处理量过大而车载终端CPU负载较为轻松的情况。如何平衡导航屏和车载终端之间CPU使用率成为了行业中的难题。如果能提出一种车载导航屏和车载终端CPU负担动态平衡的方法来解决这一难题,使导航屏和车载终端的CPU计算能力都能得到充分的利用,将大大的提高车载GPS系统的工作效率,提高客户体验,使车载GPS系统发挥更大的作用。而车载终端和导航屏之间一般是串口通讯,串口通讯速率较低,现有的CPU动态平衡方案基本上两个CPU在同一个设备里,交互通过高速总线。目前市场上还没有别的厂家能提出方案,解决车载导航屏和车载终端这个设备之间通过串口实现CPU负载动态平衡的问题。
发明内容
因此,本发明旨在克服现有技术之不足,提供一种车载导航屏和车载终端两个不同设备之间通过串口实现CPU负担动态平衡的方法,以实现车载终端和导航屏这两者的CPU之间的负载平衡,充分发挥这两个CPU(车载终端的CPU和导航屏的CPU)的计算能力,来大大提高车载GPS系统的工作效率。
为了解决上述技术问题,本发明的思路如下:一般的,车载终端和导航调度屏之间,一般都是通过串口通讯。而串口通讯速率较低,最多只有115200bps,所以以前常用的在同一设备间两不同CPU负载平衡的方法并不适用。本发明则实现了在较低数据交换情况下两不同设备之间通过低速串口实现CPU负载的平衡。
具体的,本发明的一种车载终端利用串口实现CPU负担动态平衡的方法,在导航屏的程序中增加一个CPU负担调度程序C,该CPU负担调度程序C负责判断各车载终端模块和导航屏线程的CPU占用率情况并动态调度,其调度方法如下:
步骤1:CPU负担调度程序C实时监控车载终端模块和导航屏线程的CPU使用率;
步骤2:CPU负担调度程序C检测到有车载终端模块或者导航屏线程的CPU使用率超出预设值(导航屏或者车载终端突发负载比较重的线程或者模块时,则会发生该情况),则通知导航屏或车载终端对CPU使用率超出预设值的线程或模块进行抽象,导航屏或车载终端抽象结束后返回通知CPU负担调度程序C;
步骤3:CPU负担调度程序C将此超出预设值的车载终端模块或者导航屏线程加入到CPU负担调度程序C的动态平衡模块序列中去;其中该动态平衡模块序列是用CPU负担调度程序C来维护的,该动态平衡模块序列用于获取超出预设值的车载终端模块或者导航屏线程的编号,按照优先级以及超出CPU占用率的情况进行排序,CPU负担调度程序C顺序执行该动态平衡模块序列,进而达到实现负载平衡的目的;
步骤4:如果超出预设值是车载终端模块,则CPU负担调度程序C通知导航屏CPU执行该车载终端模块,并终止车载终端CPU继续执行该模块;
如果超出预设值的是导航屏线程,则CPU负担调度程序C通知车载终端CPU执行该导航屏线程,并终止导航屏CPU继续执行该导航屏线程。
所述步骤1中,还包括如下过程:车载终端模块或导航屏线程如果检测到CPU使用率高的线程,则自动将该CPU使用率高的线程向CPU负担调度程序C汇报。
所述步骤2中,导航屏或车载终端对CPU使用率超出预设值的模块或线程进行抽象,具体是将车载终端的程序中的CPU占用率比较高的模块进行抽象,将导航屏的程序中的CPU占用率比较高的线程进行抽象,将这些线程或模块复杂的计算统一成浮点计算模块在不同运算规则下的结果(可先生成一个统一的计算模板,数据处理即可抽象为计算模板的不同规则的叠加),这些标准浮点计算模块拥有标准的输入输出接口,支持抽象出来的若干计算规则,这样,导航屏和车载终端之间交换处理数据则只需要通过串口交换输入和规则序号,获得输出结果即可,这样,可大大节省两者间交互的数据量。将车载终端抽象出来的模块记为车载终端模块A1,A2,..An,将导航屏抽象出来的线程记为导航屏线程B1,B2,…Bm。
因为串口间通讯速率比较低,不能及时传输较大的数据量,所以才需要把一些较复杂的计算模块抽象成简单的浮点计算通过规则叠加,这样只需要传输这些简单的浮点计算的规则,从而可以实现低数据传输量下的负载平衡,因此,本发明通过上述步骤1和步骤2即可通过低速串口实现CPU负载的平衡。
上述过程中,CPU负担调度程序C实时获取车载终端CPU和导航屏CPU的运行情况,对自动对其负载情况进行分析判断。如果车载终端CPU总体负载过大,而导航屏CPU利用率低,则从车载终端模块A1-An中找到最耗CPU的模块,例如最耗CPU的模块是A1,则通过串口通知导航屏程序加载计算对应的模块AB1(通过标准浮点计算模块计算得到的),接收车载终端程序传来的A1程序的输入和规则,并将AB1的输出传送给车载终端程序,同时通知车载终端程序关闭计算模块A1,将A1模块的输入及规则传送给导航屏程序,并接受AB1模块的输出。若车载终端CPU利用率还是较高,则继续转移计算模块A2;同理,如导航屏CPU利用率较高,则转移B1模块,以此类推,从而实现了通过低速串口导航屏和车载终端CPU负担的动态平衡。
本发明通过上述方案,实现车载导航屏和车载终端利用串口实现CPU负担动态平衡。具体的,通过车载终端和导航屏两种设备的不同的CPU,利用较为低速的串口实现了整个GPS系统计算能力的动态平衡,客观上达到了同一设备之间“双核”的效果,避免了一个CPU吃不了,另一个CPU吃不饱的不均衡的状况,从而避免了设备实际运行中因为车载终端CPU或导航屏CPU处理不过来而导致的系统处理水平下降、卡机、速度慢等状况(如车台在实时录音压缩时播放tts会卡顿,计算导航路线耗时过长的现象),使导航屏和车载终端的CPU计算能力都能得到充分的利用,大大的提高了车载GPS系统的工作效率,提高了客户体验,使车载GPS系统能够发挥更大的作用。
附图说明
图1为本发明的操作流程示意图。
具体实施方式
现结合附图和具体实施方式对本发明进一步说明。
程序开发时,针对嵌入式系统的特点,将车载终端的程序中的CPU占用率比较高(比如大于20%)的模块进行抽象,将导航屏的程序中的CPU占用率比较高的线程进行抽象,即将这些模块复杂的计算统一成浮点计算模块在不同运算规则下的结果 (可先生成一个统一的计算模板,数据处理即可抽象为计算模板的不同规则的叠加。类似于不同的计算,可以比作某种运算的各种规则下的叠加,也就是本发明把这些复杂的计算抽象成某些基本计算模块在不同规则下的叠加),这些标准浮点计算模块拥有标准的输入输出接口,支持抽象出来的若干计算规则,这样,导航屏和车载终端之间交换处理数据则只需要通过串口交换输入和规则序号,获得输出结果即可,这样,可大大节省两者间交互的数据量。简单来说抽象出来的如车载终端模块A1,A2..An,导航屏线程B1,B2,Bm,在相对负担比较轻的导航屏程序中增加一个CPU负担调度程序C,由这个程序负责判断各模块的CPU占用率情况并动态调度。如图,系统上电,导航屏和车载终端正常加载模块B1-Bm,C;A1-An。如果导航屏或者车载终端突发负载比较重的程序或者模块,则立即按照已有规则抽象,并通知调度程序C。C将此新的模块加入到动态平衡模块序列中去。C程序实时获取车载终端导航屏告诉自己的CPU负载情况,并自动判断。如车载终端CPU总体负载过大,而导航屏CPU利用率低,则从A1-An模块中判断最耗CPU的模块如是A1,则通过串口通知导航屏程序加载计算对应的模块AB1,接收车载终端程序传来的A1程序的输入和规则,并将AB1的输出传送给车载终端程序,同时通知车载终端程序关闭计算模块A1,将A1模块的输入及规则传送给导航屏程序,并接受AB1模块的输出。若车载终端CPU利用率还是较高,则继续转移计算模块A2。同理,如导航屏CPU利用率较高,则转移B1模块,以此类推,从而实现了通过低速串口导航屏和车载终端CPU负担的动态平衡。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
机译: 一种利用电话网手段进行银行账户用户外部终端与银行系统内部终端之间通信的方法及实现该方法的装置
机译: 一种在移动卫星系统中利用无线电资源的最佳使用来实现终端到终端呼叫的方法
机译: 一种确保数据传输充分的方法,该方法利用终端和软件装置来实现该方法