单片机烧写方法、装置、系统及单片机与流程

文档序号:11654037阅读:377来源:国知局
单片机烧写方法、装置、系统及单片机与流程

本发明涉及计算机技术领域,尤其涉及一种单片机烧写方法、装置、系统及单片机。



背景技术:

单片机又称单片微控制器,相当于一个微型的计算机。单片机的运行需要依赖于单片机内所存储的程序,为了将调试好的单片机程序写入到单片机的存储介质中,需要执行单片机的烧写过程。从而使得单片机启动时通过运行这些程序,完成相应的功能。

在烧写过程中,需要对编译器生成的文件进行预处理,例如进行地址转换和代码填充等。在现有技术中,主要由上位机执行地址转换和代码填充等预处理的步骤,由于属于不同芯片类型的单片机在地址转换方式和填充方式上存在一定差异,必须采用与单片机匹配的上位机进行烧写,导致上位机的通用性较差。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的第一个目的在于提出一种单片机烧写方法,以解决现有技术中,上位机的通用性较差的技术问题。

本发明的第二个目的在于提出一种单片机烧写装置。

本发明的第三个目的在于提出一种单片机。

本发明的第四个目的在于提出一种单片机烧写系统。

为达上述目的,本发明第一方面实施例提出了一种单片机烧写方法,所述方法包括以下步骤:

获取上位机所编译的文件;所述文件包括第一地址,以及所述第一地址对应的数据;

根据所述单片机对应的地址转换策略,对所述文件中所涉及的第一地址,进行地址转换,得到所述单片机的第二地址;

依据所述单片机单次烧写的数据量,在所述第一地址转换得到的第二地址位置,对所述文件中所述第一地址对应的数据进行烧写。

本发明实施例的单片机烧写方法,通过获取上位机所编译的文件之后,根据单片机对应的地址转换策略,对文件中所涉及的第一地址,进行地址转换,得到单片机的第二地址,进入依据单片机单次烧写的数据量,在第一地址转换得到的第二地址位置,对文件中第一地址对应的数据进行烧写。相较于现有技术中,由上位机进行地址转换的方式,由于本发明实施例中通过单片机依据对应的地址转换策略进行地址转换,使得上位机具有较高的通用性,能够适用于多种不同芯片类型的单片机,解决了现有技术中上位机的通用性较差的技术问题。

为达上述目的,本发明第二方面实施例提出了一种单片机烧写装置,所述装置包括:

获取模块,用于获取上位机所编译的文件;所述文件包括第一地址,以及所述第一地址对应的数据;

转换模块,用于根据所述单片机对应的地址转换策略,对所述文件中所涉及的第一地址,进行地址转换,得到所述单片机的第二地址;

烧写模块,用于依据所述单片机单次烧写的数据量,在所述第一地址转换得到的第二地址位置,对所述文件中所述第一地址对应的数据进行烧写。

本发明实施例的单片机烧写装置,通过获取上位机所编译的文件之后,根据单片机对应的地址转换策略,对文件中所涉及的第一地址,进行地址转换,得到单片机的第二地址,进入依据单片机单次烧写的数据量,在第一地址转换得到的第二地址位置,对文件中第一地址对应的数据进行烧写。相较于现有技术中,由上位机进行地址转换的方式,由于本发明实施例中通过单片机依据对应的地址转换策略进行地址转换,使得上位机具有较高的通用性,能够适用于多种不同芯片类型的单片机,解决了现有技术中,上位机的通用性较差的技术问题。

为达上述目的,本发明第三方面实施例提出了一种单片机,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序,以实现:

获取上位机的编译器所编译的文件;所述文件包括第一地址,以及所述第一地址对应的数据;

根据所述单片机对应的地址转换策略,对所述文件中所涉及的第一地址,进行地址转换,得到所述单片机的第二地址;

依据所述单片机单次烧写的数据量,在所述第一地址转换得到的第二地址位置,对所述文件中所述第一地址对应的数据进行烧写。

为达上述目的,本发明第四方面实施例提出了一种单片机烧写系统,其特征在于,所述单片机烧写系统包括第三方面所述的单片机,以及用于对待烧写的程序进行编译的上位机。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明实施例所提供的一种单片机烧写方法的流程示意图;

图2为本发明实施例提供的另一种单片机烧写方法的流程示意图;

图3为本发明实施例提供的一种单片机烧写装置的结构示意图;

图4为本发明实施例提供的另一种单片机烧写装置的结构示意图;以及

图5为本发明实施例提供的一种单片机的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参考附图描述本发明实施例的单片机运行方法和装置。

图1为本发明实施例所提供的一种单片机烧写方法的流程示意图。

在将程序代码烧写入单片机之前,需要由上位机的编译器生成记录有程序代码,后缀为“hex”或“s19”的文件。其中,hex和s19均为可以烧录到单片机中的文件的格式,通常称为hex文件,s19文件。

