具体实施方式
下面将参考附图对本公开作进一步地详细描述。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路等未作详细描述,以便于凸显本公开的主旨。
相关技术中,网络摄像机包括多个中央处理器,每个中央处理器连接至少一个外部存储器如Flash存储器,系统上电或重启后,每个中央处理器内部的引导加载程序(Bootloader)会自动引导外部存储器的代码至内部随机存取存储器(Random AccessMemory,RAM)运行。因此,随着中央处理器的数量增加,使得板卡上的Flash存储器的数量增加,这样,不仅增加了硬件成本,还会导致板卡的面积会增大,进而增大了其占用网络摄像机的内部空间。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个问题,本公开提出了一种应用于摄像机的启动方法,具体执行该方法的处理逻辑的可以是摄像机中的主中央处理器,在以下实施例中,称该主中央处理器为第一中央处理器。利用本公开的实施方式的技术方案,不仅解决了相关技术中因外部存储器数量多而导致的占用摄像机内部空间增大的问题,还降低了硬件成本。
图1为根据本公开一实施例的启动方法的流程图,该方法应用于摄像机,所述摄像机包括一个第一中央处理器和M个第二中央处理器,所述M为大于或等于1的整数,所述第一中央处理器具有外部存储器;在外部存储器的第一分区中存储有第一中央处理器的第一镜像文件,在外部存储器的第二分区中存储有M个第二中央处理器对应的M个第二镜像文件。如图1所示,该方法包括:
S101,响应于启动操作,从第一中央处理器的外部存储器读取第一镜像文件;其中,所述外部存储器的第一分区中存储有所述第一中央处理器的第一镜像文件,所述外部存储器的第二分区中存储有M个第二中央处理器对应的M个第二镜像文件;
S102,基于所述第一镜像文件控制第一中央处理器的启动;
S103,在所述第一中央处理器完成启动的情况下,从外部存储器中获取N个第二中央处理器的N个第二镜像文件,所述N为大于1且小于等于M的整数;
S104,基于所述第一中央处理器与所述N个第二中央处理器之间分别对应的通信内容,确定所述N个第二中央处理器分别对应的启动状态;
S105,基于所述N个第二镜像文件以及所述N个第二中央处理器分别对应的启动状态,分别控制所述N个第二中央处理器进行启动。
在本公开实施例中,所述启动操作是用于触发所述摄像机启动的操作。示例性地,所述启动操作包括但不限于:用户按下摄像机的开机按键,摄像机响应于重启指令重新启动。
在本公开实施例中,不同第二中央处理器可以理解为负责不同功能算法的处理器。比如,有的第二中央处理器负责计算光照强度;又比如,有的第二中央处理器负责确定摄像头的目标拍摄方向和目标焦距;再比如,有的第二中央处理器负责确定目标人体;再比如,有的第二中央处理器负责优化包含目标人体的脸部的图像。
在本公开实施例中,所述第二镜像文件是第二中央处理器的镜像文件,所述第二镜像文件包括S个子文件,S为大于或等于3的整数,具体包括引导加载程序(U-BOOT,Bootloader)镜像子文件、内核(kernel)镜像子文件和根文件系统(rootfs)镜像子文件。
在本公开实施例中,不同第二中央处理器对应的第二镜像文件的内容可以不同。第二镜像文件的具体内容由第二中央处理器实现的功能算法决定。以第二中央处理器CPUb和CPUc为例进行说明,CPUb负责处理第一应用,CPUc负责处理第二应用,那么,CPUb的第二镜像文件与CPUc的镜像文件至少有一处不同。具体地,CPUb的引导加载程序镜像子文件b1与CPUc的引导加载程序镜像子文件c1不同;和/或,CPUb的内核镜像子文件b2与CPUc的内核镜像子文件c2不同;和/或,CPUb的根文件系统镜像子文件b3与CPUc的根文件系统镜像子文件c3不同。
在本公开实施例中,所述第一镜像文件是第一中央处理器的镜像文件,所述第一镜像文件包括P个子文件,P大于或等于S,所述第一镜像文件至少包括引导加载程序镜像子文件、内核镜像子文件和根文件系统镜像子文件。
在本公开实施例中,所述启动状态包括但不限于以下状态:第j个子文件开始启动,第j个子文件正在启动,第j个子文件启动完成,j为大于等于1且小于等于S的整数。
在一些实施方式中,从外部存储器中获取N个第二中央处理器的N个第二镜像文件,包括:第一中央处理器从所述外部存储器中获取所述N个第二中央处理器对应的N个第一子文件;第一中央处理器在接收到所述N个第二中央处理器返回的N个第一子文件启动完成消息的情况下,从所述外部存储器中获取所述N个第二中央处理器的N个第二子文件;第一中央处理器在接收到所述N个第二中央处理器返回的N个第二子文件启动完成消息的情况下,从所述外部存储器中获取所述N个第二中央处理器的N个第三子文件;以此类推,直至从所述外部存储器中获取所述N个第二中央处理器的N个第S个子文件。
示例性地,以N=1、第一中央处理器记为CPUa且第二中央处理器记为CPUb为例进行说明,若CPUb的第二镜像文件包括第一子文件b1、第二子文件b2和第三子文件b3,则CPUa从外部存储器中获取CPUb对应的第一子文件b1;在接收到CPUb返回的第一子文件b1启动完成消息的情况下,从外部存储器中获取CPUb的第二子文件b2;在接收到CPUb返回的第二子文件b2启动完成消息的情况下,从外部存储器中获取CPUb的第三子文件b3。
又示例性地,以N=2、第一中央处理器记为CPUa且第一个第二中央处理器记为CPUb、第二个第二中央处理器记为CPUc为例进行说明,若CPUb的第二镜像文件包括第一子文件b1、第二子文件b2和第三子文件b3,CPUc的第二镜像文件包括第一子文件c1、第二子文件c2和第三子文件c3,则CPUa从外部存储器中获取CPUb对应的第一子文件b1以及CPUc对应的第一子文件c1;在接收到CPUb返回的第一子文件b1启动完成消息的情况下,从外部存储器中获取CPUb的第二子文件b2,并且在接收到CPUc返回的第一子文件c1启动完成消息的情况下,从外部存储器中获取CPUc的第二子文件c2;在接收到CPUb返回的第二子文件b2启动完成消息的情况下,从外部存储器中获取CPUb的第三子文件b3,并且在接收到CPUc返回的第二子文件c2启动完成消息的情况下,从外部存储器中获取第二中央处理器CPUc的第三子文件c3。
实际应用中,对于第i个第二中央处理器的第二镜像文件的获取流程为:预先从外部存储器中获取第i个第二中央处理器对应的第一子文件;在接收到第i个第二中央处理器返回的第j子文件启动完成消息的情况下,从所述外部存储器中获取所述第i个第二中央处理器的第j+1子文件,直至从所述外部存储器中获取第i个第二中央处理器的第S个子文件为止;其中,i为大于等于1且小于等于N的整数,j为大于等于1且小于等于S-1的整数。
需要说明的是,不同第二中央处理器的第二镜像文件所包括的子文件的个数可以相同,也可以不同。示例性地,第一个第二中央处理器的子文件的个数为S1,第二个第二中央处理器的子文件的个数为S2,S1=S2。比如,第一个第二中央处理器的子文件的个数3,第二个第二中央处理器的子文件的个数为3。又示例性地,第一个第二中央处理器的子文件的个数为S1,第二个第二中央处理器的子文件的个数为S2,S1≠S2。比如,第一个第二中央处理器的子文件的个数3,第二个第二中央处理器的子文件的个数为4。
通过上述实施方式,对于每个第二中央处理器的镜像文件,依次获取每个镜像文件包括的各个子文件,如此,相对于一次性获取整个镜像文件而言,能够在第二中央处理器启动的过程中,减少其镜像文件对第一中央处理器资源的占用。
在另一些实施方式中,从外部存储器中获取N个第二中央处理器的N个第二镜像文件,包括:第一中央处理器从所述外部存储器中获取所述N个第二中央处理器对应的N个第一子文件;在向所述N个第二中央处理器发送所述N个第一子文件之后的第一预设时间范围内,第一中央处理器从所述外部存储器中获取所述N个第二中央处理器的N个第二子文件;在向所述N个第二中央处理器发送所述N个第二子文件之后的第二预设时间范围内,第一中央处理器从所述外部存储器中获取所述N个第二中央处理器的N个第三子文件;以此类推,直至在向所述N个第二中央处理器发送所述N个第S-1子文件之后的第S-1预设时间范围内,第一中央处理器从所述外部存储器中获取所述N个第二中央处理器的N个第S个子文件。
其中,不同预设时间范围对应的时间可以不同,比如,第一预设时间范围∆t1与第二预设时间范围∆t2不同,第S预设时间范围与第S-1预设时间范围不同。
其中,不同预设时间范围小于发送当前子文件之后到接收到该子文件启动完成消息所需的时间。
或者,不同预设时间范围小于或等于第二中央处理器完成当前子文件的启动所需的时间。
通过上述实施方式,能够在接收到第i个第二中央处理器返回的第j子文件启动完成消息之前,预先获取第i个第二中央处理器的第j+1子文件,从而能够在接收到第i个第二中央处理器返回的第j子文件启动完成消息时,快速向第i个第二中央处理器发送第i个第二中央处理器的第j+1子文件,从而有助于第i个第二中央处理器的快速启动。
在一些实施方式中,基于所述N个第二镜像文件控制所述N个第二中央处理器的启动,包括:在从所述外部存储器中获取所述N个第二中央处理器对应的N个第一子文件后,向所述N个第二中央处理器发送所述N个第一子文件;在从所述外部存储器中获取所述N个第二中央处理器对应的N个第二子文件后,向所述N个第二中央处理器发送所述N个第二子文件;在从所述外部存储器中获取所述N个第二中央处理器对应的N个第三子文件后,向所述N个第二中央处理器发送所述N个第三子文件;以此类推,直至向所述N个第二中央处理器发送所述N个第S个子文件。
示例性地,以N=1、第一中央处理器记为CPUa且第二中央处理器记为CPUb为例进行说明,若CPUb的第二镜像文件包括第一子文件b1、第二子文件b2和第三子文件b3,则CPUa从外部存储器中获取CPUb的第一子文件b1;在接收到CPUb返回的第一子文件b1启动完成消息的情况下,从外部存储器中获取CPUb的第二子文件b2;在接收到CPUb返回的第二子文件b2启动完成消息的情况下,从外部存储器中获取CPUb的第三子文件b3。
又示例性地,以N=2、第一中央处理器记为CPUa且第一个第二中央处理器记为CPUb、第二个第二中央处理器记为CPUc为例进行说明,若CPUb的第二镜像文件包括第一子文件b1、第二子文件b2和第三子文件b3,CPUc的第二镜像文件包括第一子文件c1、第二子文件c2和第三子文件c3,则CPUa从外部存储器中获取CPUb的第一子文件b1;在接收到CPUb返回的第一子文件b1启动完成消息的情况下,从外部存储器中获取CPUb的第二子文件b2;在接收到CPUb返回的第二子文件b2启动完成消息的情况下,从外部存储器中获取的第三子文件b3;同理,CPUa从外部存储器中获取CPUc的第一子文件c1;在接收到CPUc返回的第一子文件c1启动完成消息的情况下,从外部存储器中获取CPUc的第二子文件c2;在接收到CPUc返回的第二子文件c2启动完成消息的情况下,从外部存储器中获取的第三子文件c3。
通过上述实施方式,对于每个第二中央处理器的镜像文件,依次向第二中央处理器发送其第二镜像文件包括的各个子文件,如此,相对于一次性发送整个镜像文件即所有子文件而言,不仅能够保证第二中央处理器的有效启动,还能在第二中央处理器启动的过程中,减少其镜像文件对第一中央处理器资源的占用。
在一些实施方式中,基于所述N个第二镜像文件以及所述N个第二中央处理器分别对应的启动状态,分别控制所述N个第二中央处理器的启动,包括:根据所述N个第二中央处理器分别对应的启动状态,从所述N个第二镜像文件分别为所述N个第二中央处理器选择待发送的子文件。通过上述实施方式,在第一中央处理器对N个第二中央处理器的启动进行控制的过程中,能够根据N个第二中央处理器分别对应的启动状态适时为N个第二中央处理器选择对应的子文件,既能提高第一中央处理器的资源的有效利用率,还能及时或提前获取到待发送的子文件,进而及时向第二中央处理器发送待启动的子文件,有助于提高第二中央处理器的启动完成速度。
在本公开实施例中,所述第一镜像文件以二进制文件形式存储;所述第二镜像文件以文本文件形式存储。
如此,既便于第一中央处理器的快速启动,又便于第一中央处理器快速读取并向第二中央处理器发送第二镜像文件。
本实施例所述的技术方案,通过对第一中央处理器的外部存储器进行分区处理,在外部存储器的第一分区中存储第一中央处理器的第一镜像文件,在外部存储器的第二分区中存储M个第二中央处理器对应的M个第二镜像文件,节省了外部存储器的个数,不仅解决了相关技术中因外部存储器数量多而导致的占用摄像机空间大的问题,还降低了硬件成本;另外,通过响应于启动操作,从外部存储器读取第一镜像文件;基于第一镜像文件控制第一中央处理器的启动;在第一中央处理器启动完成后,从外部存储器中获取N个第二中央处理器的N个第二镜像文件,基于N个第二镜像文件控制N个第二中央处理器的启动,如此,能够实现第一中央处理器与N个第二中央处理器的有序启动,为包括多个中央处理器的摄像机提供了有效的启动方案;并且,由于通过第一中央处理器来控制N个第二中央处理器的启动,相当于依靠可编程逻辑芯片来控制多个中央处理器的启动方式而言,能够进一步节省硬件成本。
图2为根据本公开一实施例的启动方法的流程图,该方法应用于摄像机,所述摄像机包括一个第一中央处理器和M个第二中央处理器,所述M为大于或等于1的整数,所述第一中央处理器具有外部存储器;在外部存储器的第一分区中存储有第一中央处理器的第一镜像文件,在外部存储器的第二分区中存储有M个第二中央处理器对应的M个第二镜像文件。如图2所示,该方法包括:
S201,在第一中央处理器的外部存储器的第二分区中建立M个用户文件夹,每个用户文件夹对应一个第二中央处理器;
S202,将所述M个第二中央处理器对应的M个第二镜像文件存储到对应的用户文件夹中;
S203,响应于启动操作,从所述外部存储器读取第一镜像文件;
S204,基于所述第一镜像文件控制所述第一中央处理器的启动;
S205,在所述第一中央处理器完成启动的情况下,从外部存储器中获取N个第二中央处理器的N个第二镜像文件,所述N为大于1且小于等于M的整数;
S206,基于所述第一中央处理器与所述N个第二中央处理器之间分别对应的通信内容,确定所述N个第二中央处理器分别对应的启动状态;
S207,基于所述N个第二镜像文件以及所述N个第二中央处理器分别对应的启动状态,分别控制所述N个第二中央处理器进行启动。
这里,关于第一镜像文件的获取、第一中央处理器的启动、第二镜像文件的获取、启动状态的确定以及第二中央处理器的启动等处理与前述实施例相同,不做重复说明。
作为一种实施方式,在外部存储器的第二分区中建立M个用户文件夹,每个用户文件夹对应一个第二中央处理器,包括:在外部存储器的第二分区中建立M个用户文件夹;建立M个用户文件夹与M个第二中央处理器之间的对应关系。
如图3所示,第一中央处理器的外部存储器包括第一分区和第二分区,第一中央处理器的第一镜像文件位于第一分区,M个第二中央处理器的M个第二镜像文件位于第二分区,文件夹M1对应第1个第二中央处理器,文件夹M2对应第2个第二中央处理器,文件夹Mm对应第M个第二中央处理器。
作为一种实施方式,将所述M个第二中央处理器对应的M个第二镜像文件存储到对应的用户文件夹中,包括:基于所述对应关系,将所述M个第二中央处理器对应的M个第二镜像文件存储到对应的用户文件夹中。
示例性地,将第1个第二中央处理器的第二镜像文件存储到文件夹M1,将第2个第二中央处理器的第二镜像文件存储到文件夹M2,将第M个第二中央处理器的第二镜像文件存储到文件夹Mm。
又示例性地,将第1个第二中央处理器的第二镜像文件存储到文件夹Mm,将第M-1个第二中央处理器的第二镜像文件存储到文件夹M2,将第M个第二中央处理器的第二镜像文件存储到文件夹M1。
通过上述实施方式,通过预先建立对应关系,能够为第一中央处理器后续快速读取各个第二中央处理器的第二镜像文件提供依据。
在本公开实施例中,所述第一镜像文件以二进制文件形式存储;所述第二镜像文件以文本文件形式存储。
如此,既便于第一中央处理器的快速启动,又便于第一中央处理器向第二中央处理器发送第二镜像文件,也便于后续根据需求对第二镜像文件的更新。
基于图1或图2所示的技术方案,在一些实施例中,所述方法还可包括:在接收到针对所述M个第二镜像文件中任一第二镜像文件的更新请求的情况下,基于所述更新请求对所述外部存储器中所述任一第二镜像文件执行更新处理。
示例性地,第一中央处理器的外部存储器包括第一分区和第二分区,第一中央处理器的第一镜像文件位于第一分区,M个第二中央处理器的M个第二镜像文件位于第二分区,文件夹M1存储有第1个第二中央处理器的第二镜像文件01,文件夹M2存储有第2个第二中央处理器的第二镜像文件02,文件夹Mm存储有第M个第二中央处理器的第二镜像文件0m,当接收到第2个第二中央处理器的第二镜像文件02有新版本的消息时,将文件夹M2当前存储的第二镜像文件02版本更新为新版本的第二镜像文件02。
通过上述实施方式,在需要对第二镜像文件进行更新时,只需对外部存储器中存储的第二镜像文件进行更新,更新方便、快捷。
图4为根据本公开一实施例的启动方法的流程图,该方法应用于摄像机,所述摄像机包括一个第一中央处理器和M个第二中央处理器,所述M为大于或等于1的整数,所述第一中央处理器具有外部存储器;在外部存储器的第一分区中存储有第一中央处理器的第一镜像文件,在外部存储器的第二分区中存储有M个第二中央处理器对应的M个第二镜像文件。如图4所示,该方法包括:
S401,响应于启动操作,从第一中央处理器的外部存储器读取第一镜像文件;
S402,基于所述第一镜像文件控制所述第一中央处理器的启动;
S403,在所述第一中央处理器完成启动的情况下,从所述外部存储器中获取N个第二中央处理器的N个第二镜像文件,所述N为大于1且小于等于M的整数;
S404,基于所述第一中央处理器与所述N个第二中央处理器之间通信所触发的调度策略,为所述N个第二中央处理器的启动进行动态的资源调度;
S405,基于所述第一中央处理器与所述N个第二中央处理器之间分别对应的通信内容,确定所述N个第二中央处理器分别对应的启动状态;
S406,基于所述N个第二镜像文件以及所述N个第二中央处理器分别对应的启动状态,分别控制所述N个第二中央处理器进行启动。
这里,关于第一镜像文件的获取、第一中央处理器的启动、第二镜像文件的获取、启动状态的确定以及第二中央处理器的启动等处理与前述实施例相同,不做重复说明。
其中,调度策略包括用于为多个第二中央处理器分配或调整资源的策略。示例性地,优先为N个第二中央处理器中高优先级的第二中央处理器调度资源。又示例性地,优先为N个第二中央处理器中的等待时间长的第二中央处理器调度资源。
本公开不对调度策略进行强制性限定,具体调度策略可根据设计需求或用户需求进行设定或调整。在后文会结合实施例详细阐述,在此不再详举。
其中,被调度的资源包括下述至少之一:第一中央处理器与第二中央处理器之间的通信线路资源,第一中央处理器获取第二中央处理器的子文件时所使用的资源,第一中央处理器发送第二中央处理器的子文件占用的资源。
其中,动态的资源调度包括但不限于:调整为多个第二中央处理器优先分配资源的顺序;调整为多个第二中央处理器分配的用于获取子文件的资源的大小;调整为多个第二中央处理器分配的用于传输子文件的资源的大小;调整向多个第二中央处理器发送子文件的执行顺序;调整向多个第二中央处理器发送子文件的时间。
在一些实施方式中,为所述N个第二中央处理器的启动进行动态的资源调度,包括:在无法满足以并发方式响应所述N个第二中央处理器发送的资源处理请求的情况下,根据所述调度策略进行所述动态的资源调度,为所述N个第二中央处理器中高优先级的第二中央处理器优先分配资源。
其中,并发可以理解为同时发起或在同一时间范围内发起。
其中,资源处理请求包括第二中央处理器对资源的需求信息。该需求信息包括以下至少一项内容:第二中央处理器将占用的处理线路的标识;第二中央处理器将占用处理线路的时间;第二中央处理器完成单个子文件启动所需的时间;第二中央处理器的处理优先级。
示例性地,高优先级可以是N个第二中央处理器中优先级排名前Q的进程,其中,N和Q均为整数,且Q为大于0小于N的整数,Q的值可以根据设计需求或N个第二中央处理器的资源需求情况或第一中央处理器当前可提供的资源进行设定或调整。
又示例性地,高优先级可以是N个第二中央处理器中H%的进程,H为正数,且H为小于100的正数。H的值可以根据N个第二中央处理器的资源需求情况或第一中央处理器当前可提供的资源进行设定或调整。
通过上述实施方式,当第一中央处理器资源无法满足所有第二中央处理器请求的资源时,能够优先为高优先级的第二中央处理器提供资源,保证高优先级第二中央处理器的启动快速完成。
在一些实施方式中,为所述N个第二中央处理器的启动进行动态的资源调度,包括:在无法满足以并发方式响应所述N个第二中央处理器发送的资源处理请求的情况下,根据所述调度策略进行所述动态的资源调度,为所述N个第二中央处理器中等待时间长的第二中央处理器优先分配资源。
其中,等待时间可以理解为从第一中央处理器接收到第二中央处理器发送的第j个子文件启动完成消息作为起始时间点,以当前时间点作为终止时间点的一段时间。
示例性地,等待时间长的第二中央处理器可以是N个第二中央处理器中先启动的R个第二中央处理器,其中,N和R均为整数,且R为大于0小于N的整数,R的值可以根据设计需求或N个第二中央处理器的资源需求情况进行设定或调整。
又示例性地,等待时间还可以理解为当前时间点距离上次向第二中央处理器发送第j个子文件的时间。
通过上述实施方式,当第一中央处理器资源无法满足所有第二中央处理器请求的资源时,优先保证部分第二中央处理器的正常启动,有助于保障多个第二中央处理器启动的有序性。
需要说明的是,S404可以在S403之后且在S405之前执行,或者S404在S403之前执行,或者S404在S405执行的过程中执行。
通过本实施例所述的技术方案,基于第一中央处理器与多个第二中央处理器通信所触发的调度策略进行动态的资源调度,能实现对第一中央处理器资源的动态调度,因而可以满足使用第一中央处理器对多个第二中央处理器的启动进行控制,同时还能为多个第二中央处理器协调资源,为实现多个第二中央处理器的有序启动提供支撑。
基于图4所示的技术方案,在一些实施例中,所述方法还可包括:根据第二中央处理器使用资源的时间占比、第二中央处理器使用资源的存储空间占比以及第二中央处理器优先级至少之一配置调度策略。
其中,第二中央处理器使用资源的时间占比是指第二中央处理器占用第一中央处理器的计算资源或读写资源的时间占比。
其中,第二中央处理器使用资源的存储空间占比是指第二中央处理器占用第一中央处理器的RAM的存储空间的占比。
其中,第二中央处理器优先级是指对第二中央处理器的处理优先级。
在一些实施方式中,根据第二中央处理器使用资源的时间占比配置调度策略。
在一些实施方式中,根据第二中央处理器使用资源的存储空间占比配置调度策略。
在一些实施方式中,根据第二中央处理器的优先级配置调度策略。
在一些实施方式中,根据第二中央处理器使用资源的时间占比以及第二中央处理器使用资源的存储空间占比配置调度策略。
在一些实施方式中,根据第二中央处理器使用资源的时间占比以及进程优先级配置调度策略。
在一些实施方式中,根据第二中央处理器使用资源的存储空间占比以及进程优先级配置调度策略。
在一些实施方式中,根据第二中央处理器使用资源的时间占比、第二中央处理器使用资源的存储空间占比以及第二中央处理器优先级配置调度策略。
可以理解,在配置调度策略时,还可以结合第一中央处理器可供多个第二中央处理器使用的资源的大小、以及接收第二中央处理器子文件启动完成消息的时间等因素来配置调度策略。
实际应用中,调度策略还可以根据第一中央处理器资源的实际使用情况以及各个第二中央处理器请求资源的变化情况进行适应性调整,从而能够更好地满足各第二中央处理器的顺利启动。
本实施例的技术方案,能够结合各个第二中央处理器的实际需求配置调度策略,从而使得第一中央处理器通过对资源的动态调度,达到尽量满足各个第二中央处理器的资源需求的目的。
以上各个实施例中,基于所述N个第二镜像文件控制所述N个第二中央处理器的启动,还可包括:所述第一中央处理器通过第一协议向所述N个第二中央处理器发送所述N个第一子文件;所述第一中央处理器通过第二协议向所述N个第二中央处理器发送所述N个第二子文件;所述第一中央处理器通过第S个协议向所述N个第二中央处理器发送所述N个第S个子文件。
其中,所述第一协议为串行外设接口(Serial Peripheral Interface, SPI)协议,所述第二协议为SPI协议或安全数字输入输出接口(Secure Digital Input andOutput,SDIO)协议或通用串行总线(Universal Serial Bus,USB)协议等协议,所述第S个协议为SPI协议或SDIO协议或USB协议等协议。
在一些实施方式中,第一中央处理器与单个第二中央处理器之间可通过X根线路连接,X为大于1且小于等于S的整数,不同线路负责不同的镜像子文件的传输以及有关镜像子文件的相关消息,比如,子文件开始启动消息,子文件启动完成消息等。可以理解,不同第二中央处理与第一中央处理器连接的线路数量可以不同。示例性地,第一中央处理器与第一个第二中央处理器之间连接有两根线路,一根线路负责第一子文件的传输以及有关第一子文件的相关消息,另一根线路负责其他子文件的传输以及有关其他子文件的相关消息。又示例性地,第一中央处理器与第二个第二中央处理器之间连接有三根线路,第一根线路负责第一子文件的传输以及有关第一子文件的相关消息,第二根线路负责第二子文件的传输以及有关第二子文件的相关消息,第三根线路负责第三子文件的传输以及有关第三子文件的相关消息。
如此,通过选择或变更第一中央处理器与第二中央处理器之间的通信线路,能够在第二中央处理器的不同启动阶段为其快速传送对应的子文件,进而提高第二中央处理器的启动速度。
基于以上描述的启动方法以及场景,下面给出示例性具体实施例。
具体实施例一:
图6示出了CPUa控制CPUb启动的流程示意图,如图6所示,该流程包括:
S601,引导加载程序镜像文件启动;
S602,内核镜像文件启动;
S603,挂载根文件系统启动;
S604,挂载用户文件系统启动;
S605,CPUa启动完成;
S605,CPUa读取CPUb的引导加载程序镜像文件;
S607,通过SPI发送向CPUb发送CPUb的引导加载程序镜像文件;
S608,CPUb接收并保存引导加载程序镜像文件;
S609,CPUb启动引导加载程序;
S610,CPUb向CPUa发送引导加载程序启动完成消息;
S611,CPUa读取CPUb的内核镜像文件;
S612,通过SDIO向CPUb发送CPUb的内核镜像文件;
S613,CPUb接收并保存内核镜像文件;
S614,CPUb启动内核;
S615,CPUb向CPUa发送内核启动完成消息;
S616,CPUa读取CPUb的根文件系统镜像文件;
S617,通过SDIO向CPUb发送CPUb的根文件系统镜像文件;
S618,CPUb接收并保存根文件系统镜像文件;
S619,CPUb启动根文件系统;
S620,CPUb向CPUa发送CPUb启动完成消息。
具体实施例二:
图7是本公开一个实施例提供的CPUa控制CPUb与CPUc启动的流程示意图,如图7所示,该流程包括:
S701,引导加载程序镜像文件启动;
S702,内核镜像文件启动;
S703,挂载根文件系统;
S704,挂载用户文件系统;
S705,CPUa启动完成;
S706a,CPUa读取CPUb的引导加载程序镜像文件;
S706b,CPUa读取CPUc的引导加载程序镜像文件;
S707a,通过SPI发送向CPUb发送CPUb的引导加载程序镜像文件;
S707b,通过SPI发送向CPUc发送CPUc的引导加载程序镜像文件;
S708a,CPUb接收并保存引导加载程序镜像文件;
S708b,CPUc接收并保存引导加载程序镜像文件;
S709a,CPUb启动引导加载程序镜像文件;
S709b,CPUc启动引导加载程序镜像文件;
S710a,CPUb向CPUa发送引导加载程序启动完成消息;
S710b,CPUc向CPUa发送引导加载程序启动完成消息;
S711a,CPUa读取CPUb的内核镜像文件;
S711b,CPUa读取CPUc的内核镜像文件;
S712a,通过SDIO向CPUb发送CPUb的内核镜像文件;
S712b,通过SDIO向CPUc发送CPUc的内核镜像文件;
S713a,CPUb接收并保存内核镜像文件;
S713b,CPUc接收并保存内核镜像文件;
S714a,CPUb启动内核镜像文件;
S714b,CPUc启动内核镜像文件;
S715a,CPUb向CPUa发送内核启动完成消息;
S715b,CPUc向CPUa发送内核启动完成消息;
S716a,CPUa读取CPUb的根文件系统镜像文件;
S716b,CPUa读取CPUc的根文件系统镜像文件;
S717a,通过SDIO向CPUb发送CPUb的根文件系统镜像文件;
S717b,通过SDIO向CPUc发送CPUc的根文件系统镜像文件;
S718a,CPUb接收并保存根文件系统镜像文件;
S718b,CPUc接收并保存根文件系统镜像文件;
S719a,CPUb启动根文件系统;
S719b,CPUc启动根文件系统;
S720a,CPUb向CPUa发送CPUb启动完成消息;
S720b,CPUc向CPUa发送CPUc启动完成消息。
需要说明的是,S706~S720均分为a和b两个步骤,本实施例不对a和b两个步骤的先后顺序进行限定。以S706为例,S706a先于S706b执行,或者S706a后于S706b执行,S706a与S706b同时执行。另外,可以理解的是,对于S706a~S720a,是CPUa针对CPUb的启动控制;对于S706b~S720b,是CPUa针对CPUc的启动控制;S706a~S720a与S706b~S720b,不存在强制性的先后关系,比如,在S706a执行完毕之后,执行S707a; S707a可先于S706b执行。又比如,在S706b执行完毕之后,执行S707b; S707b可先于S706a执行。
具体实施例三:
图8示出了CPUa控制CPUb与CPUc启动的框架示意图,如图8所示,CPUa通过SPI与外部处理器通信,CPUa与CPUb之间通过SPI或GPIO或SDIO通信,CPUa与CPUc之间通过SPI或GPIO或SDIO通信。
应当理解,上述启动流程示意图和框架示意图仅仅是示例性而不是限制性的,并且其是可扩展的,其中可以包括更多的第二中央处理器。
图9为根据本公开一实施例的启动装置的结构示意图,该装置应用于摄像机,所述摄像机包括一个第一中央处理器和M个第二中央处理器,所述M为大于或等于1的整数,所述第一中央处理器具有外部存储器,其特征在于,在所述外部存储器的第一分区中存储有所述第一中央处理器的第一镜像文件,在所述外部存储器的第二分区中存储有M个第二中央处理器对应的M个第二镜像文件。如图9所示,该装置包括:读取模块901,用于响应于启动操作,从所述外部存储器读取所述第一镜像文件;第一控制模块902,用于基于所述第一镜像文件控制所述第一中央处理器的启动;获取模块903,用于在所述第一中央处理器完成启动的情况下,从所述外部存储器中获取N个第二中央处理器的N个第二镜像文件,所述N为大于1且小于等于M的整数;确定模块904,用于基于所述第一中央处理器与所述N个第二中央处理器之间分别对应的通信内容,确定所述N个第二中央处理器分别对应的启动状态;第二控制模块905,用于基于所述N个第二镜像文件以及所述N个第二中央处理器分别对应的启动状态,分别控制所述N个第二中央处理器进行启动。
在本公开实施例中,所述启动操作是用于触发所述摄像机启动的操作。示例性地,所述启动操作包括但不限于:用户按下摄像机的开机按键,摄像机响应于重启指令重新启动。
在本公开实施例中,不同第二中央处理器可以理解为负责不同功能算法的处理器。比如,有的第二中央处理器负责计算光照强度;又比如,有的第二中央处理器负责确定摄像头的目标拍摄方向和目标焦距;再比如,有的第二中央处理器负责确定目标人体;再比如,有的第二中央处理器负责优化包含目标人体的脸部的图像。
在本公开实施例中,所述第二镜像文件是第二中央处理器的镜像文件,所述第二镜像文件包括S个子文件,S为大于或等于3的整数,具体包括引导加载程序(U-BOOT,Bootloader)镜像子文件、内核(kernel)镜像子文件和根文件系统(rootfs)镜像子文件。
在本公开实施例中,不同第二中央处理器对应的第二镜像文件的内容可以不同。第二镜像文件的具体内容由第二中央处理器实现的功能算法决定。以第二中央处理器CPUb和CPUc为例进行说明,CPUb负责处理第一应用,CPUc负责处理第二应用,那么,CPUb的第二镜像文件与CPUc的镜像文件至少有一处不同。具体地,CPUb的引导加载程序镜像子文件b1与CPUc的引导加载程序镜像子文件c1不同;和/或,CPUb的内核镜像子文件b2与CPUc的内核镜像子文件c2不同;和/或,CPUb的根文件系统镜像子文件b3与CPUc的根文件系统镜像子文件c3不同。
在本公开实施例中,所述第一镜像文件是第一中央处理器的镜像文件,所述第一镜像文件包括P个子文件,P大于或等于S,所述第一镜像文件至少包括引导加载程序镜像子文件、内核镜像子文件和根文件系统镜像子文件。
在本公开实施例中,所述启动状态包括但不限于以下状态:第j个子文件开始启动,第j个子文件正在启动,第j个子文件启动完成,j为大于等于1且小于等于S的整数。
在一种实施方式中,所述第二镜像文件包括S个子文件,S为大于或等于3的整数;其中,所述获取模块903,用于:从所述外部存储器中获取所述N个第二中央处理器对应的N个第一子文件;在接收到所述N个第二中央处理器返回的N个第一子文件启动完成消息的情况下,从所述外部存储器中获取所述N个第二中央处理器的N个第二子文件;在接收到所述N个第二中央处理器返回的N个第二子文件启动完成消息的情况下,从所述外部存储器中获取所述N个第二中央处理器的N个第三子文件;以此类推,直至从所述外部存储器中获取所述N个第二中央处理器的N个第S个子文件。
在一种实施方式中,所述第二控制模块905,用于:在从所述外部存储器中获取所述N个第二中央处理器对应的N个第一子文件后,向所述N个第二中央处理器发送所述N个第一子文件;在从所述外部存储器中获取所述N个第二中央处理器对应的N个第二子文件后,向所述N个第二中央处理器发送所述N个第二子文件;在从所述外部存储器中获取所述N个第二中央处理器对应的N个第三子文件后,向所述N个第二中央处理器发送所述N个第三子文件;以此类推,直至向所述N个第二中央处理器发送所述N个第S个子文件。
在一种实施方式中,所述第二控制模块905,用于:控制所述第一中央处理器通过第一协议向所述N个第二中央处理器发送所述N个第一子文件;控制所述第一中央处理器通过第二协议向所述N个第二中央处理器发送所述N个第二子文件;控制所述第一中央处理器通过第S个协议向所述N个第二中央处理器发送所述N个第S个子文件。
在一种实施方式中,所述第一协议为SPI协议,所述第二协议为SPI协议或SDIO协议或USB协议,所述第S个协议为SPI协议或SDIO协议或USB协议。
在一种实施方式中,如图10所示,所述装置还可包括:调度模块906,用于基于所述第一中央处理器与所述N个第二中央处理器之间通信所触发的调度策略,为所述N个第二中央处理器的启动进行动态的资源调度,所述资源用于获取镜或传送镜像文件。
在一种实施方式中,所述调度模块906,包括:第一调度单元(图中未示出),用于在无法满足以并发方式响应所述N个第二中央处理器发送的资源处理请求的情况下,根据所述调度策略进行所述动态的资源调度,为所述N个第二中央处理器中高优先级的第二中央处理器优先分配资源。
在一种实施方式中,所述调度模块906,包括:第二调度单元(图中未示出),用于在无法满足以并发方式响应所述N个第二中央处理器发送的资源处理请求的情况下,根据所述调度策略进行所述动态的资源调度,为所述N个第二中央处理器中等待时间长的第二中央处理器优先分配资源。
在一种实施方式中,如图10所示,所述装置还可包括:配置模块907,用于根据第二中央处理器使用资源的时间占比、第二中央处理器使用资源的存储空间占比以及第二中央处理器优先级至少之一配置所述调度策略。
在一种实施方式中,如图10所示,所述装置还可包括:建立模块908,用于在所述外部存储器的所述第二分区中建立M个用户文件夹,每个用户文件夹对应一个第二中央处理器;存储模块909,用于将所述M个第二中央处理器对应的M个第二镜像文件存储到对应的用户文件夹中。
在一种实施方式中,所述第一镜像文件以二进制文件形式存储;所述第二镜像文件以文本文件形式存储。
在一种实施方式中,如图10所示,所述装置还可包括:更新模块910,用于在接收到针对所述M个第二镜像文件中任一第二镜像文件的更新请求的情况下,基于所述更新请求对所述外部存储器中所述任一第二镜像文件执行更新处理。
本领域技术人员应当理解,本公开实施例的启动装置中各处理模块的功能,可参照前述的启动方法的相关描述而理解,本公开实施例的启动装置中各处理模块,可通过实现本公开实施例所述的功能的模拟电路而实现,也可以通过执行本公开实施例所述的功能的软件在电子设备上的运行而实现。
需要说明的是,本公开实施例中对各功能单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本公开的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本公开各个实施例提供的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例的启动装置,不仅解决了相关技术中因外部存储器数量多而导致的占用摄像机空间大的问题,还降低了硬件成本。
通过以上参考图1至图10的描述,本公开的实施方式的技术方案相对于传统方案具有很多优点。例如,利用本公开的实施例的技术方案,通过对第一中央处理器的外部存储器进行分区处理,在外部存储器的第一分区中存储第一中央处理器的第一镜像文件,在外部存储器的第二分区中存储M个第二中央处理器对应的M个第二镜像文件,节省了外部存储器的个数,不仅解决了相关技术中因外部存储器数量多而导致的占用摄像机空间大的问题,还降低了硬件成本;另外,第一中央处理器从外部存储器中获取N个第二中央处理器的N个第二镜像文件,基于N个第二镜像文件控制N个第二中央处理器的启动,如此,能够实现第一中央处理器对N个第二中央处理器的有序启动的控制,为包括多个中央处理器的摄像机提供了有效的启动方案。此外,本公开的实施例的技术方案无论是实现还是使用都简单易行,并且其实现和使用无需可编程逻辑芯片,能进一步节省硬件成本。
图11为根据本公开一实施例的摄像机的结构框图。如图11所示,该摄像机包括:存储器1110和处理器1120,存储器1110内存储有可在处理器1120上运行的计算机程序。存储器1110和处理器1120的数量可以为一个或多个。存储器1110可以存储一个或多个计算机程序,当该一个或多个计算机程序被该摄像机执行时,使得该摄像机执行上述方法实施例提供的方法。
该摄像机还包括:通信接口1130,用于与外界设备进行通信,进行数据交互传输。
如果存储器1110、处理器1120和通信接口1130独立实现,则存储器1110、处理器1120和通信接口1130可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(PeripheralComponent Interconnect,PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1110、处理器1120及通信接口1130集成在一块芯片上,则存储器1110、处理器1120及通信接口1130可以通过内部接口完成相互间的通信。
本公开实施例还提供一种计算机可读存储介质,其存储有计算机指令,当所述计算机指令在计算机上运行时,使得所述计算机执行上述方法实施例提供的方法。
本公开实施例还提供一种计算机程序产品,所述计算机程序产品用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述方法实施例提供的方法。
本公开实施例还提供一种芯片,所述芯片与存储器耦合,所述芯片用于实现上述方法实施例提供的方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(Advanced RISC Machines,ARM)架构的处理器。
进一步地,可选的,上述存储器可以包括只读存储器和随机存取存储器,还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(EnhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct RAMBUS RAM,DR RAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、蓝牙、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))或半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。值得注意的是,本公开提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本公开实施例的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本公开的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
在本公开实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本公开实施例的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
以上所述仅为本公开的示例性实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。