车载任务执行方法、装置、车载控制器以及车辆与流程

摘要: 本发明涉及车联网,具体涉及一种车载任务执行方法、车载任务执行装置、车载控制器以及车辆。背景技术:1、随着车联网技术的发展,车辆需要处理大量具有精确时间要求的定时...
车载任务执行方法、装置、车载控制器以及车辆与流程

本发明涉及车联网,具体涉及一种车载任务执行方法、车载任务执行装置、车载控制器以及车辆。

背景技术:

1、随着车联网技术的发展,车辆需要处理大量具有精确时间要求的定时任务,如ota升级、定时充电和车辆唤醒等任务,这就需要对这些任务进行调度和执行。

2、在相关技术中,可以采用动态优先级计时器结合多级时间轮结构,通过分层管理任务并利用抢占式调度,来对这些任务进行调度和执行,但是采用这种方式,多级时间轮结构中的时间轮算法需要通过周期性固定频率推动指针转动,即使没有任务到期,也需以固定频率唤醒cpu,导致大量无效唤醒和资源浪费。

技术实现思路

1、本发明的目的之一在于提供一种车载任务执行方法,以解决现有技术中车载定时任务调度时,系统被频繁无效唤醒,浪费cpu资源的问题;目的之二在于提供一种车载任务执行装置;目的之三在于提供一种车载控制器;目的之四在于提供一种车辆。

2、为了实现上述目的,本发明采用的技术方案如下:

3、一种车载任务执行方法,方法应用于车载控制器,方法包括:获取内存优先队列中位于堆顶的第一预约任务的第一预期执行时间;其中,内存优先队列用于存储不同预约任务的注册请求;注册请求包括预约任务的预期执行时间,以及执行预约任务的客户端标识;基于第一预期执行时间和当前的第一时间,确定第一预约任务的唤醒时长;将唤醒时长写入唤醒寄存器,并响应于唤醒寄存器产生的中断信号,向车辆中订阅第一预约任务所对应第一目标客户端标识的客户端广播第一预约任务,以使客户端中的第一目标客户端执行第一预约任务,中断信号为唤醒寄存器自唤醒时长写入起计时,直至唤醒时长到达时产生的中断信号。

4、根据上述技术手段,通过获取内存优先队列堆顶任务的第一预期执行时间,并基于该时间与当前系统时间计算唤醒时长,将唤醒时长写入唤醒寄存器,利用唤醒寄存器在精确时刻产生中断信号,可以避免现有技术中因时间轮周期性推进导致的无效唤醒开销,从而实现对任务的低功耗唤醒,降低整车静态功耗。

5、在一些实施例中,获取内存优先队列中位于堆顶的第一预约任务的第一预期执行时间,包括:接收车辆的客户端发送的预约任务的注册请求;在基于注册请求预期的执行时间,将注册请求插入基于最小堆数据结构的内存优先队列的情况下,获取内存优先队列中位于堆顶的第一预约任务的第一预期执行时间。

6、根据上述技术手段,通过采用最小堆数据结构的内存优先队列维护预约任务,可以实现以内存优先队列中每个预约任务的预期执行时间为排序主键,确保内存优先队列的堆顶始终为最早到期的任务,这样可以减少预约任务插入操作的时间复杂度,提高任务注册和调度的效率,降低系统开销。

7、在一些实施例中,向车辆中订阅第一预约任务所对应第一目标客户端标识的客户端广播第一预约任务,包括:响应于唤醒寄存器产生的中断信号,获取当前的第二时间;在第一预期执行时间小于或等于当前的第二时间时,确定第一预约任务到期,向车辆中订阅第一预约任务所对应第一目标客户端标识的客户端广播第一预约任务;在第一预期执行时间大于或等于当前的第二时间时,确定第一预约任务未到期,以第一预期执行时间为基准重新确定唤醒时长并写入唤醒寄存器,并控制车载控制器进入休眠状态。

8、根据上述技术手段,通过校验任务预期执行时间与当前时间的关系,准确判断任务是否到期,避免因时间漂移或异常调整导致预约任务到的误唤醒或漏唤醒。而且对于未到期任务,通过重新计算唤醒时长并写入唤醒寄存器,并控制车载控制器进入休眠,最大化低功耗运行时间。

9、在一些实施例中,注册请求还包括预约任务的任务类型,任务类型包括周期任务;基于注册请求预期的执行时间,将注册请求插入基于最小堆数据结构的内存优先队列,包括:在第一预约任务为周期任务的情况下,若注册请求对应的预约任务被广播,从第一预约任务的注册请求中获取第一预约任务的预设执行间隔;根据第一预期执行时间和预设执行间隔,确定第一预约任务的下一次的第二预期执行时间,并基于第二预期执行时间更新第一预约任务的注册请求;基于第二预期执行时间将更新后的第一预约任务的注册请求插入内存优先队列。