一方面,由于hex文件或s19文件中的二进制代码地址常常需要进行转换才可以进行烧写,例如:将逻辑地址转换为物理地址,将带缓存的地址转换为不带缓存的地址等;而且另一方面,下位机的存储(flash)驱动一般要一次性写入符合一定数据量的数据,若hex文件或s19文件中的数据在遇到地址不连续,或者flash驱动多次写入数据后,最后剩余的数据不能达到一次性写入的数据量时就需要进行填充。

现有技术中,由上位机执行地址转换和代码填充这两个步骤,在这种情况下,由于采用不同芯片类型的单片机在地址转换方式和填充方式上存在一定差异,因此,必须采用与单片机匹配的上位机进行烧写,导致上位机的通用性较差。

针对这一问题,本发明实施例提供了单片机烧写方法,如图1所示,该单片机烧写方法包括以下步骤:

步骤101,获取上位机所编译的文件。

其中,文件包括第一地址,以及第一地址对应的数据。文件格式为hex文件和/或s19文件。这里所提及的数据具体可以为待烧写的程序代码。

步骤102,根据单片机对应的地址转换策略,对文件中所涉及的第一地址,进行地址转换,得到单片机的第二地址。

具体地,根据所述单片机对应的地址转换策略,对所述文件中所涉及的第一地址,进行文件的逻辑地址和单片机的物理地址之间的转换,得到所述单片机的第二地址。

和/或,根据所述单片机对应的地址转换策略,对所述文件中所涉及的第一地址,进行文件的不含缓存地址和单片机的含缓存地址之间的转换,得到所述单片机的第二地址。

步骤103,依据单片机单次烧写的数据量,在第一地址转换得到的第二地址位置,对文件中第一地址对应的数据进行烧写。

其中,数据量包括代码的字节数。

具体地,依据单片机单次烧写的数据量,分次读取文件中第一地址对应的数据。

作为一种可能的情况,当本次读取数据的数据量小于单片机单次烧写的数据量时,对本次读取数据进行填充,以使填充后数据的数据量等于所述单片机单次烧写的数据量;从所述第二地址位置开始,对填充后数据进行烧写。

作为另一种可能的情况,当本次读取数据的数据量等于所述单片机单次烧写的数据量时,从所述第二地址位置开始,对本次读取数据进行烧写。

可见在现有技术中,不仅需要手动对上位机进行操作,操作步骤繁琐,而且需要操作人员对hex文件和s19文件有一定的了解,才可以正确填充。另外,基于不同芯片类型的单片机,地址转换的方式不同,不同芯片的flash驱动一次可写入的代码字节数也不同,需要上位机根据不同芯片采用不同的地址转换方式和代码填充方式。而本发明实施例中,由单片机执行地址转换和代码填充这两个步骤,上位机只需要对hex文件或s19文件进行解析,减少了上位机的操作步骤,提高了上位机的通用性。

本实施例中,通过获取上位机所编译的文件,根据单片机对应的地址转换策略,对文件中所涉及的第一地址,进行地址转换,得到单片机的第二地址,进入依据单片机单次烧写的数据量,在第一地址转换得到的第二地址位置,对文件中第一地址对应的数据进行烧写。相较于现有技术中,由上位机进行地址转换的方式,由于本发明实施例中通过单片机依据对应的地址转换策略进行地址转换,使得上位机具有较高的通用性,能够适用于多种不同芯片类型的单片机,解决了现有技术中,上位机的通用性较差的技术问题。

为了清楚说明上一实施例,本实施例提供了另一种单片机烧写方法,图2为本发明实施例提供的另一种单片机烧写方法的流程示意图。

如图2所示,该单片机烧写方法可以包括以下步骤:

步骤201,单片机获取上位机所编译的文件。

其中,文件包括第一地址,以及第一地址对应的数据。

在一种可能的应用场景中,文件中的第一地址可能为多个,分别需要从不同的多个第一地址位置,对数据进行烧写。

步骤202,单片机根据预设的地址转换策略,对当前的第一地址,进行地址转换,得到单片机的第二地址。

具体地,不同芯片类型的单片机,所预设的地址转换策略可能是不同的,各单片机,根据各自所预设的地址转换策略,对文件中所涉及的第一地址,进行文件的逻辑地址和单片机的物理地址之间的转换,另外,还可以对文件中所涉及的第一地址,进行文件的不含缓存地址和单片机的含缓存地址之间的转换,得到单片机的第二地址。

例如:hex文件中,第一地址位置为0xc000,文件中对应30个字节的代码需要烧写。在单片机中,依据预设的地址转换策略,将第一地址转换为第二地址0x8000,从而单片机的flash驱动从第二地址0x8000开始,对这30个字节的代码进行烧写。

