掌桥专利:专业的专利平台
掌桥专利
首页

一种电机专用驱动控制芯片的CAN-Bootloader升级方法

文献发布时间:2024-04-18 19:58:26


一种电机专用驱动控制芯片的CAN-Bootloader升级方法

技术领域

本发明涉及新能源汽车技术领域,具体涉及一种电机专用驱动控制芯片的CAN-Bootloader升级方法。

背景技术

随着新能源汽车ECU(Electronic Control Unit,电子控制单元)应用软件开发的快速发展,其功能越来越强大,实现也越来越复杂。如果应用软件后续需要进行功能升级,传统的方法是将能源汽车电机控制器从整车上拆卸下来,而本申请的发明人经过研究发现,这样不仅增加了更新的工作量,而且还容易对车辆本身造成损坏,因而亟需对新能源汽车电机控制器装车之后应用程序升级困难的问题进行解决,开发了一种电机专用驱动控制芯片的CAN总线BootLoader升级的方法,BootLoader可以通过车载网络传输数据,实现应用软件的在线更新,免除拆卸的麻烦,在线诊断五大诊断标准之一的CAN总线,拥有高度的弹性调整能力,可以在既有的网络中增加节点而不用在软硬件上做任何修正和调整。因此,一种电机专用驱动控制芯片的CAN-Bootloader升级方法具有很大的使用价值。

发明内容

针对现有新能源汽车电机控制器装车之后应用程序升级是将电机控制器从整车上拆卸下来,这样不仅增加了更新的工作量,而且还容易对车辆本身造成损坏的技术问题,本发明提供一种电机专用驱动控制芯片的CAN-Bootloader升级方法,BootLoader可以通过车载网络传输数据,实现应用软件的在线更新,免除拆卸的麻烦,在线诊断五大诊断标准之一的CAN总线,拥有高度的弹性调整能力,可以在既有的网络中增加节点而不用在软硬件上做任何修正和调整,该方法具有很大的使用价值。

为了解决上述技术问题,本发明采用了如下的技术方案:

一种电机专用驱动控制芯片的CAN-Bootloader升级方法,在该方法中采用了一种基于CAN通信的Bootloader升级系统,所述基于CAN通信的Bootloader升级系统组成包括下位机的Bootloader程序和应用程序、上位机软件以及上下位机的CAN通信协议,所述下位机的Bootloader程序和应用程序存放在电机专用驱动控制芯片的Flash存储器中,上位机发送的数据经USB转CAN转换成CAN帧送入下位机的CAN接收缓冲区,下位机接收到消息应答将数据帧通过USB转CAN发送至上位机形成循环,所述方法包括以下步骤:

S1、设计安全模式,所述安全模式用于提供安全访问和下载验证;

S2、设计Flash驱动,所述Flash驱动有擦除和写入功能,Flash存储器在写入或擦除数据之前,都需要验证操作的合法性,应用程序下载时,把Flash驱动下载到ECU的RAM中,应用程序下载完成后,再把RAM中的数据清除,ECU进入正常操作模式;

S3、配置CAN驱动模块,所述CAN驱动用于完成CAN的底层配置,包括CAN初始化以及CAN的发送和接收函数,所述CAN初始化包括中断、看门狗和时钟的配置,由现有的嵌入式软件开发工具Keil5完成;

S4、设计Bootloader程序,所述Bootloader程序用于在应用程序需要升级时接收、解析CAN数据并将数据写入Flash中;

S5、执行Bootloader升级,所述Bootloader升级包括启动引导程序和应用程序下载两部分,所述启动引导是在Bootloader程序上电完成初始化之后的CAN通信循环等待接受到启动命令或者等待超时,将Flash中的应用程序加载到ECU的RAM中执行;所述程序下载是在Bootloader程序接收到下载程序的命令时,将应用程序代码从上位机下载下来并写入到Flash中存储起来。

进一步,所述步骤S1中设计安全访问模式包括:依照ISO15765协议中的0x27安全访问服务来提供下载验证,具体流程是上位机向ECU发出请求种子信号来申请一个种子,ECU随机返回种子,上位机得到ECU返回的种子后,将种子进行处理得到有效密钥Key然后发送给ECU,Bootloader程序得到访问ECU的授权;为了保证数据下载的正确性,使用现有CRC32校验来保证。

