一种基于CAN通信的兼容多设备平台的软件更新方法与流程

文档序号:20028835发布日期:2020-02-28 10:08阅读:370来源:国知局
一种基于CAN通信的兼容多设备平台的软件更新方法与流程

本发明涉及汽车设备技术领域,具体涉及一种基于can通信的兼容多设备平台的软件更新方法。



背景技术:

随着信息技术的发展,越来越多的功能集成至仪表和车身控制模块内部,软件的复杂程序也与日俱增,设计人员可能无法在仪表和车身控制模块软件设计完成的初期将仪表功能的每个细节都实现的尽善尽美,另一方面,终端用户也可能会提出一些新的需求,要求仪表和车身控制模块进行配合实现,而这都难免会造成仪表和车身控制模块软件的修改和升级。

目前主流的工业车辆仪表和车身模块软件软件更新方法有两种:

第一种方法是将仪表和车身控制模块的外壳打开,暴露出内部的线路板,线路板上预留有烧写软件的接口,服务人员使用笔记本电脑连接烧写软件使用的编程器,将编程器的编程接口与仪表和车身控制模块线路板的编程接口相连,然后将需要更新的软件在线烧写至单片机,完成后再将仪表和车身控制模块重新组装。此方法的缺点显而易见,就是必须要拆开仪表和车身控制模块的外壳,而实际上由于仪表和车身控制模块的安装位置以及安装方式的不同,将仪表和车身控制模块外壳拆开很可能是一件相当耗时耗力的事情;

第二种方法是利用整车的can总线网络,通过can总线将需要更新的软件发送给仪表和车身控制模块,当服务人员采用usb驱动,wifi转can驱动等不同的下载设备时,相应的,也需要打开不同的下载软件,既增加服务人员搜索软件的时间,也导致多个软件打开后,后台资源得不到释放,这对于服务人员来说是无法接受的。



技术实现要素:

本发明的目的在于克服上述现有技术的缺点,提出一种基于can通信的兼容多设备平台的软件更新方法,该方法可以实现使用不同的下载设备驱动时,不再打开不同的软件,从而大大节约了时间成本。

为达到上述目的,本发明采用以下技术方案予以实现:

一种基于can通信的兼容多设备平台的软件更新方法,包括如下步骤:

步骤一,上位机采用不同类型的下载设备与下位机连接,上位机中设置有与不同类型的下载设备对应的下载设备驱动,每次连接都在上位机中创建一个与下载设备类型对应的api接口对象,直到将所有使用的下载设备的api接口对象均创建完成;

步骤二,将上位机采用下载设备与下位机连接,匹配与下载设备对应的api接口对象,在上位机中选取与下载设备类型对应的下载设备驱动,完成连接;

步骤三,完成连接后,下位机开始从上位机中下载软件更新数据:上位机首先向下位机定时发送bootloader请求指令,下位机收到bootloader请求后进入bootloader,然后上位机通过can通信协议将软件更新数据传送给下位机,并使用编程指令对下位机进行编程;

步骤四,所有所需更新的软件数据下载完成后,更新完成。

优选的,步骤一中,上位机与下位机连接后,首先在上位机中创建一个api接口,定义下载设备的驱动方法,然后根据不同的下载设备驱动创建api的实现类,同时实现api接口中下载设备驱动功能的抽象方法,最后,通过工厂类来选择与下载设备类型对应的实现类来创建api接口对象。

优选的,步骤三中,上位机向下位机发送数据时,将软件更新数据逐行发送,进行软件更新,软件更新数据每行至少两个字符表示一组16进制数据。

进一步,上位机向下位机发送数据前,上位机对软件更新数据进行解析,软件更新数据的解析格式为bbaaaatthhhh......hhhcc,其中,bb表示此行数据长度字节数;aa表示数据记录的起始地址;tt表示记录类型,其中,00代表数据记录类型,01代表文件记录结束类型,02代表扩展段地址记录类型,04代表扩展线性地址记录;hh......hh表示下载数据;cc表示校验码。

再进一步,步骤三中,下载前,上位机根据解析的软件更新数据的地址信息向下位机发送擦除指令,擦除待编程的flash和eeprom区域。

优选的,步骤三中,在下位机进入bootloader后使用硬件过滤器过滤掉与bootloader功能无关的can报文。

优选的,步骤三中,在接收中断时,将报文放于下位机的软件缓冲区,在处理报文时从软件缓冲区依次取出。

优选的,步骤三中,下位机设置有nvm驱动模块,可通过tblrd读表、tblwt写表和nvm驱动模块,控制寄存器实现运行时自编程。

与现有技术相比,本发明具有以下有益效果:

本发明的软件更新方法,基于车辆的can总线网络架构,通过对不同类型的下载设备创建与其对应的api接口对象,从而在连接时匹配对应的api接口对象,实现了下载设备驱动的无缝切换,实现了稳定,可靠的程序下载功能,利用车辆自身的can总线网络即可实现对车辆仪表和车身控制模块的程序更新,并支持不同的下载设备驱动,节约了服务人员打开不同适配软件所耗费的时间。

进一步,使用硬件过滤器过滤掉无关can报文,能够降低cpu的负载。

