基于配置表的程序固化方法

文档序号:6493698阅读:234来源:国知局
基于配置表的程序固化方法
【专利摘要】本发明涉及一种基于配置表的程序固化方法,包括以下步骤:1、加载端生成文件固化配置表,并准备固化文件包;2、加载端和被加载端建立连接:3、加载端获取加载固化信息:4、加载待固化文件;5、被加载端逐一接收加载数据包:6、被加载端根据文件加载信息表调用写Flash存储器驱动程序将待固化文件逐一固化进Flash存储器中。本发明针对很多项目需要固化的文件数量多,目标机Flash存储器固化地址分布杂乱,单个文件逐一固化,操作起来繁琐且容易出错的技术问题,能够自动、快速、批量地将这些待固化文件从加载端加载到被加载端进行固化,整个固化过程高度自动化,很大程度地减少了人工操作,提高程序固化效率和成功率。
【专利说明】基于配置表的程序固化方法
【技术领域】
[0001]本发明涉及一种基于配置表的程序固化方法。
【背景技术】
[0002]嵌入式软件开发调试完毕后,需要通过固化软件将其固化到目标机的Flash存储器中。传统的固化软件是以待固化文件为操作对象,只支持单个文件逐一加载固化,用户须手动选择待固化文件并输入固化地址,一个文件固化完毕再固化第二个文件,依次固化。这种以待固化文件为操作对象的方式,虽然也能达到固化的目的,但当需要固化的文件很多时,这种方法就显得特别费时费力,整个过程对人工的依赖性强,操作步骤重复性高、人工需要手动输入每个固化文件的固化地址容易出错。因此,针对多个文件固化,本发明提供一种简便高效的程序固化方法,具有十分重要的现实意义。

【发明内容】