10、根据上述技术手段,对于周期性任务,在其到期并被广播后,可以自动计算下一次执行时间,并将更新后的任务重新插入优先队列,无需业务模块参与重注册过程,避免因任务执行耗时或重注册时机不确定导致的时间累积漂移问题,保证了周期任务的时间确定性。

11、在一些实施例中,方法还包括:在内存优先队列中存在多个第二预约任务的预期执行时间均与第一预期执行时间的时间差值小于或者等于预设时长阈值的情况下,从优先队列中依次弹出多个第二预约任务,直至堆顶任务的预期执行时间大于当前系统时间或队列为空;分别向订阅多个第二预约任务所对应第二目标客户端标识的客户端广播多个第二预约任务。

12、根据上述技术手段,当存在多个任务在同一时刻或极短时间内到期时,通过连续弹出并广播这些任务,可以避免因任务密集而遗漏处理,提高任务处理的完整性和及时性。以及通过批量处理临近到期任务,可以减少重复唤醒和资源调度开销,提升车辆预约任务的整体调度效率。

13、在一些实施例中,注册请求还包括预约任务的任务标识符;获取用于存储不同预约任务的注册请求的内存优先队列中位于堆顶的第一预约任务的第一预期执行时间,包括:接收客户端发送的任务取消请求,任务取消请求用于请求已注册的至少一个预约任务取消,任务取消请求包括待取消的预约任务的目标任务标识符;根据目标任务标识符,为内存优先队列中待取消的预约任务设置取消标志位;在检测到第一预约任务存在取消标志位的情况下,删除第一预约任务,并从内存优先队列的多个预约任务中确定新的第一预约任务;获取新的第一预约任务的第一预期执行时间。

14、根据上述技术手段,通过在待取消任务中设置取消标志位,仅在该待取消任务成为堆顶并弹出时才实际删除,这样可以避免遍历查找带来的时间复杂度开销,提升任务取消操作的效率。同时,当被取消任务为堆顶任务时,立即触发rtc重配置,可以确保系统调度的准确性。

15、在一些实施例中,方法还包括:将不同预约任务的注册请求存储至车载控制器的非易失性存储器;在向车辆中订阅第一预约任务所对应第一目标客户端标识的客户端广播第一预约任务的情况下,将非易失性存储器存储的第一预约任务对应的注册请求标识为已执行。

16、根据上述技术手段,通过将不同预约任务的注册请求同步写入非易失性存储器,可以确保预约任务在车辆的控制系统复位、掉电或ota升级重启后不会丢失,提高任务调度的可靠性。同时,在任务广播执行后将其标记为已执行,便于后续任务状态管理。

17、在一些实施例中,方法还包括:在车载控制器启动时,通过扫描非易失性存储器读取所有未执行的注册请求;对于每个未执行的注册请求,若未执行的注册请求的预期执行时间晚于当前的第三时间,将未执行的注册请求重新插入内存优先队列;若未执行的注册请求的预期执行时间早于或等于当前的第三时间,删除未执行的注册请求。

18、根据上述技术手段,在车载控制器启动时,能够自动从非易失性存储器恢复未执行的任务,重建优先队列,确保关键预约任务如定时充电、定时唤醒的可靠执行。同时,对已过期的任务进行清理,避免无效任务占用系统资源,提高了系统的运行效率。

19、在一些实施例中,方法还包括:在将唤醒时长写入唤醒寄存器的情况下,控制车载控制器进入休眠状态,直至接收到唤醒寄存器发送的中断信号。

20、根据上述技术手段,通过rtc硬件唤醒机制,可以在无任务需要处理时进入车辆的控制系统进入深度休眠状态,仅维持rtc电路工作,能够大幅降低整车静态功耗,延长蓄电池续航时间。同时,唤醒过程由硬件直接触发,响应速度快、延迟低,保障了任务执行的时效性。

21、一种车载任务执行装置,装置包括:获取模块,用于获取内存优先队列中位于堆顶的第一预约任务的第一预期执行时间;其中,内存优先队列用于存储不同预约任务的注册请求,注册请求包括预约任务的预期执行时间,以及执行预约任务的客户端标识;确定模块,用于基于第一预期执行时间和当前的第一时间,确定第一预约任务的唤醒时长;广播模块,用于将唤醒时长写入唤醒寄存器,并响应于唤醒寄存器产生的中断信号,向车辆中订阅第一预约任务所对应第一目标客户端标识的客户端广播第一预约任务,以使客户端中的第一目标客户端执行第一预约任务,中断信号为唤醒寄存器自唤醒时长写入起计时,直至唤醒时长到达时产生的中断信号。

22、一种车载控制器,车载控制器用于实现车载任务执行方法。

23、一种车辆,车辆包括车载控制器。

24、本发明的有益效果:

25、通过获取内存优先队列堆顶任务的第一预期执行时间,并基于该时间与当前系统时间计算唤醒时长,将唤醒时长写入唤醒寄存器,利用唤醒寄存器在精确时刻产生中断信号,可以避免现有技术中因时间轮周期性推进导致的无效唤醒开销,从而实现对任务的低功耗唤醒,降低整车静态功耗。