发明内容
本申请提供一种仪表启动方法、装置、设备、存储介质及程序产品,通过将内核处于深度睡眠状态,使得在启动仪表分时操作***时,可以直接从深度睡眠状态唤醒,提高仪表分时操作***的启动速度。
第一方面,本申请提供一种仪表启动方法,所述方法应用于同时搭载有仪表分时操作***和中控分时操作***的***;所述方法包括:
在接收到用于指示启动仪表的第一指令时,获取内核的状态;
当所述内核的状态为深度睡眠状态时,则控制所述内核从深度睡眠状态切换为正常运行状态;所述深度睡眠状态表示至少一个应用处于挂起状态,且不存在处于前台运行状态的应用;所述正常运行状态表示至少一个应用处于前台运行状态;
运行仪表分时操作***对应的第一容器,通过所述第一容器启动所述仪表分时操作***,并显示仪表信息;
运行中控分时操作***对应的第二容器,通过所述第二容器启动所述中控分时操作***,并显示中控界面。
可选的,所述方法还包括:
在接收到用于指示关闭仪表的第二指令时,控制所述内核进入深度睡眠状态。
可选的,控制所述内核进入深度睡眠状态,包括:
控制部分应用处于挂起状态,以及,控制所有应用中处于挂起状态之外的应用处于终止状态;
相应的,控制所述内核从深度睡眠状态切换为正常运行状态,包括:
控制所述内核唤醒处于挂起状态的所述部分应用。
可选的,所述方法还包括:
当所述内核处于深度睡眠状态时,周期性运行处于挂起状态的所述应用,以使所述应用处于后台运行状态。
可选的,所述运行仪表分时操作***对应的第一容器,通过所述第一容器启动所述仪表分时操作***,并显示仪表信息,包括:
运行所述仪表分时操作***对应的第一容器,通过运行第一容器中的文件以启动仪表分时操作***;
在所述仪表分时操作***进行启动后,控制仪表屏幕背光亮起,并通过仪表屏幕显示仪表信息。
可选的,所述方法还包括:
当所述内核进入深度睡眠状态之前,保存所述仪表分时操作***显示的仪表信息,所述仪表信息包括:里程信息和油量信息。
可选的,所述第一指令为当汽车设备的ACC档位处于ON状态时产生的指令;所述第二指令包括为汽车设备的ACC档位处于OFF状态时产生的指令。
第二方面,本申请提供一种仪表启动装置,所述装置应用于同时搭载有仪表分时操作***和中控分时操作***的***;所述装置包括:
获取模块,用于在接收到用于指示启动仪表的第一指令时,获取内核的状态;
控制模块,用于当所述内核的状态为深度睡眠状态时,则控制所述内核从深度睡眠状态切换为正常运行状态;所述深度睡眠状态表示至少一个应用处于挂起状态,且不存在处于前台运行状态的应用;所述正常运行状态表示至少一个应用处于前台运行状态;
第一处理模块,用于运行仪表分时操作***对应的第一容器,通过所述第一容器启动所述仪表分时操作***,并显示仪表信息;
第二处理模块,用于运行中控分时操作***对应的第二容器,通过所述第二容器启动所述中控分时操作***,并显示中控界面。
第三方面,本申请提供一种仪表启动设备,包括:存储器和至少一个处理器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面任一项所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如第一方面任一项所述的方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如第一方面任一项所述的方法。
本申请提供了一种仪表启动方法、装置、设备、存储介质及程序产品,方法应用在同时搭载有仪表分时操作***和中控分时操作***的***;所述方法包括:在接收到用于指示启动仪表的第一指令时,获取内核的状态;所述内核的状态为深度睡眠状态时,则控制所述内核从深度睡眠状态切换为正常运行状态;所述深度睡眠状态表示至少一个应用处于挂起状态,且不存在处于前台运行状态的应用;所述正常运行状态表示至少一个应用处于前台运行状态;运行仪表分时操作***对应的第一容器,通过所述第一容器启动所述仪表分时操作***,并显示仪表信息;运行中控分时操作***对应的第二容器,通过所述第二容器启动所述中控分时操作***,并显示中控界面,所述方法通过将内核处于深度睡眠状态,当再次启动仪表时,可以从深度睡眠状态进行唤醒,可以提高仪表的启动速度。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1为本发明实施例提供的一种应用场景示意图,如图1所示,CPU11为中央处理器(Central Processing Unit),能够对汽车设备产生的指令进行响应,并控制操作***中的内核的执行内容。汽车设备的中控***12和仪表***13位于面向用户的应用层,在中控***12和仪表***13中分别设置有容器,以实现不同***的启动;中间的GUI为接口层,用于提供丰富的功能控件和精美的界面设计功能;***的底层为操作***15,包括文件***的搭建及驱动程序的运行,而内核是操作***的核心,可以决定程序在何时对各个硬件的操作时长。
前文的中控***和仪表***是按照业务功能分类的叫法,后面的仪表分时操作***即仪表***,中控分时操作***即中控***。
此处为了降低硬件资源的浪费,仪表***13和中控***共用一个芯片,将仪表***13和中控***12同时搭载在一个***上,如linux***。然而,将仪表***13搭载在linux***时,仪表***在进行启动时,存在启动速度慢的问题。
基于上述问题,本申请通过当不使用汽车设备时,将内核处于深度睡眠状态,在当接收到启动仪表的第一指令时,根据内核的状态信息执行不同的操作,当内核的状态信息为深度睡眠状态时,则直接控制内核从深度睡眠状态切换为正常运行状态,能够使得内核无需进行完整的初始化过程,从而加快仪表的启动速度。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本发明实施例提供的一种仪表启动方法的流程示意图,本实施例所提供的方法可以由CPU执行,如图2所示,本实施例的方法,可以包括:
S201、在接收到用于指示启动仪表的第一指令时,获取内核的状态。
在本实施例中,当在接收到启动仪表的第一指令时,可以先获取***中内核的状态,内核的状态可能为两种,一种情形为当汽车在第一次启动时,内核未经过初始化;第二种情形为内核处于深度睡眠状态;当内核所处的状态不同时,可以控制内核执行不同的操作。
S202、当所述内核的状态为深度睡眠状态时,则控制所述内核从深度睡眠状态切换为正常运行状态;所述深度睡眠状态表示至少一个应用处于挂起状态,且不存在处于前台运行状态的应用;所述正常运行状态表示至少一个应用处于前台运行状态。
当内核处于深度睡眠状态时,则直接控制内核从深度睡眠状态唤醒,即控制内核从深度睡眠状态切换为正常状态。
其中,当内核处于深度睡眠状态时,所有的应用中至少一个应用处于挂起状态,另一部分应用处于终止状态,即处于杀死状态,同时不存在处于前台运行状态的应用。当内核处于深度睡眠状态时,仪表分时操作***还处于上电状态。
而正常运行状态则是指至少一个应用处于前台运行状态,也可以允许部分应用处于挂起状态或后台运行。
此外,当所述内核的状态为未经过初始化时,则控制所述内核进行初始化操作。
其中,当内核的状态为未经过初始化时,则可以控制内核进行初始化操作。内核为***中的软件,可以实现进程管理、内存管理、IO管理、文件管理以及网络管理等。具体的,可以将***的内核装入内存中,并控制内核对硬件以及电路逻辑的初始化,以便于完成后续的仪表启动。
在进行初始化操作之前还需要进行硬件的上电,如嵌入式单板CPU芯片的上电和仪表分时操作***的上电。
其中,所述内核的状态是否处于未经过初始化状态,可以通过是否为第一次接收到启动仪表的指令来确定。若第一次接收到启动仪表的指令,则内核的状态为未经过初始化,当控制内核进行初始化操作后,进而启动仪表,并在不使用汽车设备后,控制内核处于深度睡眠状态;若不是第一次接收到启动仪表的指令,内核的状态为深度睡眠状态,可以直接从深度睡眠状态进行唤醒。
S203、运行仪表分时操作***对应的第一容器,通过所述第一容器启动所述仪表分时操作***,并显示仪表信息。
当将内核从深度睡眠状态唤醒后,执行运行仪表分时操作***对应的第一容器的流程,使得仪表信息可以显示在仪表屏幕上。
S204、运行中控分时操作***对应的第二容器,通过所述第二容器启动所述中控分时操作***,并显示中控界面。
其中,与显示仪表信息的过程相似,可以通过运行与中控分时操作***对应的第二容器,通过第二容器控制中控分时操作***启动,并显示中控界面。
当在控制仪表分时操作***启动后,可以继续启动中控分时操作***。通常,当用户在使用汽车设备时,需要根据仪表显示的信息来确定车辆的行驶状况。而中控分时操作***通常用于娱乐装置的运行,对于中控分时操作***的启动速度的要求较低,因此可以在仪表分时操作***启动完成后,继续进行中控分时操作***的启动。
仪表分时操作***和中控分时操作***共用一个内核,其中,仪表分时操作***可以为linux操作***;中控分时操作***可以为Android操作***。当内核处于深度睡眠状态时,仪表分时操作***和中控分时操作***均处于睡眠状态,因此在启动中控分时操作***时仅通过运行第二容器即可实现。
本实施例中,当不使用汽车时,控制内核处于深度睡眠状态,并且当仪表分时操作***在启动时,若内核处于深度睡眠状态,直接从深度睡眠状态进行唤醒,无需执行硬件上电和内核初始化的步骤,节约了仪表启动的流程,从而提高仪表分时操作***的启动速度,并且当仪表分时操作***在启动完成后,可以继续启动中控分时操作***。在实际中,通过上述方法可以实现2秒内启动仪表进程,显示仪表数据。
在一些实施例中,所述方法还包括:
在接收到用于指示关闭仪表的第二指令时,控制所述内核进入深度睡眠状态。
其中,在本实施例中,为了实现控制内核从深度睡眠状态切换为正常状态,需要在不使用汽车时,控制内核进行深度睡眠状态。具体的,当在用车完毕时,用户可以发送指示关闭仪表的第二指令,当CPU在接收到该第二指令时,可以进入深度睡眠状态。
在实际中,当汽车设备为第一次上电启动时,内核的状态信息为未经过初始化。当汽车设备在第一次上电启动后,当接收到汽车下电的第二指令时,可以进入深度睡眠状态,那么当汽车设备在第二次及后续上电启动时,则可以直接从深度睡眠状态唤醒。
通过控制内核进入深度睡眠状态,便于当用户下次在启动仪表时能够直接从深度睡眠状态切换为正常状态。
在一些实施例中,控制所述内核进入深度睡眠状态,包括:
控制部分应用处于挂起状态,以及,控制所有应用中处于挂起状态之外的应用处于终止状态;
相应的,控制所述内核从深度睡眠状态切换为正常运行状态,包括:
控制所述内核唤醒处于挂起状态的所述部分应用。
其中,在控制内核进入深度睡眠状态时,可以根据用户的需求将部分应用设置为挂起状态,将其余应用设置为终止状态,也就是杀死状态。通过将部分应用挂起以及将其余应用杀死,从而减少仪表分时操作***的CPU的损耗以及网络压力,降低深度睡眠过程电量的损耗。其中,对于处于挂起状态的应用和处于终止状态的应用,可以根据实际情况进行确定,此处不做限制。
相应的,当控制内核从深度睡眠状态唤醒时,内核已经就绪,仅需要控制内核切换为正常运行状态,以及唤醒处于挂起状态的所述部分应用。
在一些实施例中,所述方法还包括:
当所述内核处于深度睡眠状态时,周期性运行处于挂起状态的所述应用,以使所述应用处于后台运行状态。
其中,当内核处于深度睡眠状态时,处于挂起状态的应用还需要周期性的运行。其中,可以预先设置运行周期,如运行周期为6小时。当CPU接收到计时器发送的当前时刻满足设定的运行周期的指令时,CPU将会控制内核运行处于挂起状态的所述应用。
其中,后台运行状态是指应用处于操作***的后台,且正在运行的状态,即在后台***执行应用代码。其中,进入后台运行状态的应用在维持一段时间后,会重新进入挂起状态。
在一些实施例中,所述运行仪表分时操作***对应的第一容器,通过所述第一容器启动所述仪表分时操作***,并显示仪表信息,包括:
运行所述仪表分时操作***对应的第一容器,通过运行第一容器中的文件以启动仪表分时操作***;
在所述仪表分时操作***进行启动后,控制仪表屏幕背光亮起,并通过仪表屏幕显示仪表信息。
在启动仪表进程时,需要运行第一容器中的文件,文件包括显示应用程序、声音应用程序以及其他相关应用程序,通过运行文件,可以实现仪表的进程的启动。
当内核处于深度睡眠状态时,与仪表分时操作***对应的第一容器也处于终止运行状态。以及,当仪表首次启动时也需要运行第一容器中的文件。
其中,通过容器技术可以将仪表分时操作***和中控分时操作***互相隔离,独立运行。
进一步的,当内核处于深度睡眠状态时,仪表屏幕背光会处于关闭状态。因此,在仪表启动后,还需要将仪表屏幕背光点亮,以使仪表信息可以显示在屏幕上。
在一些实施例中,所述方法还包括:
当所述内核进入深度睡眠状态之前,保存所述仪表分时操作***显示的仪表信息,
所述仪表信息包括:里程信息和油量信息。
此外,为了便于快速启动仪表,还可以将内核在进入深度睡眠状态之前的仪表信息进行保存。具体的,可以将仪表信息保存在RAM(Random Access Memory,随机存取存储器)中,且将RAM处于上电状态。当下次在启动仪表时,仪表背光亮起后,直接可以从RAM中读取仪表信息,并将仪表信息显示在仪表屏幕上。其中,此处的仪表信息可以为里程信息和油量信息等。
通过将仪表信息进行保存,可以实现当下次仪表启动时,可以快速显示仪表信息。
在一些实施例中,所述第一指令为当汽车设备的ACC档位处于ON状态时产生的指令;所述第二指令包括为汽车设备的ACC档位处于OFF状态时产生的指令。
其中,当用户将汽车设备的ACC档位处于ON状态时,表示汽车设备上电,此时CPU将会接收到第一指令。
相反的,当用于将汽车设备的ACC档位处于OFF状态时,表示汽车设备下点,此时CPU将会接收到第二指令。
此外,用户还可以通过汽车钥匙控制汽车设备上电或下电,相应的,CPU可以接收到第一指令或第二指令。
图3为本发明实施例提供的另一种仪表启动方法的流程示意图,如图3所示,所述方法包括:
S301、检测到ACC档位处于ON状态时,执行步骤S302;
S302、判断是否为第一次上电启动;若是,则执行步骤S303;若否,则执行步骤S304;
S303、Linux内核初始化完成;
S304、退出深度睡眠状态,进入正常运行状态,内核唤醒挂起的应用;
S305、第一容器运行,仪表屏幕背光亮起,仪表正常显示;
S306、第二容器运行,启动中控分时操作***;
S307、检测到ACC档位处于OFF状态;
S308、进入深度睡眠状态,部分应用被挂起,仪表屏幕背光关闭,第一容器被终止;
S309、再次检测到ACC档位处于ON状态。
在实际中,可以根据上述执行步骤控制仪表启动。
通过上述方法,当不使用汽车时,控制内核处于深度睡眠状态,并且当仪表在启动时,若内核处于深度睡眠状态,直接从深度睡眠状态进行唤醒,无需执行硬件上电和内核初始化的步骤,节约了仪表启动的流程,从而提高仪表的启动速度。在实际中,通过上述方法可以实现2秒内启动仪表进程,显示仪表数据。
在上述各实施例的基础上,考虑到用户使用汽车设备的频率的不同,可以根据用户使用汽车的频率来设置内核处于深度睡眠状态的时间。具体的,当汽车设备在下电后,可以先控制内核进入深度睡眠状态,并对内核处于深度睡眠状态的时间进行计时,当计时结果超过预设时间时,则控制内核处于停止运行的状态。例如,当内核处于深度睡眠状态的时间达到10天时,可以控制内核处于停止运行的状态。
通过上述操作可以当用户在频繁使用汽车时,能够进入深度睡眠状态,从而在下次使用汽车时快速启动仪表;当用户在不频繁使用汽车时,能够退出深度睡眠状态,降低功耗。
图4为本发明实施例提供的仪表启动装置的结构示意图。如图4所示,所述装置40应用于同时搭载有仪表分时操作***和中控分时操作***的操作***;所述装置40包括:
获取模块401,用于在接收到用于指示启动仪表的第一指令时,获取内核的状态;
控制模块402,用于当所述内核的状态为深度睡眠状态时,则控制所述内核从深度睡眠状态切换为正常运行状态;所述深度睡眠状态表示至少一个应用处于挂起状态,且不存在处于前台运行状态的应用;所述正常运行状态表示至少一个应用处于前台运行状态;
第一处理模块403,用于运行仪表分时操作***对应的第一容器,通过所述第一容器启动所述仪表分时操作***,并显示仪表信息;
第二处理模块404,用于运行中控分时操作***对应的第二容器,通过所述第二容器启动所述中控分时操作***,并显示中控界面。
在一些实施例中,所述控制模块402还用于:
在接收到用于指示关闭仪表的第二指令时,控制所述内核进入深度睡眠状态。
在一些实施例中,所述控制模块402在控制所述内核进入深度睡眠状态时,具体用于:
控制部分应用处于挂起状态,以及,控制所有应用中处于挂起状态之外的应用处于终止状态;
相应的,所述控制模块402在控制所述内核从深度睡眠状态切换为正常运行状态时,具体用于:
控制所述内核唤醒处于挂起状态的所述部分应用。
在一些实施例中,所述控制模块402还用于:
当所述内核处于深度睡眠状态时,周期性运行处于挂起状态的所述应用,以使所述应用处于后台运行状态。
在一些实施例中,所述第一处理模块403具体用于:
运行所述仪表分时操作***对应的第一容器,通过运行第一容器中的文件以启动仪表分时操作***;
在所述仪表分时操作***进行启动后,控制仪表屏幕背光亮起,并通过仪表屏幕显示仪表信息。
在一些实施例中,所述装置还包括保存模块,用于:
当所述内核进入深度睡眠状态之前,保存所述仪表分时操作***显示的仪表信息,所述仪表信息包括:里程信息和油量信息。
本发明实施例提供的仪表启动装置,可以实现上述如图2、图3所示的实施例的仪表启动方法,其实现原理和技术效果类似,此处不再赘述。
图5为本发明实施例提供的一种仪表启动设备的硬件结构示意图。如图5所示,本实施例提供的仪表启动设备50包括:至少一个处理器501和存储器502。其中,处理器501、存储器502通过总线503连接。
在具体实现过程中,至少一个处理器501执行所述存储器502存储的计算机执行指令,使得至少一个处理器501执行上述方法实施例中的仪表启动方法。
处理器501的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图5所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述方法实施例的仪表启动方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本申请一个实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如本申请图2至图3所对应的实施例中任意实施例提供的仪表启动方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。