[0003]针对很多项目需要固化的文件数量多,目标机Flash存储器固化地址分布杂乱,单个文件逐一固化,操作起来繁琐且容易出错的技术问题,本发明提供一种基于配置表的程序固化方法。
[0004]本发明的技术解决方案:
[0005]基于配置表的程序固化方法,其特殊之处在于:包括以下步骤:
[0006]I】加载端生成文件固化配置表,并准备固化文件包;
[0007]1.1】根据所有待固化文件的信息生成文件固化配置表,所述文件固化配置表包含每个待固化文件的ID、每个待固化文件名称、每个待固化文件大小及每个待固化文件对应的Flash存储器固化地址,待固化文件的ID从O开始依次排序;
[0008]1.2】汇总所有待固化文件并与文件固化配置表关联,形成固化文件包;
[0009]2】加载端和被加载端建立连接:
[0010]3】加载端获取加载固化信息:
[0011]加载端通过读取、分析文件固化配置表,提取出各个待固化文件的ID号、各个待固化文件名称、各个待固化文件大小及各个待固化文件对应的Flash存储器固化地址;加载端从待固化文件中提取出来的有效数据;
[0012]4】加载待固化文件:
[0013]4.1】参数准备:
[0014]通过从文件固化配置表中提取的待固化文件大小计算出待固化的总块数;
[0015]根据文件的总块数将对应待固化文件成多个数据块,并对多个数据块依次编号成为块号;
[0016]加载端针对每个待 固化文件中的有效数据计算得出校验码;
[0017]4.2]生成加载数据包:
[0018]将一个待固化文件ID号、一个待固化文件大小、一个Flash存储器固化地址、一个待固化文件的总块数、每个数据块的块号、一个数据块的有效数据以及校验码组合生成加载数据包;
[0019]所生成的加载数据包的数量与所有待固化文件的总块数的总和相等;
[0020]4.3】加载端发送多个加载数据包给被加载端;
[0021]5】被加载端逐一接收加载数据包:
[0022]5.1】被加载端接收第一个加载数据包,根据接收到的第一个加载数据包中文件总块数为第一个待固化文件申请相应内存空间,取得第一个待固化文件内存空间的起始地址;
[0023] 将第一个加载数据包中的有效数据存储到当前块号所对应的内存空间中;
[0024]被加载端的文件加载器将待固化文件ID、内存空间起始地址写入到文件加载信息表中;
[0025]5.2】继续接收加载数据包,判断当前所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID是否一致:
[0026]如所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID 一致,则属于上一个待固化文件的加载数据包,将所接收到的当前加载数据包中包含的有效数据存储到当前块号所对应的内存空间中;
[0027]如所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID不一致,则属于下一个待固化文件的加载数据包,根据接收到的当前加载数据包中文件总块数为当前待固化文件申请相应内存空间,取得当前待固化文件内存空间的起始地址;
[0028]将当前加载数据包中的有效数据存储到当前块号所对应内存空间中;
[0029]被加载端的文件加载器将待固化文件的ID、内存空间起始地址写入到文件加载信息表中;
[0030]同时将累计得到的上一个待固化文件的有效数据总长度写入到文件加载信息表的相应位置;
[0031]5.3】回到步骤5.2】,直至被加载端接收不到加载数据包;
[0032]5.4】向加载端返回加载命令响应包;
[0033]5.5】加载端发送烧写数据包:
[0034]5.5.1】加载端向被加载端发送多个烧写数据包,所述烧写数据包中包含待固化文件ID以及相应的Flash存储器固化地址;
[0035]5.5.2】被加载端接收到所有烧写数据包后,根据各个烧写数据包中待固化文件ID将其对应的Flash存储器固化地址添加到文件加载信息表中;
[0036]6】被加载端根据文件加载信息表调用写Flash存储器驱动程序将待固化文件逐一固化进Flash存储器中。
[0037]在步骤6】之后还包括校验步骤:
[0038]将已经固化在Flash存储器中的固化文件的内容与内存空间中的待固化文件内容逐一进行比对,并将比对结果返回给加载端。
[0039]还包括将有效数据存储到内存空间之前进行有效数据校验步骤:
[0040]被加载端根据有效数据计算一个比对校验码,将比对校验码与加载数据包中的对应校验码进行比较,如果一致,则存储有效数据;如果不一致,则向加载端返回错误提示。[0041]上述加载端和被加载端通过以太网、串口或AFDX总线连接。
[0042]本发明所具有的优点:
[0043]1、 本发明以配置表为操作对象,通过读取、分析配置表中的信息,智能地提取所有待固化文件的名称和对应的固化地址,自动、快速、批量地将这些待固化文件从加载端加载到被加载端进行固化,整个固化过程高度自动化,很大程度地减少了人工操作,减轻了操作人员的负担,有效地避免人工选择待固化文件和手动输入固化地址可能出现的失误,提高程序固化效率和成功率。
[0044]2、本发明增加了校验步骤,保证了加载过程安全可靠,确定性强。
[0045]3、本发明能简化程序固化步骤,有效地避免了此前固化多个文件时须单个逐一固化的繁琐,消除了人工操作失误的风险,具有较高的实用价值和经济效益。
【专利附图】

