一种用于汽车电子系统中标定bootloader升级ID的方法与流程
- 国知局
- 2024-10-09 16:17:23
本发明涉及汽车辆控制,具体涉及一种用于汽车电子系统中标定bootloader升级id的方法。
背景技术:
1、在汽车电子系统中,bootloader是一个极为重要的组件,它负责将应用程序从外部存储器加载到系统内部并执行。
2、汽车电子软件升级的bootloader是一种特殊的引导加载程序,一般以固件的形式存在零部件控制器控制芯片的特定地址内,主要作用为启动固件与软件程序,一个好的bootloader要有很好的容错性、可靠性、安全性与易用性,它应该保证固件与软件的完整性,本发明以汽车电子行业常用的通信协议can协议进行实施。
3、为了解决bootloader升级过程中可能出现的问题,一种常见的方法是为每个bootloader分配一个唯一的id,也就是标定bootloader升级id。这个id可以是一个数字、字符串等形式,用来唯一标识每个控制器信息。通过标定bootloader升级id,可以确保系统升级时选择正确的bootloader版本,避免不必要的问题。同时,对于一些需要特定功能的系统,可以为不同版本的bootloader分配不同的id,以便根据需要进行选择。
4、以电机控制器为例,在重型工程机械里面,可能需要安装一个行车动力系统控制器和多个执行作业控制器,此时一台车上存在大于等于二的控制器数量,假设车辆需要更换行车动力系统功能的控制器备件,而此时只剩下执行作业控制器,因为每个控制器的升级与诊断id是不一样的,所以需要将执行作业控制器软件更换为行车动力系统功能的控制器,此时就需要更换bootloader的升级id,然后升级对应的功能,例如此例的行车动力系统功能的应用程序。
技术实现思路
1、本发明的目的是克服上述控制器功能变更需要打开控制器通过烧录器烧录bootloader的难点,提供了一种用于汽车电子系统中标定bootloader升级id的方法,其独特之处在于bootloader升级id可以随时更改,用户通过轻松的更改升级id,以适应不同的应用场景。
2、本发明采用的技术方案为:一种用于汽车电子系统中标定bootloader升级id的方法,包括以下步骤:
3、步骤1,初始化控制器芯片cpu模块和非易失性存储器后进入bootloader;
4、步骤2,通过读取非易失性存储器中的升级id,并通过哈希算法或者用户定义规则校验升级id的正确性,检测控制器中的bootloader id是否为有效的升级id;
5、当控制器中升级id有效标志位为true,进入步骤3,为flase进入步骤4;
6、步骤3,初始化控制器驱动程序,使用有效标志位为true的升级id或默认的bootloader升级id;
7、步骤4,检测控制器中的app是否有效;通过非易失性存储器接口获取app有效标志位;
8、当控制器中app有效位为false时,进入步骤5;
9、当控制器中app有效位为true时,超过10ms上位机未进行刷新app动作,进入步骤6;
10、当控制器中app有效位为true时,10ms内上位机进行刷新app动作,清除app有效位,刷新结束,执行复位ecu进入步骤1;
11、步骤5,app无效,控制器运行在bootloader;
12、通过诊断服务0x22读取升级id;
13、当上位机不需要进行升级id的标定时,控制器一直在当前状态下运行,否则进入步骤7;
14、由控制器客户需求决定或应用场景决定是否需要进行升级id的标定;
15、步骤6,app有效,控制器跳转到app运行;
16、通过诊断服务0x22读取升级id;
17、当上位机不需要进行升级id的标定时,控制器一直在当前状态下运行,否则进入步骤7;
18、由控制器客户需求决定或应用场景决定是否需要进行升级id的标定;
19、步骤7,控制器执行标定,标定完成,执行ecu复位,进入步骤1。
20、进一步,所述步骤2包括:
21、步骤201:通过非易失性存储器接口获取升级id;
22、步骤202:通过哈希算法或者用户定义规则校验升级id的正确性,校验通过使用此id,校验失败使用默认的bootloader升级id。
23、进一步,所述步骤7包括:
24、步骤701:控制器收到上位机发送的诊断命令进入扩展会话请求,因为标定前提条件要求定义在扩展会话下执行;
25、步骤702:安全访问校验,校验成功继续接收诊断服务,校验失败响应负响应码;
26、步骤703:上位机发送诊断命令标定写数据信息请求;
27、步骤704:控制器判断接收的写数据信息即升级id是否符合自定义校验规则,符合自定义校验规则执行步骤705,否则上位机发出否定响应码,提示标定失败退出;
28、步骤705:调用非易失性存储器接口将升级id写入控制器非易失性存储器;
29、步骤706:置app有效位为false,防止bootloader升级id与app不一致导致升级失败。
30、进一步,所述步骤702具体为:上位机发送诊断请求27 01,请求种子,控制器根据自定义算法生成的种子响应给上位机,接着上位机根据收到的种子,根据自定义算法计算出密钥的值,并通过诊断请求27 02发送密钥给控制器,控制器根据自定义算法计算出密钥并比较接收到的密钥,密钥比较一致即校验成功否则失败,校验成功继续接收诊断服务,校验失败响应负响应码,上位机提示失败并退出。
31、进一步,当步骤1结束后,若通过上位机诊断命令请求进入编程会话命令,则检测控制器中的bootloader升级id与app是否一致;
32、当bootloader升级id与app一致时,上位机按照uds协议规范升级流程,执行app程序升级,并在升级完成后,执行软复位;
33、当bootloader升级id与app不一致时,上位机提示响应超时,编程会话服务失败并退出。
34、本发明产生的有益效果是:
35、(1)当控制器中app有效标志位false即只存在bootloader的场景下,此时控制器程序一直执行在bootloader中,诊断会话模式处于默认会话,需要进入扩展会话,通过诊断服务0x22读取升级id,假设是应用场景需要的,无需标定,假设非应用场景的需要通过诊断服务0x2e更改为应用场景需要的bootloader升级id,以上操作首次所使用的升级诊断id为bootloader本身统一默认的bootloader升级id,此id为用户自定义。
36、(2)当控制器中app有效标志位true即存在bootloader和app场景下,此时为一个完整的控制器程序,需要变更为另一种应用场景的应用程序时,此时控制器一直运行在app程序里面,首先进入app的扩展会话,当前app所使用过的升级id与bootloader是一致的,区别于仅存在只有bootloader场景或bootloader和app同时存在场景,此id为当前应用场景唯一识别的升级id,在app里面通过此id标定所需要应用场景的升级id到非易失性存储器中,然后通过标定后的升级id来升级对应的应用场景app程序,以此达到更换升级id与应用场景app的目的。
37、(3)不能直接升级所需应用场景app文件原因,是因为一旦升级了与bootloader有效的升级id所需求不一致的app程序时,那么当下次升级程序在app跳入bootloader的时候无法正确响应请求,会导致升级失败,出现这种异常情况,只能拆开控制器外壳,通过烧录器进行烧录,所以变更应用场景直接变更升级id,后变更app程序,会省去拆开控制器外壳的繁重过程,使得工作过程效率更高更简化。
本文地址:https://www.jishuxx.com/zhuanli/20240929/312559.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。