步骤203,单片机读取文件中第一地址对应的数据,判断本次读取数据的数据量是否满足单片机单次烧写的数据量,若是,则执行步骤204,否则执行步骤207。

具体地,单片机的flash驱动单次烧写的数据量有限,因此,需要对文件中第一地址对应的数据分多次进行烧写,相应的,在每一次烧写之前,单片机读取一定量的数据,具体来说,单片机每一次读取的数据量应当为flash驱动单次烧写的数据量,以满足本次烧写的需求。

当然,在剩余数据不足时,存在读取的数据量小于flash驱动单次烧写的数据量的情况,则需要对读取数据进行填充,以使其等于flash驱动单次烧写的数据量。

步骤204,当本次读取数据的数据量等于单片机单次烧写的数据量时,从第二地址位置开始,对本次读取的数据进行烧写。

具体地,当本次读取数据的数据量等于单片机单次烧写的数据量时,无需对数据进行填充,可以直接执行烧写的步骤。在进行本次烧写时,需要从第二地址位置开始,顺序写入所读取数据,并将烧写指针从第二地址位置偏移至本次烧写的结束位置。

步骤205,判断烧写是否结束,若烧写结束,结束本流程,若烧写未结束,执行步骤206。

在一种可能的应用场景中,在对单片机进行烧写时,整个烧写过程涉及单片机的多个第二地址,可能会分多次进行烧写。

在另一种可能的应用场景中,从某一个第二地址位置开始,需要烧写的数据较多,也可能会分多次进行烧写。

基于以上这两种情况,在每一次烧写之后,需要确定整个烧写过程是否结束。

步骤206,是否将当前的第一地址更新为文件中的下一个第一地址,若是,则执行步骤202,否则执行步骤203。

具体地,若整个烧写过程未结束,存在两种情况:

一种情况下,文件的第一地址位置已烧写完成,需要对文件中下一个第一地址位置进行烧写,并对应更新当前的第二地址,以从下一个第二地址位置开始,进行下一次的烧写。

另一种情况下,文件的第一地址位置未烧写完成,需要继续针对当前的第一地址进行烧写,而无需对文件中下一个第一地址位置进行烧写。

当出现前一种情况时,需要首先进行地址转换,再执行烧写步骤。而出现后一种情况时,则可以直接执行烧写步骤。

步骤207,判断是否需要进行填充,若是,执行步骤208,否则执行步骤209。

具体地,当本次读取数据的数据量小于单片机单次烧写的数据量时,存在两种情况,一种情况是上位机编译的文件已发送完毕,且在多次烧写之后,本次需要烧写的数据量不足;另一种情况是,上位机编译的文件还未发送完毕,导致本次需要烧写的数据量不足。

针对第一种情况,需要进行填充,而针对第二种情况,只需要等待即可。

步骤208,对本次读取数据进行填充,然后执行步骤204。

具体地,当本次读取数据的数据量小于所述单片机单次烧写的数据量时,对本次读取数据进行填充,以使填充后数据的数据量等于所述单片机单次烧写的数据量。

例如:有30个字节的代码需要烧写,单片机单次烧写的数据量为8个字节,也就是说,作为下位机的单片机,flash驱动需要一次写入8个字节的代码,计算可知30%8=6,最后一次烧写时,有6个字节需进行烧写,这样情况下需要填充2个字节,加上这6个字节,凑齐8个字节进行最后一次烧写。

步骤209,等待接收文件中的数据,然后执行步骤204。

本实施例中,通过获取上位机所编译的文件,根据单片机对应的地址转换策略,对文件中所涉及的第一地址,进行地址转换,得到单片机的第二地址,进入依据单片机单次烧写的数据量,在第一地址转换得到的第二地址位置,对文件中第一地址对应的数据进行烧写。相较于现有技术中,由上位机进行地址转换的方式,由于本发明实施例中通过单片机依据对应的地址转换策略进行地址转换,使得上位机具有较高的通用性,能够适用于多种不同芯片类型的单片机,解决了现有技术中,上位机的通用性较差的技术问题。

作为一种可能的应用场景,前述实施例的单片机烧写方法所涉及的单片机,可以应用于车辆的整车控制器,和/或车辆的电子控制单元中。其中,这里的车辆包括了电动汽车、燃油汽车和/或混合动力汽车。

例如:在应用于电动汽车的电子控制单元时,单片机具体可以应用于电机控制电子控制单元、电池控制电子控制单元等等。

为了实现上述实施例,本发明还提出一种单片机烧写装置。

图3为本发明实施例提供的一种单片机烧写装置的结构示意图。

如图3所示,该单片机烧写装置包括:获取模块31、转换模块32和烧写模块33。

获取模块31,用于获取上位机所编译的文件。

其中,该文件包括第一地址,以及第一地址对应的数据。

转换模块32,用于根据单片机对应的地址转换策略,对文件中所涉及的第一地址,进行地址转换,得到单片机的第二地址。

具体地,转换模块32,具体用于:根据所述单片机对应的地址转换策略,对所述文件中所涉及的第一地址,进行文件的逻辑地址和单片机的物理地址之间的转换,得到所述单片机的第二地址;和/或,根据所述单片机对应的地址转换策略,对所述文件中所涉及的第一地址,进行文件的不含缓存地址和单片机的含缓存地址之间的转换,得到所述单片机的第二地址。

烧写模块33,用于依据单片机单次烧写的数据量,在第一地址转换得到的第二地址位置,对该文件中第一地址对应的数据进行烧写。

本实施例中,通过获取上位机所编译的文件之后,根据单片机对应的地址转换策略,对文件中所涉及的第一地址,进行地址转换,得到单片机的第二地址,进入依据单片机单次烧写的数据量,在第一地址转换得到的第二地址位置,对文件中第一地址对应的数据进行烧写。相较于现有技术中,由上位机进行地址转换的方式,由于本发明实施例中通过单片机依据对应的地址转换策略进行地址转换,使得上位机具有较高的通用性,能够适用于多种不同芯片类型的单片机,解决了现有技术中上位机的通用性较差的技术问题。

为了清楚说明上一实施例所提供的单片机烧写装置,本实施例中进一步提供了另一种单片机烧写装置,图4为本发明实施例提供的另一种单片机烧写装置的结构示意图,在上一实施例的基础上,进一步地,烧写模块33,包括:读取单元331、填充单元332和烧写单元333。

读取单元331,用于依据单片机单次烧写的数据量,分次读取文件中第一地址对应的数据。

填充单元332,用于当本次读取数据的数据量小于所述单片机单次烧写的数据量时,对本次读取数据进行填充,以使填充后数据的数据量等于所述单片机单次烧写的数据量。

烧写单元333,用于从所述第二地址位置开始,对所述填充后数据进行烧写。

进一步,烧写单元333,还用于:

当本次读取数据的数据量等于所述单片机单次烧写的数据量时,从所述第二地址位置开始,对本次读取数据进行烧写。

需要说明的是,前述对方法实施例的解释说明也适用于该实施例的装置,此处不再赘述。

本发明实施例中,通过获取上位机所编译的文件之后,根据单片机对应的地址转换策略,对文件中所涉及的第一地址,进行地址转换,得到单片机的第二地址,进入依据单片机单次烧写的数据量,在第一地址转换得到的第二地址位置,对文件中第一地址对应的数据进行烧写。相较于现有技术中,由上位机进行地址转换的方式,由于本发明实施例中通过单片机依据对应的地址转换策略进行地址转换,使得上位机具有较高的通用性,能够适用于多种不同芯片类型的单片机,解决了现有技术中上位机的通用性较差的技术问题。

为了实现上述实施例,本发明还提出一种单片机,图5为本发明实施例提供的一种单片机的结构示意图,如图5所示,单片机包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序,以实现:

获取上位机的编译器所编译的文件;所述文件包括第一地址,以及所述第一地址对应的数据;根据所述单片机对应的地址转换策略,对所述文件中所涉及的第一地址,进行地址转换,得到所述单片机的第二地址;依据所述单片机单次烧写的数据量,在所述第一地址转换得到的第二地址位置,对所述文件中所述第一地址对应的数据进行烧写。

作为一种可能的应用场景,本实施例的单片机,可以应用于车辆的整车控制器,和/或车辆的电子控制单元中。其中,这里的车辆包括了电动汽车、燃油汽车和/或混合动力汽车。

例如:在应用于电动汽车的电子控制单元时,单片机具体可以应用于电机控制电子控制单元、电池控制电子控制单元等等。

基于此,本发明实施例还提供了一种单片机烧写系统,包括前述的单片机以及用于对待烧写的程序进行编译的上位机。

其中,单片机与上位机通过通信线缆连接。作为一种可能的实现方式,单片机与上位机之间,具体可以通过控制器局域网(controllerareanetwork,can)实现数据通信。

本发明实施例中,通过获取上位机所编译的文件之后,根据单片机对应的地址转换策略,对文件中所涉及的第一地址,进行地址转换,得到单片机的第二地址,进入依据单片机单次烧写的数据量,在第一地址转换得到的第二地址位置,对文件中第一地址对应的数据进行烧写。相较于现有技术中,由上位机进行地址转换的方式,由于本发明实施例中通过单片机依据对应的地址转换策略进行地址转换,使得上位机具有较高的通用性,能够适用于多种不同芯片类型的单片机,解决了现有技术中上位机的通用性较差的技术问题。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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