【附图说明】
[0046]图1为本发明基于配置表的程序固化流程图。
【具体实施方式】
[0047]基于配置表的程序固化方法实现,需要加载端(一般为PC机)和被加载端(一般为目标机)两部分程序协同工作。加载端为可执行程序,被加载端程序驻留在目标机Flash存储器中。
[0048]基于配置表的程序固化方法具体实施步骤如下:
[0049]步骤A:生成文件固化配置表,汇总待固化文件。
[0050]通过程序生成文件固化配置表,完成所有需要固化到Flash存储器中的文件的信息描述。文件固化配置表中包含了待固化文件的ID、名称、大小及其对应的Flash存储器固化地址等信息。如 “DomainI(1=^0’^NameRef=^boot ”SiZe=aOxoOOOaOOO’Tay1adAddress=^ OxFFF0000””。多个文件的ID从O开始依次递增。
[0051]步骤B:加载端和被加载端建立连接。
[0052]加载端和被加载端可通过各种渠道(以太网、串口、AFDX总线等)建立连接,为文件加载提供传输通道。
[0053]步骤C:获取加载固化信息:加载端通过读取、分析配置表,提取出每个待固化文件的ID号(从O开始递增)、名称、大小及其固化到Flash存储器上的地址。
[0054]步骤D:加载待固化文件。
[0055]Dl加载端获取加载固化信息:
[0056]加载端通过读取、分析文件固化配置表,提取出各个待固化文件的ID号、各个待固化文件名称、各个待固化文件大小及各个待固化文件对应的Flash存储器固化地址;加载端从待固化文件中提取出来的有效数据;
[0057]D2加载待固化文件:
[0058]D21参数准备:
[0059]通过从文件固化配置表中提取的待固化文件大小计算出待固化的总块数,
[0060]根据文件的总块数将对应待固化文件成多个数据块,并对多个数据块依次编号成为块号;[0061]针对每个待固化文件中的有效数据计算得出校验码;
[0062]D22生成加载数据包:
[0063]将一个待固化文件ID号、一个待固化文件大小、一个Flash存储器固化地址、一个待固化文件的总块数、每个数据块的块号、一个数据块的有效数据以及校验码组合生成加载数据包;
[0064]所生成的加载数据包的数量与所有待固化文件的总块数总和相等;
[0065]D23加载端发送多个加载数据包给被加载端;
[0066]D3被加载端逐一接收加载数据包:
[0067]D31被加载端接收第一个加载数据包,根据接收到的第一个加载数据包中文件总块数为第一个待固化文件申请相应内存空间,取得第一个待固化文件内存空间的起始地址;
[0068]将第一个加载数据包中的有效数据存储到当前块号所对应的内存空间中;
[0069]被加载端的文件加载器将待固化文件ID、内存空间起始地址写入到文件加载信息表中;
[0070]D32继续接收加载数据包,判断当前所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID是否一致:
[0071]如所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID 一致,则属于上一个待固化文件的加载数据包,将所接收到的当前加载数据包中包含的有效数据存储到当前块号所对应的内存空间中;
[0072]如所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID不一致,则属于下一个待固化文件的加载数据包,根据接收到的当前加载数据包中文件总块数为当前待固化文件申请相应内存空间,取得当前待固化文件内存空间的起始地址;
[0073]将当前加载数据包中的有效数据存储到当前块号所对应内存空间中;
[0074]被加载端的文件加载器将待固化文件的ID、内存空间起始地址写入到文件加载信息表中;
[0075]同时将累计得到的上一个待固化文件的有效数据总长度写入到文件加载信息表的相应位置;
[0076]D33回到步骤D32,直至被加载端接收不到加载数据包;
[0077]D34向加载端返回加载命令响应包;
[0078]步骤E:加载端发送烧写数据包:
[0079]加载端向被加载端发送多个烧写数据包,所述烧写数据包中包含待固化文件ID以及相应的Flash存储器固化地址;
[0080]被加载端接收到所有烧写数据包后,根据各个烧写数据包中待固化文件ID将其对应的Flash存储器固化地址添加到文件加载信息表中;
[0081]被加载端根据待固化文件ID,从文件加载信息表中提取出待固化文件的内存存储首地址和文件长度,调用Flash存储器写数据驱动,将待固化文件写入Flash存储器指定地址,写入完毕后对该待固化文件在内存和Flash存储器中的两处有效数据进行一致性校验,如果完全一致,则烧写成功,否则,烧写失败。然后继续烧写下一个待固化文件。当被加载端将所有的待固化文件都一一烧写完毕后,固化完成。
【权利要求】
1.基于配置表的程序固化方法,其特征在于:包括以下步骤: . 1】加载端生成文件固化配置表,并准备固化文件包: .1.1】根据所有待固化文件的信息生成文件固化配置表,所述文件固化配置表包含每个待固化文件的ID、每个待固化文件名称、每个待固化文件大小及每个待固化文件对应的Flash存储器固化地址,待固化文件的ID从O开始依次排序; . 1.2】汇总所有待固化文件并与文件固化配置表关联,形成固化文件包; . 2】加载端和被加载端建立连接; . 3】加载端获取加载固化信息: 加载端通过读取、分析文件固化配置表,提取出各个待固化文件的ID号、各个待固化文件名称、各个待固化文件大小及各个待固化文件对应的Flash存储器固化地址;加载端从待固化文件中提取有效数据; . 4】加载待固化文件: .4.1】参数准备: 通过从文件固化配置表中提取的待固化文件大小计算出待固化的总块数, 根据文件的总块数将对应待固化文件分成多个数据块,并用块号对多个数据块依次编号; 加载端针对每个待固化文件中的有效数据计算得出校验码; .4.2】生成加载数据包: 将一个待固化文件ID号、一个待固化文件大小、一个Flash存储器固化地址、一个待固化文件的总块数、每个数据块的块号、相应块号的数据块的有效数据以及校验码组合生成加载数据包; 所生成的加载数据包的数量与所有待固化文件的总块数相等; .4.3】加载端发送多个加载数据包给被加载端; .5】被加载端逐一接收加载数据包: .5.1】被加载端接收第一个加载数据包,根据接收到的第一个加载数据包中文件总块数申请第一个待固化文件相应的内存空间,取得第一个待固化文件内存空间的起始地址; 将第一个加载数据包中的有效数据存储到当前块号所对应的内存空间中; 被加载端的文件加载器将待固化文件ID、内存空间起始地址写入到文件加载信息表中; .5.2】继续接收加载数据包,判断当前所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID是否一致: 如所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID —致,则属于上一个待固化文件的加载数据包,将所接收到的当前加载数据包中包含的有效数据存储到当前块号所对应的内存空间中; 如所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID不一致,则属于下一个待固化文件的加载数据包,根据接收到的当前加载数据包中文件总块数申请当前待固化文件相应的内存空间,取得当前待固化文件内存空间的起始地址,将当前加载数据包中的有效 数据存储到当前块号所对应内存空间中;被加载端的文件加载器将待固化文件的ID、内存空间起始地址写入到文件加载信息表中;同时将累计得到的上一个待固化文件的有效数据总长度写入到文件加载信息表的相应位置; .5.3】回到步骤5.2】,直至被加载端接收不到加载数据包; . 5.4】向加载端返回加载命令响应包; .5.5】加载端发送烧写数据包: .5.5.1】加载端向被加载端发送多个烧写数据包,所述烧写数据包中包含待固化文件ID以及相应的Flash存储器固化地址; . 5.5.2】被加载端接收到所有烧写数据包后,根据各个烧写数据包中待固化文件ID将其对应的Flash存储器固化地址添加到文件加载信息表中; . 6】被加载端根据文件加载信息表调用写Flash存储器驱动程序将待固化文件逐一固化进Flash存储器中。
2.根据权利要求1所述的基于配置表的程序固化方法,其特征在于:在步骤6】之后还包括校验步骤: 将已经固化在Flash存储器中的固化文件的内容与内存空间中的待固化文件内容逐一进行比对,并将比对结果返回给加载端。
3.根据权利要求1或2所述的基于配置表的程序固化方法,其特征在于: 还包括将有效数据存储到内存空间之前进行有效数据校验步骤: 被加载端根据接收到的有效数据计算一个比对校验码,将比对校验码与加载数据包中的对应校验码进行比较,如果一致,则存储有效数据;如果不一致,则向加载端返回错误提示。
4.根据权利要求3所述的基于配置表的程序固化方法,其特征在于:所述加载端和被加载端通过以太网、串口或AFDX总线连接。
【文档编号】G06F9/445GK103902303SQ201210574663
【公开日】2014年7月2日 申请日期:2012年12月26日 优先权日:2012年12月26日
【发明者】陈福, 李运喜, 任晓瑞, 赵根学, 邸海涛, 钟珊, 张晓红, 李向东 申请人:中国航空工业集团公司第六三一研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1