进一步,所述步骤S2中的Flash存储器由一个主存储区和一个NVR存储区构成,所述主存储区由32个扇区构成,每个扇区包含512个基本存储器单元;所述NVR存储区由3个扇区构成,每个扇区包含512个基本存储器单元;所述主存储区起始地址为0x10000000,结束地址为0x1001F000,所述Bootloader程序放置在0x10000000-0x1001F000之间;所述Flash驱动包括CAN_BOOT_ProgramDatatoFlash()和CAN_BOOT_ErasePage()两个函数,其中CAN_BOOT_ProgramDatatoFlash()函数用来将数据烧写到指定地址的Flash中,此函数有Address Flash起始地址、Data数据存储区起始地址和DataNum数据字节数三个参数;CAN_BOOT_ErasePage()函数用来擦除指定扇区区间的Flash数据,此函数包含StartPage起始扇区地址和EndPage结束扇区地址两个参数。

进一步,所述步骤S3中CAN初始化以及CAN的发送和接收函数具体配置如下:

S31、CAN初始化对应CAN_Configuration函数,分为屏蔽所有中断、初始化锁相环和时钟、定时器和波特率设置、中断向量初始化,CAN_Configuration函数初始化配置CAN中断、初始化配置CAN GPIO和初始化配置CAN,在电机专用驱动控制芯片如SPD1179的开发板中,CAN的收发引脚分别是GPIO35和GPIO34,波特率设置为500Kbps;

S32、在CAN的发送函数CAN_WriteData()中,根据已定义好的数据帧结构,将对应参数写入对应寄存器,接着启动发送流程,然后根据发送函数最开始设定的返回值来判断发送是否成功,如0表示消息发送成功,1表示消息发送失败;

S33、在CAN的接收函数CAN1_RX0_IRQHandler()中,需要判断消息类型是否匹配、是标准帧还是扩展帧,并获得对应的帧ID;接下来判断是否为数据帧,若为数据帧则进行数据接收,数据接收使用的是中断方式实现的。

进一步,所述步骤S4中Bootloader程序是单片机上电运行的一段引导加载代码,主要工作是初始化硬件设备和内存映射,构建良好的软硬件环境,并决定升级应用程序还是继续运行原有的应用程序;如果升级应用程序,则擦除原有程序数据并通过CAN总线把更新的应用程序下载到Flash存储器中,再拷贝到ECU的RAM中运行;如果继续运行原有的应用程序,则把Flash存储器中的应用程序数据拷贝到ECU的RAM里,应用程序跳转到指定地址处运行。

进一步,所述步骤S5中从系统设计层面看,Bootloader程序是底层硬件和应用程序的中间件,它可以独立编译和运行,所述Bootloader升级包括的启动引导程序和应用程序下载处理流程分别如下:

S51、启动引导程序开始执行时,先进行上电复位操作,初始化相关的I/O引脚,然后判断应用程序是否需要升级,如果不需要升级,则执行CAN_BOOT_JumpToApplication()函数跳转到应用程序执行;如果需要升级,则初始化系统时钟和CAN总线,接收CAN数据写入应用代码区域,之后再判断应用程序升级是否成功,若成功就跳转到应用程序执行,否则就重新初始化系统时钟;

S52、应用程序下载开始执行时,同样进行上电复位,系统初始化,判断是否需要在线自动升级,如果需要升级跳转到Bootloader执行,否则进入应用程序,应用程序主循环;

S53、电机专用驱动控制芯片在线程序烧写,利用现有的嵌入式软件开发工具Keil5,将要升级的应用程序编译成.hex文件,然后使用Keil5自带的fromelf.exe程序将.hex文件转换为.bin文件;利用仿真器将被烧写的引导程序固化在电机专用驱动控制芯片的Flash存储器的相应地址中;重新上电复位,利用上位机软件将被烧写的应用程序即转换后的.bin文件发送到电机专用驱动控制芯片中;电机专用驱动控制芯片重新上电,即可自动运行新更新的应用程序,完成电机专用驱动控制芯片的在线程序烧写。

与现有技术相比,本发明提供的电机专用驱动控制芯片的CAN-Bootloader升级方法,通过CAN通信实现对电机专用驱动控制芯片即电机控制器应用程序的在线更新升级,同时Bootloader能正常完成程序启动加载,能比较准确和方便地将应用程序下载到控制单元,为技术开发和维护人员提供了一种方便快捷的应用程序升级程序的方法,也避免了传统升级应用程序时因拆卸电机控制器带来的各种问题,降低了设备维护成本以及提高了应用程序更新的速度和精确度。

