CN103902303A - 基于配置表的程序固化方法 - Google Patents
基于配置表的程序固化方法 Download PDFInfo
- Publication number
- CN103902303A CN103902303A CN201210574663.5A CN201210574663A CN103902303A CN 103902303 A CN103902303 A CN 103902303A CN 201210574663 A CN201210574663 A CN 201210574663A CN 103902303 A CN103902303 A CN 103902303A
- Authority
- CN
- China
- Prior art keywords
- curing
- loading
- packet
- document
- curing document
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于配置表的程序固化方法,包括以下步骤:1、加载端生成文件固化配置表,并准备固化文件包;2、加载端和被加载端建立连接:3、加载端获取加载固化信息:4、加载待固化文件;5、被加载端逐一接收加载数据包:6、被加载端根据文件加载信息表调用写Flash存储器驱动程序将待固化文件逐一固化进Flash存储器中。本发明针对很多项目需要固化的文件数量多,目标机Flash存储器固化地址分布杂乱,单个文件逐一固化,操作起来繁琐且容易出错的技术问题,能够自动、快速、批量地将这些待固化文件从加载端加载到被加载端进行固化,整个固化过程高度自动化,很大程度地减少了人工操作,提高程序固化效率和成功率。
Description
技术领域
本发明涉及一种基于配置表的程序固化方法。
背景技术
嵌入式软件开发调试完毕后,需要通过固化软件将其固化到目标机的Flash存储器中。传统的固化软件是以待固化文件为操作对象,只支持单个文件逐一加载固化,用户须手动选择待固化文件并输入固化地址,一个文件固化完毕再固化第二个文件,依次固化。这种以待固化文件为操作对象的方式,虽然也能达到固化的目的,但当需要固化的文件很多时,这种方法就显得特别费时费力,整个过程对人工的依赖性强,操作步骤重复性高、人工需要手动输入每个固化文件的固化地址容易出错。因此,针对多个文件固化,本发明提供一种简便高效的程序固化方法,具有十分重要的现实意义。
发明内容
针对很多项目需要固化的文件数量多,目标机Flash存储器固化地址分布杂乱,单个文件逐一固化,操作起来繁琐且容易出错的技术问题,本发明提供一种基于配置表的程序固化方法。
本发明的技术解决方案:
基于配置表的程序固化方法,其特殊之处在于:包括以下步骤:
1】加载端生成文件固化配置表,并准备固化文件包;
1.1】根据所有待固化文件的信息生成文件固化配置表,所述文件固化配置表包含每个待固化文件的ID、每个待固化文件名称、每个待固化文件大小及每个待固化文件对应的Flash存储器固化地址,待固化文件的ID从0开始依次排序;
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存储器中。
在步骤6】之后还包括校验步骤:
将已经固化在Flash存储器中的固化文件的内容与内存空间中的待固化文件内容逐一进行比对,并将比对结果返回给加载端。
还包括将有效数据存储到内存空间之前进行有效数据校验步骤:
被加载端根据有效数据计算一个比对校验码,将比对校验码与加载数据包中的对应校验码进行比较,如果一致,则存储有效数据;如果不一致,则向加载端返回错误提示。
上述加载端和被加载端通过以太网、串口或AFDX总线连接。
本发明所具有的优点:
1、本发明以配置表为操作对象,通过读取、分析配置表中的信息,智能地提取所有待固化文件的名称和对应的固化地址,自动、快速、批量地将这些待固化文件从加载端加载到被加载端进行固化,整个固化过程高度自动化,很大程度地减少了人工操作,减轻了操作人员的负担,有效地避免人工选择待固化文件和手动输入固化地址可能出现的失误,提高程序固化效率和成功率。
2、本发明增加了校验步骤,保证了加载过程安全可靠,确定性强。
3、本发明能简化程序固化步骤,有效地避免了此前固化多个文件时须单个逐一固化的繁琐,消除了人工操作失误的风险,具有较高的实用价值和经济效益。
附图说明
图1为本发明基于配置表的程序固化流程图。
具体实施方式
基于配置表的程序固化方法实现,需要加载端(一般为PC机)和被加载端(一般为目标机)两部分程序协同工作。加载端为可执行程序,被加载端程序驻留在目标机Flash存储器中。
基于配置表的程序固化方法具体实施步骤如下:
步骤A:生成文件固化配置表,汇总待固化文件。
通过程序生成文件固化配置表,完成所有需要固化到Flash存储器中的文件的信息描述。文件固化配置表中包含了待固化文件的ID、名称、大小及其对应的Flash存储器固化地址等信息。如“DomainId=“0”NameRef=“boot”Size=“0x0000a000”PayloadAddress=“0xFFF0000””。多个文件的ID从0开始依次递增。
步骤B:加载端和被加载端建立连接。
加载端和被加载端可通过各种渠道(以太网、串口、AFDX总线等)建立连接,为文件加载提供传输通道。
步骤C:获取加载固化信息:加载端通过读取、分析配置表,提取出每个待固化文件的ID号(从0开始递增)、名称、大小及其固化到Flash存储器上的地址。
步骤D:加载待固化文件。
D1加载端获取加载固化信息:
加载端通过读取、分析文件固化配置表,提取出各个待固化文件的ID号、各个待固化文件名称、各个待固化文件大小及各个待固化文件对应的Flash存储器固化地址;加载端从待固化文件中提取出来的有效数据;
D2加载待固化文件:
D21参数准备:
通过从文件固化配置表中提取的待固化文件大小计算出待固化的总块数,
根据文件的总块数将对应待固化文件成多个数据块,并对多个数据块依次编号成为块号;
针对每个待固化文件中的有效数据计算得出校验码;
D22生成加载数据包:
将一个待固化文件ID号、一个待固化文件大小、一个Flash存储器固化地址、一个待固化文件的总块数、每个数据块的块号、一个数据块的有效数据以及校验码组合生成加载数据包;
所生成的加载数据包的数量与所有待固化文件的总块数总和相等;
D23加载端发送多个加载数据包给被加载端;
D3被加载端逐一接收加载数据包:
D31被加载端接收第一个加载数据包,根据接收到的第一个加载数据包中文件总块数为第一个待固化文件申请相应内存空间,取得第一个待固化文件内存空间的起始地址;
将第一个加载数据包中的有效数据存储到当前块号所对应的内存空间中;
被加载端的文件加载器将待固化文件ID、内存空间起始地址写入到文件加载信息表中;
D32继续接收加载数据包,判断当前所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID是否一致:
如所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID一致,则属于上一个待固化文件的加载数据包,将所接收到的当前加载数据包中包含的有效数据存储到当前块号所对应的内存空间中;
如所接收到的加载数据包中待固化文件ID与上一个加载数据包中的待固化文件ID不一致,则属于下一个待固化文件的加载数据包,根据接收到的当前加载数据包中文件总块数为当前待固化文件申请相应内存空间,取得当前待固化文件内存空间的起始地址;
将当前加载数据包中的有效数据存储到当前块号所对应内存空间中;
被加载端的文件加载器将待固化文件的ID、内存空间起始地址写入到文件加载信息表中;
同时将累计得到的上一个待固化文件的有效数据总长度写入到文件加载信息表的相应位置;
D33回到步骤D32,直至被加载端接收不到加载数据包;
D34向加载端返回加载命令响应包;
步骤E:加载端发送烧写数据包:
加载端向被加载端发送多个烧写数据包,所述烧写数据包中包含待固化文件ID以及相应的Flash存储器固化地址;
被加载端接收到所有烧写数据包后,根据各个烧写数据包中待固化文件ID将其对应的Flash存储器固化地址添加到文件加载信息表中;
被加载端根据待固化文件ID,从文件加载信息表中提取出待固化文件的内存存储首地址和文件长度,调用Flash存储器写数据驱动,将待固化文件写入Flash存储器指定地址,写入完毕后对该待固化文件在内存和Flash存储器中的两处有效数据进行一致性校验,如果完全一致,则烧写成功,否则,烧写失败。然后继续烧写下一个待固化文件。当被加载端将所有的待固化文件都一一烧写完毕后,固化完成。
Claims (4)
1.基于配置表的程序固化方法,其特征在于:包括以下步骤:
1】加载端生成文件固化配置表,并准备固化文件包:
1.1】根据所有待固化文件的信息生成文件固化配置表,所述文件固化配置表包含每个待固化文件的ID、每个待固化文件名称、每个待固化文件大小及每个待固化文件对应的Flash存储器固化地址,待固化文件的ID从0开始依次排序;
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总线连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210574663.5A CN103902303A (zh) | 2012-12-26 | 2012-12-26 | 基于配置表的程序固化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210574663.5A CN103902303A (zh) | 2012-12-26 | 2012-12-26 | 基于配置表的程序固化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103902303A true CN103902303A (zh) | 2014-07-02 |
Family
ID=50993644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210574663.5A Pending CN103902303A (zh) | 2012-12-26 | 2012-12-26 | 基于配置表的程序固化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103902303A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224359A (zh) * | 2015-09-07 | 2016-01-06 | 西安诺瓦电子科技有限公司 | 程序加载方法 |
CN108170490A (zh) * | 2017-12-07 | 2018-06-15 | 中国航空工业集团公司西安航空计算技术研究所 | 一种ima系统数据加载架构及加载方法 |
CN108345772A (zh) * | 2018-01-26 | 2018-07-31 | 郑州云海信息技术有限公司 | 一种自动获取Code码在线校验的方法及系统 |
CN112558996A (zh) * | 2020-12-24 | 2021-03-26 | 中国航空工业集团公司西安航空计算技术研究所 | 一种自动化固化控制方法 |
CN114489831A (zh) * | 2021-12-29 | 2022-05-13 | 中国航空工业集团公司西安飞机设计研究所 | 一种可配置的机载软件批处理固化方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090125709A1 (en) * | 2007-11-14 | 2009-05-14 | Dell Products L.P. | System And Method For A Remote Information Handling System Boot |
CN101777077A (zh) * | 2010-02-26 | 2010-07-14 | 四川长虹电器股份有限公司 | 嵌入式设备文件系统实现方法 |
CN101807155A (zh) * | 2010-03-03 | 2010-08-18 | 京信通信系统(中国)有限公司 | 一种嵌入式软件在线更新方法 |
CN102609287A (zh) * | 2012-02-10 | 2012-07-25 | 株洲南车时代电气股份有限公司 | 一种通过cpu远程更新fpga的装置及其方法 |
CN102750175A (zh) * | 2012-07-10 | 2012-10-24 | 中国船舶重工集团公司第七二四研究所 | 基于Nand Flash多版本程序的FPGA加载技术 |
-
2012
- 2012-12-26 CN CN201210574663.5A patent/CN103902303A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090125709A1 (en) * | 2007-11-14 | 2009-05-14 | Dell Products L.P. | System And Method For A Remote Information Handling System Boot |
CN101777077A (zh) * | 2010-02-26 | 2010-07-14 | 四川长虹电器股份有限公司 | 嵌入式设备文件系统实现方法 |
CN101807155A (zh) * | 2010-03-03 | 2010-08-18 | 京信通信系统(中国)有限公司 | 一种嵌入式软件在线更新方法 |
CN102609287A (zh) * | 2012-02-10 | 2012-07-25 | 株洲南车时代电气股份有限公司 | 一种通过cpu远程更新fpga的装置及其方法 |
CN102750175A (zh) * | 2012-07-10 | 2012-10-24 | 中国船舶重工集团公司第七二四研究所 | 基于Nand Flash多版本程序的FPGA加载技术 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224359A (zh) * | 2015-09-07 | 2016-01-06 | 西安诺瓦电子科技有限公司 | 程序加载方法 |
CN105224359B (zh) * | 2015-09-07 | 2019-01-29 | 西安诺瓦电子科技有限公司 | 程序加载方法 |
CN108170490A (zh) * | 2017-12-07 | 2018-06-15 | 中国航空工业集团公司西安航空计算技术研究所 | 一种ima系统数据加载架构及加载方法 |
CN108345772A (zh) * | 2018-01-26 | 2018-07-31 | 郑州云海信息技术有限公司 | 一种自动获取Code码在线校验的方法及系统 |
CN112558996A (zh) * | 2020-12-24 | 2021-03-26 | 中国航空工业集团公司西安航空计算技术研究所 | 一种自动化固化控制方法 |
CN112558996B (zh) * | 2020-12-24 | 2023-08-04 | 中国航空工业集团公司西安航空计算技术研究所 | 一种自动化固化控制方法 |
CN114489831A (zh) * | 2021-12-29 | 2022-05-13 | 中国航空工业集团公司西安飞机设计研究所 | 一种可配置的机载软件批处理固化方法 |
CN114489831B (zh) * | 2021-12-29 | 2024-03-19 | 中国航空工业集团公司西安飞机设计研究所 | 一种可配置的机载软件批处理固化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103902303A (zh) | 基于配置表的程序固化方法 | |
CN101799763B (zh) | 内核在线补丁的方法、装置和系统 | |
US8595693B2 (en) | Model driven deployment of composite applications | |
CN105354049B (zh) | 一种三维动画引擎的资源加载方法、装置及系统 | |
CN103309800B (zh) | 一种网页自动化测试方法和系统 | |
CN101699405A (zh) | 一种宿主程序和插件及插件间进行交互的方法及装置 | |
CN103777972A (zh) | 基于现场可编程门阵列的系统、配置方法以及升级方法 | |
CN103793249A (zh) | 一种Java虚拟机中类库的多线程预加载方法 | |
CN105205105A (zh) | 一种基于storm的数据ETL系统及处理方法 | |
CN104484456A (zh) | 一种基于多线程并行的SQLite数据库快速加载方法 | |
CN101706725A (zh) | 一种可重定位程序的加载及调试方法及系统 | |
CN102541608B (zh) | 一种星敏感器数据存储与注入模块和方法 | |
CN104516809A (zh) | 一种自动化测试系统及方法 | |
CN105302717A (zh) | 一种大数据平台的检测方法及装置 | |
CN106528065B (zh) | 一种线程获取方法及设备 | |
CN103268284A (zh) | 一种星敏感器在轨维护方法 | |
CN102866948A (zh) | 一种嵌入式基础软件测试平台及其测试方法 | |
CN106201636A (zh) | 一种dsp片外代码动态加载方法及装置 | |
CN104035360A (zh) | 一种eps控制器的调参方法及装置 | |
CN105867944A (zh) | Web前端数据操作层及其实现方法 | |
CN104461662A (zh) | Unity3d骨骼动画插件SmoothMoves的加载优化方法 | |
CN106569863A (zh) | 基于资源和代码模块化的安卓app资源更新和修复的方法 | |
CN106874022A (zh) | 一种热补丁注入方法及装置 | |
CN102779060B (zh) | 一种应用程序多次压缩解压方法 | |
US20110264669A1 (en) | method for compressing a .net file |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140702 |
|
WD01 | Invention patent application deemed withdrawn after publication |