进一步,在接收中断时,将报文放于下位机的软件缓冲区,在处理报文时从软件缓冲区依次取出,能够防止缓冲区溢出而导致的丢帧。

附图说明

图1为本发明的uml图;

图2为本发明的上位机与下位机的通讯流程图;

图3为本发明的上位机中软件的第一界面图;

图4为本发明的上位机中软件的第二界面图。

具体实施方式

下面结合附图对本发明做进一步地说明。

本发明提供一种基于can通信的兼容多设备平台的软件更新方法,该方法的整体思路是基于车辆的can总线网络架构,利用包含有启动管理,底层驱动,通讯服务等基本功能模块的bootloader,通过下载设备驱动的无缝切换,实现了稳定,可靠的程序下载功能;同时,又通过通讯服务,简化了上位机与下位机的信息交互,本实施例上位机采用电脑,下位机为仪表和车身控制模块;下载设备和下位机中内置有can通信模块。

根据本发明提出的基于can通信的兼容多设备平台的软件更新方法,包括以下步骤:

步骤一.根据不同的下载设备驱动在设备连接界面选取不同的驱动选项。

基于can通信的兼容多设备平台的uml图如图1所示,步骤一中按如下方式进行不同下载设备驱动之间的切换:

首先创建图1所示的api接口,定义operation方法,如下载设备驱动的打开连接、数据收发和关闭连接等方法。然后根据不同的下载设备驱动创建api的实现类,如impla类和implb类,同时实现api接口中下载设备驱动打开连接、数据收发和关闭连接等的抽象方法,最后,通过simplefactory工厂类来选择合适的实现类来创建api接口对象。

进而在上位机和下位机连接时,上位机通过工厂类来获取api接口对象,然后面向api接口编程。

步骤二.在程序下载界面选取目标hex文件,并对其解析。

软件更新数据存储在hex文件中,具体按如下方式解析hex文件:

按照hex文件按行来记录数据的特性,每一行从“:”开始,每至少两个字符表示一组16进制数据,格式为:bbaaaatthhhh......hhhcc。其中,bb表示此行数据长度字节数。aa表示数据记录的起始地址。tt表示记录类型,其中,00代表数据记录类型,01代表文件记录结束类型,02代表扩展段地址记录类型,04代表扩展线性地址记录。hh......hh表示下载数据。cc表示校验码。

步骤三.上位机与仪表和车身控制模块的通讯流程图如图2所示,下载程序时,上位机首先定时发送bootloader请求指令,仪表和车身控制模块收到bootloader请求后进入bootloader,当仪表和车身控制模块进入bootloader后,上位机根据解析的hex文件的地址信息向仪表和车身控制模块发送擦除指令,擦除待编程的flash和eeprom区域;然后,上位机通过数据包传输服务,即can通信协议,将数据每行依次传送给仪表和车身控制模块,上位机每次发送的字节数可根据软件,仪表和车身控制模块的内存,hex文件的大小,编程的字节数等确定;最后,上位机利用编程指令对仪表和车身控制模块进行编程,并在编程结束后对编程区域进行数据校验,并依此循环下载,直至所有数据下载完成。

按如下方式组织bootloader:

启动管理模块:仪表和车身控制模块上电后首先进入启动管理模块,可通过修改链接器描述文件使仪表和车身控制模块上电后跳转至启动管理模块的处理函数。该模块通过“应用程序有效标志”和“bootloader请求标志”引导程序进入用户程序或是bootloader程序。

通信协议处理模块:通过预定义的服务实现软件与仪表和车身控制模块之间的数据通信,包括bootloader请求等服务。

驱动模块:首先是存储地址分配:一般将用户程序存储于紧随中断向量表的存储空间,而将bootloader放在应用程序存储器区域的最高地址区域。下位机的存储空间分配如下:0x000000~0x000004放置复位向量地址,0x000004~0x000100放置中断向量表,0x000100~0x000a00放置应用程序,0x000a00~0x00affe放置应用程序。其次是can驱动模块,为了降低cpu负载,在进入bootloader后使用硬件过滤器过滤掉与bootloader功能无关的can报文。同时,为了防止缓冲区溢出而导致的丢帧,在接收中断时,将报文放于下位机的软件缓冲区,在处理报文时从软件缓冲区依次取出。最后是nvm驱动模块,nvm驱动模块即非易失性存储器,仪表和车身控制模块包含的nvm驱动模块包括flash和eeprom,可通过tblrd读表、tblwt写表和nvm驱动模块,控制寄存器实现运行时自编程。

基于can通信的兼容多设备平台软件界面截图如图3和图4所示,该上位机的软件通过java实现,单击“连接”菜单,进入下载设备驱动选择界面,当设备驱动选中后,其他选项会灰显。再单击“下载”菜单,进入下载界面,通过选中目标设备和boot模式,就可以数据传送给仪表和车身控制模块。

最后应当说明的是:以上实施例仅用以说明技术方案而非对其限制;尽管参照较佳实施例进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对具体实施方式进行修改或者对部分技术特征进行等同替换而不脱离方案的精神,其均应涵盖在本案请求保护的技术方案范围当中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1