附图说明

图1是本发明提供的Bootloader升级系统基本组成示意图。

图2是本发明提供的Bootloader程序简易流程示意图。

图3是本发明提供的CAN接收数据流程示意图。

图4是本发明提供的CAN发送数据流程示意图。

图5是本发明提供的Bootloader程序框架设计示意图。

图6是本发明提供的启动引导程序流程示意图。

图7是本发明提供的应用程序下载流程示意图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。

本发明提供一种电机专用驱动控制芯片的CAN-Bootloader升级方法,在该方法中采用了一种基于CAN通信的Bootloader升级系统,请参考图1所示,所述基于CAN通信的Bootloader升级系统组成包括下位机的Bootloader程序和应用程序、上位机软件以及上下位机的CAN通信协议即CAN分析仪,所述下位机的Bootloader程序和应用程序存放在电机专用驱动控制芯片的Flash存储器中,上位机发送的数据经USB转CAN转换成CAN帧送入下位机的CAN接收缓冲区,下位机接收到消息应答将数据帧通过USB转CAN发送至上位机形成循环,所述方法包括以下步骤:

S1、设计安全模式,所述安全模式用于提供安全访问和下载验证;

S2、设计Flash驱动,所述Flash驱动有擦除和写入功能,Flash存储器在写入或擦除数据之前,都需要验证操作的合法性,应用程序下载时,把Flash驱动下载到ECU的RAM中,应用程序下载完成后,再把RAM中的数据清除,ECU进入正常操作模式,这样不仅可以保护Bootloader,还能节省Flash存储器内存空间;

S3、配置CAN驱动模块,所述CAN驱动用于完成CAN的底层配置,包括CAN初始化以及CAN的发送和接收函数,所述CAN初始化包括中断、看门狗和时钟的配置,由现有的嵌入式软件开发工具Keil5完成;

S4、设计Bootloader程序,所述Bootloader程序用于在应用程序需要升级时接收、解析CAN数据并将数据写入Flash中,BootLoader程序的执行流程如图2所示;

S5、执行Bootloader升级,所述Bootloader升级包括启动引导程序和应用程序下载两部分,所述启动引导是在Bootloader程序上电完成初始化之后的CAN通信循环等待接受到启动命令或者等待超时,将Flash中的应用程序加载到ECU的RAM中执行;所述程序下载是在Bootloader程序接收到下载程序的命令时,将应用程序代码从上位机下载下来并写入到Flash中存储起来。

作为具体实施例,所述步骤S1中设计安全访问模式包括:依照ISO15765协议中的0x27安全访问(Security Access 0x27)服务来提供下载验证,具体流程是上位机向ECU发出请求种子(requestSeed)信号来申请一个种子(Seed),ECU随机返回种子,上位机得到ECU返回的种子后,将种子进行处理得到有效密钥Key然后发送给ECU,Bootloader程序得到访问ECU的授权;为了保证数据下载的正确性,使用现有CRC32校验来保证,由于其具体校验算法步骤为本领域技术人员熟知,因而在此不再赘述。

作为具体实施例,所述步骤S2中的Flash存储器由一个主存储区和一个NVR存储区构成,所述主存储区由32个扇区构成,每个扇区包含512个基本存储器单元(64-bit);所述NVR存储区由3个扇区构成,每个扇区包含512个基本存储器单元(64-bit);所述主存储区起始地址为0x10000000,结束地址为0x1001F000,Bootloader程序应该放在受保护的Flash中,但不是所有的Flash都可以设置保护,所以一般所述Bootloader程序放置在0x10000000-0x1001F000之间;所述Flash驱动包括CAN_BOOT_ProgramDatatoFlash()和CAN_BOOT_ErasePage()两个函数,其中CAN_BOOT_ProgramDatatoFlash()函数用来将数据烧写到指定地址的Flash中,此函数有Address Flash起始地址、Data数据存储区起始地址和DataNum数据字节数三个参数;CAN_BOOT_ErasePage()函数用来擦除指定扇区区间的Flash数据,此函数包含StartPage起始扇区地址和EndPage结束扇区地址两个参数。

作为具体实施例,所述步骤S3中CAN初始化以及CAN的发送和接收函数具体配置如下:

