CN106294170B - 嵌入式控制系统变量初始化的测试方法 - Google Patents
嵌入式控制系统变量初始化的测试方法 Download PDFInfo
- Publication number
- CN106294170B CN106294170B CN201610680254.1A CN201610680254A CN106294170B CN 106294170 B CN106294170 B CN 106294170B CN 201610680254 A CN201610680254 A CN 201610680254A CN 106294170 B CN106294170 B CN 106294170B
- Authority
- CN
- China
- Prior art keywords
- memory
- embedded
- internal storage
- embedded system
- host computer
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种嵌入式控制系统变量初始化的测试方法,根据对内存的第一次填充的填充码和对内存的第二次填充的填充码不相同,若上位机第一次读取回的内存数据与第一次的填充码相等且上位机第二次读取回的内存数据与第二次的填充码相等,则所处的内存单元未初始化,若第一次填充后读回的内存数据与第二次填充后读回的内存数据相等,则所处的内存单元已初始化。本发明的嵌入式控制系统变量的初始化变量测试能够自动化完成,不需要对编译器有特殊的要求,能够广泛适应各种嵌入式平台。克服了编译器(或代码静态分析工具)无法准确查找和实用性比较低等情况,有效地节约人力投入,提高软件测试效率,具备高效、准确的特点。
Description
技术领域
本发明涉及变量初始化的测试方法,特别涉及一种嵌入式控制系统变量初始化的测试方法。
背景技术
一般现有的方案是通过编译器本身自带的检测工具(或者是代码静态分析工具)对代码进行静态的逻辑分析,查找出可能未被初始化的变量;这种方法依赖于编译器和所用的工具,如果是用编译器一般无法做到完整的检测,而用工具检测毕竟是逻辑分析,与实际情况还是有一定差别的。
发明内容
本发明的目的为了解决现有技术问题,提供方法,具体实现方案如下:
一种嵌入式控制系统变量初始化的测试方法,其特征在于,包括如下步骤:
步骤S1:嵌入式系统程序植入测试程序;
步骤S2:上位机载入嵌入式系统程序的内存分配文件,并从所述内存分配文件获取嵌入式系统程序声明的系统变量在内存的存储空间信息;
步骤S3:上位机运行,将嵌入式系统的内存分区信息、相应的填充码和填充指令发送给嵌入式系统;
步骤S4:嵌入式系统接收到上述信息,对内存进行填充;
步骤S5:上位机下发查询指令给嵌入式系统,所述查询指令为查询内存数据;
步骤S6:嵌入式系统根据当前内存区域进行读取,并将读取数据传输至上位机;
步骤S7:上位机接收嵌入式系统发送的数据并存储;将数据暂存在上位机端;
步骤S8:上位机判断嵌入式系统的内存是否为第一次填充,若是,则返回步骤S3,否则,进入步骤S9;
步骤S9:上位机比较第一次填充后读回的内存数据和第二次填充后读回的内存数据,若第一次读回的内存数据与第二次读回的内存数据相等,则表示所处的内存单元已初始化,否则表示所处的内存单元未初始化。
在本发明一实施例中,对内存的第一次填充的填充码和对内存的第二次的填充码不相同。
在本发明一实施例中,所述存储空间信息包括系统变量在内存的起始地址及所占空间大小。
在本发明一实施例中,所述内存分区信息包括嵌入式系统的内存分区数目以及分区的起始地址和结束地址。
在本发明一实施例中,步骤S1还包括嵌入式系统程序植入测试程序后,嵌入式系统上电,并执行相应的测试程序。
在本发明一实施例中,所述测试方法,是运行在嵌入式系统的应用程序执行之前。
在本发明一实施例中,所述嵌入式控制系统为控制程序存储在只读存储器中的嵌入式处理器控制板。
与现有技术相比具有的有益效果如下:本发明的嵌入式控制系统变量的初始化变量测试能够自动化完成,不需要对编译器有特殊的要求,能够广泛适应各种嵌入式平台。克服了编译器(或代码静态分析工具)无法准确查找和实用性比较低等情况,有效地节约人力投入,提高软件测试效率,具备高效、准确的特点。
附图说明
图1为本发明的原理流程图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步说明。
嵌入式系统是一个控制程序存储在只读存储器(ROM)中的嵌入式处理器控制板,通常由单个程序实现整个控制逻辑,系统启动运行前需要对程序使用的变量进行初始化。所谓的变量初始化,是对变量进行声明后,对其进行初始化赋值,程序运行时对变量进行引用才能得到预期结果,若未对其初始化,运行结果将是不可预料的。
一种嵌入式控制系统变量初始化的测试方法,其包括如下步骤:
步骤S1:嵌入式系统程序植入测试程序;
步骤S2:上位机载入嵌入式系统程序的内存分配文件,并从所述内存分配文件获取嵌入式系统程序声明的系统变量在内存的存储空间信息;步骤S3:上位机运行,将嵌入式系统的内存分区信息、相应的填充码和填充指令发送给嵌入式系统;填充码指的是对某个内存单元所写入的一个数值,用于标记内存的初始状态。
步骤S4:嵌入式系统接收到上述信息,对内存进行填充;
步骤S5:上位机下发查询指令给嵌入式系统,所述查询指令为查询内存数据;
步骤S6:嵌入式系统根据当前内存区域进行读取,并将读取数据传输至上位机;
步骤S7:上位机接收嵌入式系统发送的数据并存储;将数据暂存在上位机端;
步骤S8:上位机判断嵌入式系统的内存是否为第一次填充,若是,则返回步骤S3,否则,进入步骤S9;
步骤S9:上位机比较第一次填充后读回的内存数据和第二次填充后读回的内存数据,若第一次读回的内存数据与第二次读回的内存数据相等,则表示所处的内存单元已初始化,否则表示所处的内存单元未初始化。其中读取数据指的是读取一段内存单元的数值.
进一步地,对内存的第一次填充的填充码和对内存的第二次填充的填充码不相同,若上位机第一次读取回的内存数据与第一次的填充码相等且上位机第二次读取回的内存数据与第二次的填充码相等,则表示所处的内存单元未初始化,若第一次填充后读回的内存数据与第二次填充后读回的内存数据相等,则所处的内存单元已初始化。
进一步地,所述存储空间信息包括系统变量在内存的起始地址及所占空间大小。
进一步地,所述内存分区信息包括嵌入式系统的内存分区数目以及分区的起始地址和结束地址。
进一步地,步骤S1还包括嵌入式系统程序植入脚本程序后,嵌入式系统上电。
进一步地,所述测试方法,是运行在嵌入式系统的应用程序执行之前。
进一步地,所述嵌入式控制系统为控制程序存储在只读存储器中的嵌入式处理器控制板。
上列较佳实施例,对本发明的目的、技术方案和优点进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种嵌入式控制系统变量初始化的测试方法,其特征在于,包括如下步骤:
步骤S1:嵌入式系统程序植入测试程序;
步骤S2:上位机载入嵌入式系统程序的内存分配文件,并从所述内存分配文件获取嵌入式系统程序声明的系统变量在内存的存储空间信息;
步骤S3:上位机运行,将嵌入式系统的内存分区信息、相应的填充码和填充指令发送给嵌入式系统;填充码指的是对某个内存单元所写入的一个数值,用于标记内存的初始状态;
步骤S4:嵌入式系统接收到上述信息,对内存进行填充;
步骤S5:上位机下发查询指令给嵌入式系统,所述查询指令为查询内存数据;
步骤S6:嵌入式系统根据当前内存区域进行读取,并将读取数据传输至上位机;
步骤S7:上位机接收嵌入式系统发送的数据并存储;将数据暂存在上位机端;
步骤S8:上位机判断嵌入式系统的内存是否为第一次填充,若是则返回步骤S3,否则,进入步骤S9;
步骤S9:对内存的第一次填充的填充码和对内存的第二次填充的填充码不相同,若上位机第一次读取回的内存数据与第一次的填充码相等且上位机第二次读取回的内存数据与第二次的填充码相等,则表示所处的内存单元未初始化,若第一次填充后读回的内存数据与第二次填充后读回的内存数据相等,则所处的内存单元已初始化。
2.根据权利要求1所述的嵌入式控制系统变量初始化的测试方法,其特征在于:所述存储空间信息包括系统变量在内存的起始地址及所占空间大小。
3.根据权利要求1所述的嵌入式控制系统变量初始化的测试方法,其特征在于:所述内存分区信息包括嵌入式系统的内存分区数目以及分区的起始地址和结束地址。
4.根据权利要求1所述的嵌入式控制系统变量初始化的测试方法,其特征在于:步骤S1还包括嵌入式系统程序植入测试程序后,嵌入式系统上电,并执行相应的测试程序。
5.根据权利要求1所述的嵌入式控制系统变量初始化的测试方法,其特征在于;所述测试方法,是运行在嵌入式系统的应用程序执行之前。
6.根据权利要求1所述的嵌入式控制系统变量初始化的测试方法,其特征在于:所述嵌入式控制系统为控制程序存储在只读存储器中的嵌入式处理器控制板。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610680254.1A CN106294170B (zh) | 2016-08-17 | 2016-08-17 | 嵌入式控制系统变量初始化的测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610680254.1A CN106294170B (zh) | 2016-08-17 | 2016-08-17 | 嵌入式控制系统变量初始化的测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106294170A CN106294170A (zh) | 2017-01-04 |
CN106294170B true CN106294170B (zh) | 2018-10-19 |
Family
ID=57679001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610680254.1A Active CN106294170B (zh) | 2016-08-17 | 2016-08-17 | 嵌入式控制系统变量初始化的测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106294170B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902001B (zh) * | 2019-02-12 | 2022-06-07 | 科华恒盛股份有限公司 | 对未初始化变量的检测方法及终端设备 |
CN111552661A (zh) * | 2020-04-28 | 2020-08-18 | 合肥芯碁微电子装备股份有限公司 | 测试数据传输稳定性的方法和光刻设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599046A (zh) * | 2009-06-26 | 2009-12-09 | 深圳市茁壮网络股份有限公司 | 一种内存检测方法及装置 |
CN105677559A (zh) * | 2015-12-31 | 2016-06-15 | 杭州华为数字技术有限公司 | 一种检测方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10817502B2 (en) * | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent memory management |
-
2016
- 2016-08-17 CN CN201610680254.1A patent/CN106294170B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599046A (zh) * | 2009-06-26 | 2009-12-09 | 深圳市茁壮网络股份有限公司 | 一种内存检测方法及装置 |
CN105677559A (zh) * | 2015-12-31 | 2016-06-15 | 杭州华为数字技术有限公司 | 一种检测方法及装置 |
Non-Patent Citations (1)
Title |
---|
引用未初始化变量故障静态测试方法研究;曹文静 等;《小型微型计算机系统》;20070531;第28卷(第5期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN106294170A (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9785424B2 (en) | Capability attributes based application packaging | |
CN104008060B (zh) | 插件与宿主兼容性的检测方法及检测服务器 | |
US9349154B2 (en) | Bindless texture and image API | |
CN110673924B (zh) | 一种多架构容器云镜像选择方法、装置、设备及存储介质 | |
WO1994011812A1 (en) | Method for loading device drivers | |
JP2002536744A (ja) | トークンに基づいたリンクステップ | |
US9535613B2 (en) | Hardware and software methodologies for detecting illegal memory address of a memory access operation | |
CN106294170B (zh) | 嵌入式控制系统变量初始化的测试方法 | |
JP2008276763A (ja) | メモリエラーの検出法 | |
US9489315B2 (en) | Method of executing, by a microprocessor, a polymorphic binary code of a predetermined function | |
US20060101437A1 (en) | Data processing device and method | |
US20090172643A1 (en) | Program verification apparatus, program verification method, and program storage medium | |
CN102799536B (zh) | 一种嵌入式系统中存储设备容量自适应的方法及装置 | |
JP5777843B1 (ja) | プロセッサ、処理装置、プログラム作成方法 | |
JP2015088188A (ja) | 制御装置の制御プログラムに影響を与えるための方法 | |
CN104182352B (zh) | 用于访问4gb以上物理内存地址空间的方法及装置 | |
CN117648688A (zh) | 一种容器逃逸检测方法、系统、计算机设备及存储介质 | |
CN111324553A (zh) | 在嵌入式系统上实现虚拟地址空间的方法 | |
CN112583794A (zh) | 接口调用方法、装置、计算机设备和存储介质 | |
US11030306B2 (en) | Method for executing a program intended to be interpreted by a virtual machine protected against fault injection attacks | |
CN114610516B (zh) | 应用程序的修复方法、装置、计算机设备以及存储介质 | |
US7065747B2 (en) | Identifying references to objects during bytecode verification | |
CN110633210B (zh) | 文件执行方法、装置、存储介质和电子设备 | |
US20220121457A1 (en) | Run-time identification of dependencies during dynamic linking | |
CN108874468B (zh) | 应用程序的加载方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |