一种通过烧录文件储存配置数据的烧录方法与流程

文档序号:12886982阅读:663来源:国知局
一种通过烧录文件储存配置数据的烧录方法与流程

本发明属于芯片烧录技术领域,特别涉及一种烧录文件存储配置数据的方法。



背景技术:

芯片烧录是将用户程序和配置烧录到芯片的一种操作,烧录文件扮演了重要的角色,因为用户程序必须通过烧录文件中获取,烧录文件是一种存储用户程序的文件,由编译器生成,烧录器解释并烧录。烧录文件目前的格式有多种,一般有bin格式,hex格式,工程文件格式。bin文件是二进制格式,hex格式是文本格式,工程文件是一种多文件的格式,每个文件有不同的需求。本发明提出的一种简单且易扩展的烧录文件是基于bin文件的一种存储文件。

配置数据是一种芯片烧录需要的配置数据,常常通过烧录器上位机可以修改这些配置值,也可以把这些配置值写入烧录文件中保存,烧录时解释烧录文件,得到用户程序和配置数据,从而进行烧录。

bin文件是一种二进制文件,bin格式的烧录文件主要存储用户程序数据。bin文件的好处是解释方便,烧录时烧录器上位机解释该文件非常高效,直接获取并发送至烧录设备中。

目前市场上大多的烧录文件不包含配置数据,必须通过烧录器上位机配置后才能进行烧录,这种方式的缺点是芯片烧录时需要通过上位机配置,操作麻烦且容易配置错误,配置错误就会出现生产事故。目前也有烧录文件含有配置数据,但这种存储格式不灵活,且不易扩展,常常是定长的配置格式,假如配置格式变化,就无法兼容以前的烧录文件。

如专利申请201610149264.2公开了一种cmos芯片快速i2c配置/烧录方法,其包括以下步骤:将每个摄像产品的色彩均匀性/亮度均匀性较正至5%范围内;pc将这些较正数据作为配置数据存贮入相应摄像产品的cmos芯片,或者是pc需要获取i2c数据,批量将i2c数据从sensor读取;fpga写入sensori2c的速率由pc配置,写入时钟由fpga分频获得,实现i2c写入速率0-5m的无级可调。本发明不但提升了i2c写入的速度,且拥有高精度的i2c延时,让i2c写入面向类似于像eeprom等需要超过1.7ms延时的时候,不但能节省时间,也提供高精度的延时方案,写入更加稳定,因使用pc的延时不精确而造成eeprom器件写入数据错误等问题得以解决,该申请虽然能够解决延时问题,但是仍然存在上述的烧录文件配置数据存储格式不灵活、不易扩展的问题。



技术实现要素:

基于此,因此本发明的首要目地是提供一种通过烧录文件储存配置数据的烧录方法,该方法通过烧录文件定义了配置数据的存储方法,该存储后的文件格式非常易于扩展,能适应于配置数据格式的变化和配置数据类型的增加,避免了烧录配置错误的情况。

本发明的另一个目地在于提供一种通过烧录文件储存配置数据的烧录方法,该方法定义和规范一种烧录文件存储配置数据的格式,解决了通过烧录器上位机解释烧录文件并获取用户程序数据和配置数据,并发下给烧录器硬件烧录的技术问题。

为实现上述目的,本发明的技术方案为:

一种通过烧录文件储存配置数据的烧录方法,该方法首先定义烧录文件储存配置数据的文件格式,烧录文件按照数据类型分区域保存,分为用户程序区、烧录文件信息区、配置数据区,然后将烧录文件转换为上述的文件格式,并通过上述的格式进行烧录。通过这种方式,能够解释简单易获取用户程序数据和配置数据,易扩展,能增加配置数据类型,能兼容以前的数据格式。

进一步,所述烧录文件信息区包括有:芯片名称、版本、信息区表头、信息区索引及信息区。

所述配置数据区根据配置信息的类型进行细分。配置数据的类型分为芯片描述,代码选项,用户选项,滚动码选项,程序校验码,加密配置等配置数据,每个类型设置一个类型标志。

配置数据会存储在烧录文件中,和用户程序数据一起保存,烧录时烧录器上位机解释该烧录文件获取上述数据并发给烧录设备进行烧录动作。

进一步,所述对每个配置数据的类型定义存储结构体,所述存储结构体包括有代码选项结构体、程序校验码结构体、用户选项结构体、滚动码选项结构体、加密配置结构体。

进一步,配置类型的存储结构体定义后,对配置数据区进行封装并提供索引,偏移地址,大小等。

更进一步,具体包括配置信息区表头、配置信息区索引,其中,

信息区表头用来描述该文件的特定标志,表头的文件偏移,表头大小,信息区个数;

信息区索引用来描述每个信息区的基本信息,如偏移,大小,类型,每个配置信息区都有一个自己的索引,主要解释时需要利用该索引找到该配置区的偏移并解释。

进一步,配置完成后,进行配置数据的写入,通常由烧录器上位机或ide将这些配置数据写入;由于配置信息区在用户程序区后面,所以首先要知道用户程序的后面的位置,从用户程序数据后面开始写。

更进一步,配置数据的写入,定义一个写信息区的函数,入口参数为信息区的标志,和该信息区的指针。

boolfilehandler::writefilecsbinmes(unsignedmes_type,lpvoidpcsbin_mes)

该函数实现以下功能:

1、判定该文件是否是cbin烧录文件,如果是,则继续,如果不是,则先转换为cbin文件。

2、调用parsefilecsbinmes函数获取本文件的已有的信息区。

3、查询传入的mes_type是否是已有的信息区,如果已有,则修改已有的内容,如果没有,则新建该类型空信息区。

4、通过传入的mes_type得到信息区的类型,然后转换pcsbin_mes为相应的信息区指针。

5、修改该信息区。

更进一步,并定义一个初始化烧录文件的函数,写信息区之前需要初始化该烧录文件,入口参数为文件名,和芯片属性结构体。

boolfilehandler::initialize(lpctstrlpfilename,s_bodypropertiessbodyproperties)

该函数实现初始化文件读取该文件数据功能。

上位机打开烧录文件后开始解释,解释时,定义一个读信息区函数,定义入口参数为信息区类型标志,返回该信息区指针。

lpvoidfilehandler::getfilecsbinmes(unsignedtype)

该函数实现以下功能:

1、判定是否是cbin格式,如果不是,则退出,如果是,则继续。

2、调用parsefilecsbinmes函数获取本文件的已有的信息区。

3、查询获取所有的信息区,如果是已有类型则返回所需要类型的信息区指针,反之返回空。

其中,parsefilecsbinmes函数用于获取已有的信息区。主要实现以下功能:

1、查找配置信息区表头的偏移地址。

2、判定该文件是否是cbin文件,如果是,则继续,如果不是,则退出。通过mes_head_ident可以判定是否cbin文件。

3、读取信息区表头,获取信息区个数。

4、通过信息区个数循环读取信息区索引。

5、编写信息区索引获取各个信息区的数据,并实例化结构体指针,并保存。

本发明所实现的方法,通过烧录文件定义了配置数据的存储方法,该存储后的文件格式非常易于扩展,能适应于配置数据格式的变化和配置数据类型的增加。该文件格式解释方便,含有配置数据的烧录文件不用烧录时再次配置这些配置选项,直接烧录即可,省去了用户自行配置的步骤,在开发商和烧录方不是同一方时,这种方法避免了烧录配置错误的情况,由于该文件含有配置数据,所以烧录文件可以任意发放,烧录方可以不用自动配置。

附图说明

图1是本发明所实施烧录文件格式的示意图。

图2是本发明所实施信息区表头的结构示意图。

图3是本发明所实施配置数据的写入流程图。

图4是本发明所实施配置数据的解释流程图。

图5是本发明所实施parsefilecsbinmes函数的获取流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明所实现的通过烧录文件储存配置数据的烧录方法,该方法首先定义烧录文件储存配置数据的文件格式,烧录文件按照数据类型分区域保存,分为用户程序区、烧录文件信息区、配置数据区,然后将烧录文件转换为上述的文件格式,并通过上述的格式进行烧录。通过这种方式,能够解释简单易获取用户程序数据和配置数据,易扩展,能增加配置数据类型,能兼容以前的数据格式。

所述配置数据区根据配置信息的类型进行细分。目前配置信息的类型分为芯片描述,代码选项,用户选项,滚动码选项,程序校验码,加密配置等配置数据,每个类型设置一个类型标志。

配置数据是烧录芯片时除用户程序数据外必不可少的数据。配置数据的生成一般通过烧录器上位机配置生成,也可以通过ide配置生成。

配置数据有些会存储在烧录文件中,和用户程序数据一起保存,烧录时烧录器上位机解释该烧录文件获取上述数据并发给烧录设备进行烧录动作。

配置数据有些没有存储在烧录文件中,烧录文件只包含用户程序数据,烧录时烧录器上位机解释该烧录文件只能获取用户程序数据,而配置数据需通过烧录器上位机的配置对话框配置并发给烧录设备进行烧录动作。

目前配置信息的类型分为芯片描述,代码选项,用户选项,滚动码选项,程序校验码,加密配置等配置数据。每个类型设置一个类型标志。如:

并对每个类型定义存储结构体。如:

配置类型的结构体定义后,需要对配置数据区进行封装并提供索引,偏移地址,大小等。

具体包括配置信息区表头、配置信息区索引,其中,

信息区表头用来描述该文件的特定标志,表头的文件偏移,表头大小,信息区个数。

信息区索引用来描述每个信息区的基本信息,如偏移,大小,类型,每个配置信息区都有一个自己的索引,主要解释时需要利用该索引找到该配置区的偏移并解释。

配置完成后,进行配置数据的写入,通常由烧录器上位机或ide将这些配置数据写入;由于配置信息区在用户程序区后面,所以首先要知道用户程序的后面的位置,从用户程序数据后面开始写。

配置数据的写入,须定义一个写信息区的函数,入口参数为信息区的标志,和该信息区的指针。

boolfilehandler::writefilecsbinmes(unsignedmes_type,lpvoidpcsbin_mes)

该函数实现以下功能:

1、判定该文件是否是cbin烧录文件,如果是,则继续,如果不是,则先转换为cbin文件。

2、调用parsefilecsbinmes函数获取本文件的已有的信息区。

3、查询传入的mes_type是否是已有的信息区,如果已有,则修改已有的内容,如果没有,则新建该类型空信息区。

4、通过传入的mes_type得到信息区的类型,然后转换pcsbin_mes为相应的信息区指针。

5、修改该信息区。

并定义一个初始化烧录文件的函数,写信息区之前需要初始化该烧录文件,入口参数为文件名,和芯片属性结构体。

boolfilehandler::initialize(lpctstrlpfilename,s_bodypropertiessbodyproperties)

该函数实现初始化文件读取该文件数据功能。

上位机打开烧录文件后开始解释,解释时,定义一个读信息区函数,定义入口参数为信息区类型标志,返回该信息区指针。

lpvoidfilehandler::getfilecsbinmes(unsignedtype)

该函数实现以下功能:

1、判定是否是cbin格式,如果不是,则退出,如果是,则继续。

2、调用parsefilecsbinmes函数获取本文件的已有的信息区。

3、查询获取所有的信息区,如果是已有类型则返回所需要类型的信息区指针,反之返回空。

其中,parsefilecsbinmes函数用于获取已有的信息区。主要实现以下功能:

1、查找配置信息区表头的偏移地址。

2、判定该文件是否是cbin文件,如果是,则继续,如果不是,则退出。通过mes_head_ident可以判定是否cbin文件。

3、读取信息区表头,获取信息区个数。

4、通过信息区个数循环读取信息区索引。

5、编写信息区索引获取各个信息区的数据,并实例化结构体指针,并保存。

参见附图1所示,为本发明具体实现的烧录文件格式,其中cbin文件从文件开始分成以下几个部分:

1.用户程序区,大小为芯片空间的大小。

2.芯片名字信息区,占16字节。

3.文件版本信息区,占16字节。

4.信息区表头(cbin表头),长度固定。

5.信息区索引(cbin_index索引),长度随mes个数不定。

6.具体的信息区,依次往下布局。

其中,信息区表头为mes_head,如图2所示,其包括ident、offset、size、num几个部分;mes_head_ident表示该文件信息区表头的标志,占4个字节,固定为“cbin”字符串。mes_head_offset表示该信息表头的文件偏移,占4个字节。mes_head_size表示该信息表头的大小,占2个字节。mes_num表示信息区个数。

信息区索引为mes_info_index,其包括有type0、offset0、size0、type1、offset1、size1、……、typen、offsetn、sizen,其中,mes_type表示信息区的类型,占一个字节,目前有:

mes_type=0表示芯片描述信息区

mes_type=1表示代码选项信息区

mes_type=2表示checksum信息区;

mes_type=4表示用户选项信息区;

mes_type=5表示滚动码选项信息区;

mes_type=6表示加密配置信息区;

mes_offset该信息区的文件偏移,占4个字节。

mes_size该信息区的大小。

例如:芯片描述信息区:mes_chipdesctype0

对于配置数据的写入,需要按照存储格式来写入,且要先读出原有的信息区,再判定是否新建新的信息区,写入流程如图3所示:

101、首先初始化该烧录文件,读入到缓存中。

102、判断该文件是否是cbin格式的文件,可以根据信息区表头的mes_head_ident判断是否是cbin文件。如果是cbin文件,则正常执行,如果不是,则程序退出。

103、判定是cbin文件后下一步是解释该文件中已有的信息区,并读入缓存。

104、判定要写入的信息区是否已存在,已存在则修改该信息区,不存在则新建该类型的空的信息区。

105、新建一个该类型的空的信息区,用于后面填入信息。

106、将要写入想内容填入该信息区。

配置数据的解释也需要按照存储格式来解释,如图4所示,解释流程如下:

201、首先初始化该烧录文件,读入到缓存中。

202、判断该文件是否是cbin格式的文件,可以根据信息区表头的mes_head_ident判断是否是cbin文件。如果是cbin文件,则正常执行,如果不是,则程序退出。

203、解释本文件中所有的信息区,便于查找需要查找的信息区。

204、判定需要查找的信息区本文件中是否存在,如已存在,返回该类型的信息区指针,如果不存在,返回空指针。

205、返回指定查找的信息区指针。

206、如果信息区不存在,返回空指针。

配置数据的解释和写入流程都用到了本文件所有信息区的获取,即parsefilecsbinmes函数。该函数获取流程如图5所示:

301、首先查找到该信息区的表头偏移,查找方法是先查找cin标志,cbin标志所在的偏移就是表头的偏移,最后再判断用户程序区的大小刚好是该型号的用户程序区的大小,则判定该文件为cin文件。

302、判断该文件是否是cbin格式的文件,可以根据信息区表头的mes_head_ident判断是否是cbin文件。如果是cbin文件,则正常执行,如果不是,则程序退出。

303、判定是cbin文件后下一步是读取信息区表头。读出所有信息区的个数。

304、根据信息区的个数,循序遍历各个信息区,获取各个信息区的大小,所在的偏移地址和类型。

305、根据信息区的地址,所在的偏移地址和类型获取信息区具体的数据并转换为该类型的数据结构体指针,并保存在缓存。

本发明所实现的方法,通过烧录文件定义了配置数据的存储方法,该存储后的文件格式非常易于扩展,能适应于配置数据格式的变化和配置数据类型的增加。该文件格式解释方便,含有配置数据的烧录文件不用烧录时再次配置这些配置选项,直接烧录即可,省去了用户自行配置的步骤,在开发商和烧录方不是同一方时,这种方法避免了烧录配置错误的情况,由于该文件含有配置数据,所以烧录文件可以任意发放,烧录方可以不用自动配置。

总之,本发明改善了烧录文件没有配置数据需要上位机配置的问题,改善了烧录文件格式难维护,难扩展,不兼容的问题。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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