S31、CAN初始化对应CAN_Configuration函数,分为屏蔽所有中断、初始化锁相环(PLL)和时钟、定时器和波特率设置、中断向量初始化,CAN_Configuration函数初始化配置CAN中断、初始化配置CAN GPIO和初始化配置CAN,在电机专用驱动控制芯片如SPD1179的开发板中,CAN的收发引脚分别是GPIO35和GPIO34,波特率设置为500Kbps;

S32、在CAN的发送函数CAN_WriteData()中,根据已定义好的数据帧结构,将对应参数写入对应寄存器,其中使用CANRFLG_REF参数检测是否接收到新消息,0表示没有新消息,1表示有新消息,配置好相关参数后接着启动发送流程,然后根据发送函数最开始设定的返回值来判断发送是否成功,如0表示消息发送成功,1表示消息发送失败,具体CAN的发送数据流程如图4所示;

S33、在CAN的接收函数CAN1_RX0_IRQHandler()中,需要判断消息类型是否匹配、是标准帧还是扩展帧,并获得对应的帧ID;接下来判断是否为数据帧,若为数据帧则进行数据接收,数据接收使用的是中断方式实现的,具体CAN的接收数据流程如图3所示。

作为具体实施例,所述步骤S4中Bootloader程序是单片机上电运行的一段引导加载代码,主要工作是初始化硬件设备和内存映射,构建良好的软硬件环境,并决定升级应用程序还是继续运行原有的应用程序;如果升级应用程序,则擦除原有程序数据并通过CAN总线把更新的应用程序下载到Flash存储器中,再拷贝到ECU的RAM中运行;如果继续运行原有的应用程序,则把Flash存储器中的应用程序数据拷贝到ECU的RAM里,应用程序跳转到指定地址处运行,具体Bootloader程序设计框图如图5所示。

作为具体实施例,所述步骤S5中从系统设计层面看,Bootloader程序是底层硬件和应用程序的中间件,它可以独立编译和运行,所述Bootloader升级包括的启动引导程序和应用程序下载处理流程分别如下:

S51、启动引导程序开始执行时,先进行上电复位操作,初始化相关的I/O引脚,然后判断应用程序是否需要升级,如果不需要升级,则执行CAN_BOOT_JumpToApplication()函数跳转到应用程序执行;如果需要升级,则初始化系统时钟和CAN总线,接收CAN数据写入应用代码区域,之后再判断应用程序升级是否成功,若成功就跳转到应用程序执行,否则就重新初始化系统时钟,具体启动引导程序处理流程如图6所示;

S52、应用程序下载开始执行时,同样进行上电复位,系统初始化,判断是否需要在线自动升级,如果需要升级跳转到Bootloader执行,否则进入应用程序,应用程序主循环,具体应用程序下载处理流程如图7所示;

S53、电机专用驱动控制芯片如SPD1179在线程序烧写,利用现有的嵌入式软件开发工具Keil5,将要升级的应用程序编译成.hex文件,然后使用Keil5自带的fromelf.exe程序将.hex文件转换为.bin文件;利用仿真器将被烧写的引导程序固化在电机专用驱动控制芯片的Flash存储器的相应地址中;重新上电复位,利用上位机软件将被烧写的应用程序即转换后的.bin文件发送到电机专用驱动控制芯片中;电机专用驱动控制芯片重新上电,即可自动运行新更新的应用程序,完成电机专用驱动控制芯片的在线程序烧写。

与现有技术相比,本发明提供的电机专用驱动控制芯片的CAN-Bootloader升级方法,通过CAN通信实现对电机专用驱动控制芯片即电机控制器应用程序的在线更新升级,同时Bootloader能正常完成程序启动加载,能比较准确和方便地将应用程序下载到控制单元,为技术开发和维护人员提供了一种方便快捷的应用程序升级程序的方法,也避免了传统升级应用程序时因拆卸电机控制器带来的各种问题,降低了设备维护成本以及提高了应用程序更新的速度和精确度。

最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

相关技术
  • 一种驱动芯片的PWM信号控制电路以及汽车阅读灯LED驱动芯片
  • 一种基于专用接口芯片的微控制器编程方法
  • 一种基于微流控芯片的高通量纳升级微液滴形成和固定方法、其专用芯片及应用
  • 一种基于微流控芯片的高通量纳升级微液滴形成和固定方法、其专用芯片及应用
技术分类

06120116487608