一种控制器软件代码分区方法及其运行方法

文档序号:8543539阅读:700来源:国知局
一种控制器软件代码分区方法及其运行方法
【技术领域】
[0001]本发明涉及控制器软件领域,具体地说是一种控制器软件代码分区方法。
【背景技术】
[0002]电动汽车具有零排放、无污染、能量转换效率高、噪声小等特点,是解决城市化汽车突出问题的重要途径。发展电动汽车将对调整我国产业结构、提高重点领域的创新能力和市场竞争能力,促进经济社会协调发展产生深远影响。电动汽车的价值不仅仅是节能减排,更是一种用能方式的变革及由此带来的能源结构的优化,电动汽车才能从根本上解决石油依赖、环境污染、温室气体排放以及能源安全问题,是发展新能源汽车的最终选择。
[0003]控制器是电动汽车的核心部件,用来控制电动汽车电机的启动、运行、进退、速度、停止以及其它电子器件,它就像是电动汽车的大脑,是电动车上重要的部件之一。
[0004]汽车控制器软件代码一般分为引导加载程序和应用程序两部分代码,两者之间相互独立,具有各自的初始化和配置代码。引导加载程序又分为引导和加载两部分程序。控制器上电启动时,引导加载程序首先运行其初始化和配置代码,包括硬件、数据段和中断向量的初始化等,进入引导程序部分,加载并运行应用程序。应用程序运行时,首先运行其初始化和配置代码,将硬件、数据段和中断向量的初始化等依次进行,然后进入应用程序循环运行。运行引导程序时,如果应用程序不存在则进入加载程序部分等待进行应用程序的更新。如果应用程序收到程序更新的指令,则跳转到加载程序部分。应用程序运行时,如果收到程序更新的指令则跳转到引导加载程序运行,并进入到加载程序部分。
[0005]除汽车控制器外,目前大多数控制器都是采用上述代码分区方式,分为引导加载程序和应用程序,并且他们都具有各自独立的初始化和配置代码。因此在控制器上电启动过程中会进行两次初始化和配置代码的运行,增加了控制器上电启动的运行时间。如果引导加载程序和应用程序的初始化和配置代码具有不同的配置,会导致硬件或者软件初始化不一致,从而引起程序运行出错。

【发明内容】

