一种唤醒方法、电子控制单元及终端设备
文献发布时间:2023-06-19 18:58:26
技术领域
本申请涉及控制器技术领域,具体而言,涉及一种唤醒方法、电子控制单元及终端设备。
背景技术
随着汽车软件研发周期不断缩短的趋势,各ECU的软件的测试验证周期也缩短,导致有些bug需要在量产后通过OTA升级修复,越来越多的ECU需要支持OTA功能,那么越来越多的ECU需要有Bootloader软件来支持OTA功能。
Bootloader功能是加载应用程序,是在应用程序启动之前运行的一段程序,在需要OTA升级的时候,通过刷写工具发送会话模式切换指令可以让ECU跳转到Bootloader程序,在Bootloader程序里面实现对APP的擦除和重新编程,达到升级目的。但是实际运用过程中会有这样几种情况导致Bootloader加载了错误的应用程序,导致一启动应用程序就进入异常,无法通信,且无法切换到Bootloader进行再升级:1.刷写了没有经过充分测试验证的应用程序;2.刷写了有效的应用程序,但是由于电磁干扰,或软件运行错误等因素导致应用程序存储器被篡改。
如何克服以上问题,成为了本领域技术人员所关注的难题。
发明内容
本申请的目的在于提供一种唤醒方法、电子控制单元及终端设备,以至少部分改善上述问题。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种唤醒方法,应用于电子控制单元,所述方法包括:
当处于休眠状态的电子控制单元接收到唤醒源发送的网络管理报文时,唤醒电子控制单元中的微控制单元;
所述微控制单元进行CAN通信初始化;
所述微控制单元通过CAN收发器对CAN总线报文进行监听;
当在预设的窗口期内未监听到升级指令报文时,则所述微控制单元确定在所述窗口期结束前是否监听到唤醒报文;
若监听到唤醒报文,则所述微控制单元将所述唤醒报文存储至目标地址区间;
所述微控制单元在所述窗口期结束后启动应用程序;
所述微控制单元对所述目标地址区间进行读取,确定是否读取到所述唤醒报文;
在读取到所述唤醒报文时,唤醒所述电子控制单元。
可选地,在监听到唤醒报文时,所述方法还包括:
所述电子控制单元向所述唤醒源反馈ACK响应报文,以使所述唤醒源停止发送唤醒报文。
可选地,所述方法还包括:若未监听到唤醒报文,则所述微控制单元在所述窗口期结束后启动应用程序;
所述微控制单元对所述目标地址区间进行读取,确定是否读取到所述唤醒报文;
在未读取到所述唤醒报文时,确定CAN总线是否存在唤醒报文;
若否,所述电子控制单元进入休眠状态。
可选地,所述方法还包括:若CAN总线存在唤醒报文,则唤醒所述电子控制单元。
可选地,在读取到所述唤醒报文时,所述方法还包括:
所述微控制单元将所述目标地址区间中的唤醒报文擦除。
可选地,当在预设的窗口期内监听到升级指令报文时,所述方法还包括:
所述微控制单元基于所述升级指令报文完成升级。
可选地,在启动应用程序后,所述方法还包括:
所述微控制单元启动应用程序初始化CAN通信。
可选地,在读取到所述唤醒报文时,所述方法还包括:
所述微控制单元对所述唤醒报文进行校验。
可选地,在所述微控制单元最初被唤醒时,所述微控制单元运行BootLoader。
可选地,在所述微控制单元由BootLoader跳转至应用程序时,所述目标地址区间中的内容不变。
可选地,所述目标地址区间属于Ram存储器。
第二方面,本申请实施例提供一种电子控制单元,所述电子控制单元包括:微控制单元、CAN收发器以及设置有目标地址区间的存储器;
当处于休眠状态的电子控制单元接收到唤醒源发送的网络管理报文时,所述CAN收发器用于唤醒电子控制单元中的微控制单元;
所述微控制单元用于进行CAN通信初始化;
所述微控制单元还用于通过CAN收发器对CAN总线报文进行监听;
当在预设的窗口期内未监听到升级指令报文时,则所述微控制单元还用于确定在所述窗口期结束前是否监听到唤醒报文;
若监听到唤醒报文,则所述微控制单元还用于将所述唤醒报文存储至目标地址区间;
所述微控制单元还用于在所述窗口期结束后启动应用程序;
所述微控制单元还用于对所述目标地址区间进行读取,确定是否读取到所述唤醒报文;在读取到所述唤醒报文时,唤醒所述电子控制单元。
可选地,所述电子控制单元还用于向所述唤醒源反馈ACK响应报文,以使所述唤醒源停止发送唤醒报文。
第三方面,本申请实施例提供一种终端设备,包括:上述的电子控制单元。
相对于现有技术,本申请实施例所提供的一种唤醒方法、电子控制单元及终端设备,包括:当处于休眠状态的电子控制单元接收到唤醒源发送的网络管理报文时,唤醒电子控制单元中的微控制单元;微控制单元进行CAN通信初始化;微控制单元通过CAN收发器对CAN总线报文进行监听;当在预设的窗口期内未监听到升级指令报文时,则微控制单元确定在窗口期结束前是否监听到唤醒报文;若监听到唤醒报文,则微控制单元将唤醒报文存储至目标地址区间;微控制单元在窗口期结束后启动应用程序;微控制单元对目标地址区间进行读取,确定是否读取到唤醒报文;在读取到唤醒报文时,唤醒电子控制单元。通过将唤醒报文存储至目标地址区间,使得可以在总线上没有唤醒报文的情况下,还是可以从目标地址区间读取唤醒报文,从而完成电子控制单元的唤醒工作。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为本申请实施例提供的电子控制单元的结构示意图;
图2为本申请实施例提供的唤醒方法的流程图之一;
图3为本申请实施例提供的唤醒方法的流程图之二。
图中:10-微控制单元;11-存储器;12-CAN收发器。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本申请的描述中,需要说明的是,术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
在一种可能的场景下,当电子控制单元(简称,ECU)使用不带延迟的启动装载程序(简称,Bootloader)时,ECU上电之后启动Bootloader,Bootloader直接跳转到应用程序,不做延迟等待升级指令的窗口。其缺点是有可能应用程序是错误的或者应用程序的flash区域被篡改,这种情况跳转到应用程序会直接卡死,造成刷写变砖,只能通过其他方式更新固件。往往这种情况只能通过拆件,使用烧录器进行烧录,然而车上的零件安装非常复杂,有些ECU拆件非常困难。
在一种可能的场景下,电子控制单元使用不带延迟等待升级指令窗口的启动装载程序,在窗口期,Bootloader会打开CAN收发器,监控总线报文,如果有升级指令,则执行升级流程,不跳转应用程序。这样能避免跳转到错误的应用程序后无法再次刷写的问题,出错后能够通过窗口期发送诊断指令进行再次升级,避免拆件。但是这也带来另外一个问题,网络管理报文需要连续发多次才能唤醒ECU,原因分析:CAN的发送逻辑是如果没有接收方回ACK,发送端会一直重复发送(硬件实现),直到收到ACK,当唤醒源发送第一帧网络管理报文的时候,被唤醒方ECU先唤醒MCU,MCU还没来得及初始化CAN通信,所以在被唤醒的ECU的CAN初始化之前,发送方的网络管理报文是一直没收到ACK的,发送方持续重复发送网络管理报文,直到Bootloader启动之后,初始化CAN收发器,这个时候ECU响应了网络管理报文的ACK,发送方停止发送唤醒报文,Bootloader识别到不是升级指令,直接启动应用程序,然而应用程序启动之后发现网络上并没有网络管理唤醒报文,超时后又继续进入休眠状态,简单来说就是Bootloader响应了网络管理报文的ACK,导致应用程序收不到网络管理报文。
应理解,为了实现在Bootloader加载了错误的应用程序的情况下,还能重新升级应用程序的功能,就需要在Bootloader启动应用程序之前预留一段窗口期来接收升级请求,刷写上位机可以在这个窗口期发送升级请求,让Bootloader不启动应用程序,而是停留在Bootloader,等待刷写。但是由于Bootloader有这个窗口期,导致另外一个问题,网络管理报文唤醒的时候会出现唤不醒ECU的问题。
为了克服以上问题,本申请实施例提供了一种电子控制单元,可以但不限定为行车电脑。请参照图1,电子设备的结构示意图。电子设备包括微控制单元10、存储器11以及CAN收发器12,微控制单元10分别与存储器11以及CAN收发器12通信连接。微控制单元10可以但不限定为MCU,还可以是中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器11可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。
存储器11用于存储程序,例如下文中需要运行的应用程序。
应当理解的是,图1所示的结构仅为电子控制单元的部分的结构示意图,电子控制单元还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
本申请实施例提供的一种唤醒方法,可以但不限于应用于图1所示的电子控制单元,具体的流程,请参考图2,唤醒方法包括:S101、S102、S103、S104、S105、S106、S108、S109、S111、S112以及S113,具体阐述如下。
S101,当处于休眠状态的电子控制单元接收到唤醒源发送的网络管理报文时,唤醒电子控制单元中的微控制单元。
可选地,唤醒源可以是其他ECU,或外部设备在此不做限定。
在一种可选的实施方式中,CAN收发器12一直对CAN总线进行监视,此时CAN收发器12能够识别CAN总线上是否存在网络管理报文,但却无法知道网络管理报文中的具体内容。当处于休眠状态的电子控制单元中的CAN收发器12识别到唤醒源发送的网络管理报文时,CAN收发器12可以唤醒电子控制单元中的微控制单元10。
S102,微控制单元进行CAN通信初始化。
S103,微控制单元通过CAN收发器对CAN总线报文进行监听。
S104,确定在预设的窗口期内是否监听到升级指令报文。若是,则执行S113;若否,则执行S105。
应理解,通过设置窗口期可以避免上述Bootloader加载了错误的应用程序所带来的问题。可选地,如在预设的窗口期内监听到升级指令报文,则执行S113微控制单元基于升级指令报文完成升级。反之,则执行S105。
S105,微控制单元确定在窗口期结束前是否监听到唤醒报文。若是,则执行S106;若否,则执行S108。
应理解,如在窗口期结束前监听到唤醒报文,则表示当前有唤醒ECU的需求。为了避免出现上述的“应用程序启动之后发现网络上并没有网络管理唤醒报文,超时后又继续进入休眠状态”的问题,可以执行S106。若否,则执行S108。
S106,若监听到唤醒报文,则微控制单元将唤醒报文存储至目标地址区间。
应理解,通过将唤醒报文存储至目标地址区间,使得可以在总线上没有唤醒报文的情况下,还是可以从目标地址区间读取唤醒报文,从而完成电子控制单元的唤醒工作。
S108,微控制单元在窗口期结束后启动应用程序。
可选地,微控制单元10加载应用程序。
S109,微控制单元对目标地址区间进行读取,确定是否读取到唤醒报文。若是,则执行S112;若否,则执行S111。
应理解,若读取到唤醒报文,则可以唤醒电子控制单元,执行S112;反之,电子控制单元进入休眠状态,执行S111。
S111,电子控制单元进入休眠状态。
S112,在读取到唤醒报文时,唤醒电子控制单元。
S113,微控制单元基于升级指令报文完成升级。
在图2的基础上,关于如何向唤醒源进行反馈,以使唤醒源停止发送唤醒报文,本申请实施例还提供了一种可能的实现方式,请参考图3,在S106之后,唤醒方法还包括:S107,具体阐述如下。
S107,电子控制单元向唤醒源反馈ACK响应报文,以使唤醒源停止发送唤醒报文。
可选地,在CAN通信初始化完成后,CAN收发器12可以接收CAN总线上的网络管理报文,且可以识别到其中的具体内容,当识别到唤醒报文时,CAN收发器12可以向唤醒源反馈ACK响应报文,以使唤醒源停止发送唤醒报文。
请继续参考图3,关于如何进一步保障唤醒操作的成功执行,本申请实施例还提供了一种可能的实现方式,如图3所示,在未监听到唤醒报文时,也会执行S108和S109,微控制单元在窗口期结束后启动应用程序,微控制单元对目标地址区间进行读取,确定是否读取到唤醒报文。在S109之后,唤醒方法还包括:S110,具体阐述如下。
S110,在未读取到唤醒报文时,确定CAN总线是否存在唤醒报文。若是,则执行S112;若否,则执行S111。
应理解,在未读取到唤醒报文时,确定CAN总线是否存在唤醒报文,即执行S110。若CAN总线存在唤醒报文,执行S112;反之,则执行S111。
可选地,在图2的基础上,为了保障不会基于同一段唤醒报文重复唤醒ECU,导致出现误操作,本申请实施例还提供了一种可能的实现方式,请参考下文。在S109之后,唤醒方法还包括:微控制单元将目标地址区间中的唤醒报文擦除。
可选地,可以在S112执行后,将目标地址区间中的唤醒报文擦除。
在一种可选的实施方式中,在启动应用程序后,还包括:微控制单元启动应用程序初始化CAN通信。
以使加载了应用程序后的微控制单元10可以通过CAN收发器12获取CAN总线上的信息。
为了进一步避免出现误唤醒的情况,本申请实施例还提供了一种可能的实现方式,请参考下文。在读取到唤醒报文时,唤醒方法还包括:微控制单元对唤醒报文进行校验。
将校验成功时,则唤醒电子控制单元,反之,则保持休眠状态。
在一种可选的实施方式中,微控制单元最初被唤醒时,微控制单元运行BootLoader。
在一种可选的实施方式中,在微控制单元由BootLoader跳转至应用程序时,目标地址区间中的内容不变。
应理解,在微控制单元10运行BootLoader或应用程序时,可以共用至少部分内存,即存储器11包括共用内存,共用内存设置有目标地址区间。
可选地,共用内存可以使用Nvm或者Ram,Nvm一般存在擦写次数限制,如果出现长时间重复唤醒会造成存储器擦写次数激增,对存储器的寿命有影响。在使用Ram作为共用内存时,需要注意以下几点:该段内存是Bootloader和应用程序都可以访问的区域;确保该段内存不会在Bootloader跳转到应用程序的时候被修改(可以通过链接文件声明该段内存,避免编译器自动将该段内存划为堆栈或者全局变量使用);存储的数据需要经过校验,避免无效数据误触发唤醒。
可选地,目标地址区间属于Ram存储器。
综上所述,本申请实施例提供了一种唤醒方法,应用于电子控制单元,方法包括:当处于休眠状态的电子控制单元接收到唤醒源发送的网络管理报文时,唤醒电子控制单元中的微控制单元;微控制单元进行CAN通信初始化;微控制单元通过CAN收发器对CAN总线报文进行监听;当在预设的窗口期内未监听到升级指令报文时,则微控制单元确定在窗口期结束前是否监听到唤醒报文;若监听到唤醒报文,则微控制单元将唤醒报文存储至目标地址区间;微控制单元在窗口期结束后启动应用程序;微控制单元对目标地址区间进行读取,确定是否读取到唤醒报文;在读取到唤醒报文时,唤醒电子控制单元。通过将唤醒报文存储至目标地址区间,使得可以在总线上没有唤醒报文的情况下,还是可以从目标地址区间读取唤醒报文,从而完成电子控制单元的唤醒工作。
下面提供一种电子控制单元,可以是行车电脑,该电子控制单元如图1所示,可以实现上述的唤醒方法。
可选地,电子控制单元包括:微控制单元10、CAN收发器12以及设置有目标地址区间的存储器11。
当处于休眠状态的电子控制单元接收到唤醒源发送的网络管理报文时,CAN收发器12用于唤醒电子控制单元中的微控制单元10;
微控制单元10用于进行CAN通信初始化;
微控制单元10还用于通过CAN收发器12对CAN总线报文进行监听;
当在预设的窗口期内未监听到升级指令报文时,则微控制单元10还用于确定在窗口期结束前是否监听到唤醒报文;
若监听到唤醒报文,则微控制单元10还用于将唤醒报文存储至目标地址区间;
微控制单元10还用于在窗口期结束后启动应用程序;
微控制单元10还用于对目标地址区间进行读取,确定是否读取到唤醒报文;在读取到唤醒报文时,唤醒电子控制单元。
可选地,电子控制单元还用于向唤醒源反馈ACK响应报文,以使唤醒源停止发送唤醒报文。
需要说明的是,本实施例所提供的电子控制单元,其可以执行上述方法流程实施例所示的方法流程,以实现对应的技术效果。为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。
可选地,本申请实施例还提供了一种终端设备,可以是汽车、农用机械以及其他终端设备,终端设备包括上述的电子控制单元。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
- 一种终端设备及终端设备的控制方法
- 车辆、电子控制单元及电子控制单元的控制方法
- 用于在受控构件移动时唤醒电子控制单元的系统
- 一种车用电子控制单元通用故障诊断方法
- 一种电子控制单元ECU的硬件在环测试方法和装置
- 一种电子控制单元的唤醒电路、唤醒方法及车辆
- 一种用于汽车电子控制单元中断唤醒的处理方法