[0006]为此,本发明所要解决的技术问题在于现有技术中的控制器代码分区方法不仅需要运行两次初始化和配置代码,花费时间长,而且易出现初始化不一致,程序运行出错的问题,从而提出一种简化初始化和代码配置且提高了初始化一致性的控制器软件代码分区方法及其运行方法。
[0007]为解决上述技术问题,本发明提供一种控制器软件代码分区方法及其运行方法。
[0008]本发明提供一种控制器软件代码分区方法,将控制器的存储空间分为引导加载区和应用程序区,所述应用程序区中设置有应用程序代码,所述引导加载区分为初始化和配置区、引导区、加载区,其中:
所述初始化和配置区设置有所述引导加载区和所述应用程序区共用的初始化和配置代码; 所述引导区设置有引导代码,用于检查所述应用程序代码的有效性,若有效则转到应用程序区,若无效,则转到所述加载区;
所述加载区设置有加载代码,用于运行传输和烧写协议,与上位机通讯进行所述应用程序区的的应用程序代码的更新。
[0009]优选地,所述初始化和配置区用于整个控制器硬件初始化、数据初始化和中断向量表初始化中的一种或几种。
[0010]优选地,所述加载区内的代码为不可返回模式,只能通过复位或者重新上电退出。
[0011]优选地,所述应用程序区的代码用于系统的调度、控制策略以及标定诊断等通讯协议的运行。
[0012]优选地,对应所述初始化和配置区、引导区、加载区和应用程序区分别设置有独立的RAM运行分区。
[0013]本发明还提供一种控制器软件代码分区的运行方法,包括如下步骤:
控制器上电,进入初始化和配置分区,运行硬件的初始化、数据初始化和中断向量表,控制器硬件进入使能状态;
进入引导区,运行引导代码,判断应用程序区是否有效,如有效则进入应用程序区,运行控制器的调度、输入输出处理、控制策略;否则进入加载区,运行传输和烧写代码,等待与上位机进行应用程序更新。
[0014]优选地,进入加载区,运行传输和烧写代码,等待与上位机进行应用程序更新的过程中,还包括如果没有程序更新则一直等待,直至系统下电或者重启退出。
[0015]优选地,所述初始化和配置分区、引导区、加载区、应用程序区分别运行在独立的RAM运行分区内。
[0016]本发明的上述技术方案相比现有技术具有以下优点,。
[0017](I)本发明提供一种控制器软件代码分区方法,将控制器的存储空间分为引导加载区和应用程序区,所述应用程序区中设置有应用程序代码,所述引导加载区分为初始化和配置区、引导区、加载区,初始化和配置区设置有所述引导加载区和所述应用程序区共用的初始化和配置代码。针对现有技术中控制器代码分区不仅需要运行两次初始化和配置代码,花费时间长,而且易出现初始化不一致,程序运行出错的缺点,本方案中对控制器加载程序和应用程序进行了优化,将两者的初始化和配置代码进行了合并,统一放在初始化和配置区中。因此引导加载程序和应用程序不再相互独立而实现了统一,将两者合并成为一整个程序,只是分配到不同的代码空间上.在控制器上电启动时,只需要运行一次初始化和配置代码,减少了控制器的启动时间和整个控制器代码的大小。又因为初始化和配置代码合并,引导加载程序和应用程序只需统一修改和配置,减少了代码配置的次数和复杂度,避免了由于初始化和配置不一致而出现程序运行错误的机会。
[0018](2)本发明所述的控制器软件代码分区方法,对应所述初始化和配置区、引导区、加载区和应用程序区分别设置有独立的RAM运行分区,基于以上分区的划分,实现了对整个控制器代码空间分配的优化,将引导加载区和应用程序的初始化和配置代码实现合并,同时对各个FLASH分区划分了单独的RAM运行分区,使各个代码分区的功能独立而且相互不影响。
[0019](3)本发明还提供一种控制器软件代码分区的运行方法,控制器上电,进入初始化和配置分区,运行硬件的初始化、数据初始化和中断向量表,控制器硬件进入使能状态;进入引导区,运行引导代码,判断应用程序区是否有效,如有效则进入应用程序区,运行控制器的调度、输入输出处理、控制策略;否则进入加载区,运行传输和烧写代码,等待与上位机进行应用程序更新。本方案将引导加载程序和应用程序的代码空间分配进行了优化,将两者的初始化和配置代码合并在引导加载程序分区,应用程序分区不再有初始化和配置代码。因此控制器上电时只进行一次初始化即可,从而减少了控制器软件的启动时间和整个软件代码的大小。同时也避免了两部分程序由于初始化和配置代码不一致而出现的程序运行错误。
【附图说明】
[0020]为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明,其中
图1是本发明实施例中的控制器软件代码分区的示意图;
图2是本发明另一实施例中的控制器软件代码分区示意图;
图3是本发明实施例中的控制器代码分区运行状态图。
【具体实施方式】
[0021]实施例1:
本实施例中提供一种控制器软件代码分区方法,是一种控制器中的存储空间的分配方式,将控制器的存储空间(FLASH)分为引导加载区和应用程序区,所述应用程序区中设置有应用程序代码,用于系统的调度、控制策略以及标定诊断等通讯协议的运行。
[0022]所述引导加载区分为初始化和配置区、引导区、加载区,其中:
初始化和配置区设置有所述引导加载区和所述应用程序区共用的初始化和配置代码,用于整个控制器硬件初始化、数据初始化和中断向量表初始化等多种初始化处理。
[0023]引导区设置有引导代码,用于检查所述应用程序代码的有效性,若有效则转到应用程序区,若无效,则转到所述加载区。所述加载区内的代码为不可返回模式,只能通过复位或者重新上电退出。
[0024]所述加载区设置有加载代码,用于运行传输和烧写协议,与上位机通讯进行所述应用程序区的的应用程序代码的更新。
[0025]本实施例中的方案可用于汽车控制器中,也可以用于其他任意类型的控制器中,对控制器中的代码分区进行优化。针对现有技术中控制器代码分区不仅需要运行两次初始化和配置代码,花费时间长,而且易出现初始化不一致,程序运行出错的缺点,本方案中对控制器加载程序和应用程序进行了优化,将两者的初始化和配置代码进行了合并,统一放在初始化和配置区中。因此引导加载程序和应用程序不再相互独立而实现了统一,将两者合并成为一整个程序,只是分配到不同的代码空间上.在控制器上电启动时,只需要运行一次初始化和配置代码,减少了控制器的启动时间和整个控制器代码的大小。又因为初始化和配置代码合并,引导加载程序和应用程序只需统一修改和配置,减少了代码配置的次数和复杂度,避免了由于初始化和配置不一致而出现程序运行错误的机会。
[0026]在进一步优选的实施方案中,对应所述初始化和配置区、引导区、加载区和应用程序区分别设置有独立的RAM运行分区,与现有技术中上述分区都在同一个RAM分区运行的方式相比,各个代码分区的功能独立而且相互不影响,可以单独配置修改或者更新而不影响其他分区程序的RAM空间分配。
[0027]实施例2:
一种控制器软件代码分区的运行方法,对应于实施例1中的控制器软件代码的分区方式,其分区的运行过程如下:
首先,控制器上电,进入初始化和配置区,运行硬件的初始化、数据初始化和中断向量表,控制器硬件进入使能状态。
[0028]然后,进入引导区,运行引导代码,判断应用程序区是否有效,如有效则进入应用程序区,运行控制器的调度、输入输出处理、控制策略;否则进入加载区,运行传输和烧写代码,等待与上位机进行应用程序更新。如果没有程序更新则一直等待,直至系统下电或者重启退出。
[0029]上述过程中,所述初始化和配置分区、引导区、加载区、应用程序区分别运行在独立的RAM运行分区内。
[0030]由于将引导加载程序和应用程序的代码空间分配进行了优化,将两者的初始化和配置代码合并在初始化和配置区,应用程序分区不再有初始化和配置代码。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1