CN104699523B - 用于硬件平台所开发的应用程序的调试方法和*** - Google Patents

用于硬件平台所开发的应用程序的调试方法和*** Download PDF

Info

Publication number
CN104699523B
CN104699523B CN201510131447.7A CN201510131447A CN104699523B CN 104699523 B CN104699523 B CN 104699523B CN 201510131447 A CN201510131447 A CN 201510131447A CN 104699523 B CN104699523 B CN 104699523B
Authority
CN
China
Prior art keywords
hardware platform
hardware
library file
application program
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
Application number
CN201510131447.7A
Other languages
English (en)
Other versions
CN104699523A (zh
Inventor
孙吉平
韩勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Senseshield Technology Co Ltd
Original Assignee
Beijing Senseshield Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Senseshield Technology Co Ltd filed Critical Beijing Senseshield Technology Co Ltd
Priority to CN201510131447.7A priority Critical patent/CN104699523B/zh
Publication of CN104699523A publication Critical patent/CN104699523A/zh
Application granted granted Critical
Publication of CN104699523B publication Critical patent/CN104699523B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种用于硬件平台所开发的应用程序的调试方法和装置,该调试方法包括以下步骤:步骤S1,确定硬件平台的IO操作,用上位机***内的IO操作代码来模拟硬件平台的IO操作;步骤S2,将用于模拟的IO操作代码编译为库文件,将待调试的应用程序编译为上位机的可执行程序,并将库文件与可执行程序的各执行代码分别进行初始链接;步骤S3,通过模拟的IO操作,在上位机上运行并调试可执行程序。本发明利用上位机的IO操作代码来模拟该硬件平台的主要IO操作,使在上位机上进行调试的应用程序的运行逻辑以及运行效果与在硬件平台上运行时保持一致,从而解决了在硬件平台上开发软件时遇到的仿真操作过程复杂的问题,因此可以降低开发成本。

Description

用于硬件平台所开发的应用程序的调试方法和***
技术领域
本发明主要涉及应用程序的调试方面,涉及一种用于硬件平台所开发的应用程序的调试方法和***。
背景技术
通常,硬件平台(尤其是嵌入式***开发平台)自身的操作***功能极为有限,没有提供可调试的支持(即,在硬件平台内不存在硬件仿真器或者硬件虚拟机),在这些硬件平台的开发操作处于一种高复杂度且低可见度的状态,为了验证所开发的程序的正确性,开发操作一般要使用硬件仿真器(也称为硬件调试器)。现有技术中,调试器(DeBugger)是作为软件维护与错误修正的一个最重要、最直接,同时也是必不可少的一种机制。在应用中,调试器一般是通过串口与上位机(即计算机)软件相连,在连接之后由上位机软件发出控制命令,通过该串口将待调试的可执行程序发送到硬件仿真器内,然后由硬件仿真器执行该可执行程序。所不同的是,硬件仿真器可以对这些程序做特定的运行,如单步、断点、更改执行地址、查看内存与寄存器状态等等来实现固件的调试。
使用硬件仿真器进行开发,首先要建立一个符合要求的硬件平台,如果该硬件平台涉及的程序比较复杂,还要搭建一个人机交流通道,例如,可以是一个简单的发光二极管、蜂鸣器或串口通讯的LCD显示屏等。然后编写一个简单的程序示例,通过此前建立的人机交流通道验证该硬件平台是否正常工作,之后再验证底层驱动程序和用户框架程序是否正常工作,然后才能对应用程序进行调试。所以,开发时搭建该硬件平台时操作过程比较复杂,而且硬件仿真器价格也较昂贵。
发明内容
为了解决上述问题,本发明提供一种用于硬件平台所开发的应用程序的调试方法和***。
根据本发明的一个方面,提供了一种用于硬件平台所开发的应用程序的调试方法,其包括以下步骤:
步骤S1,确定硬件平台的IO操作,用上位机***内的IO操作代码来模拟硬件平台的IO操作;
步骤S2,将用于模拟的IO操作代码编译为库文件,将待调试的应用程序编译为上位机的可执行程序,并将库文件与可执行程序的各执行代码分别进行初始链接;
步骤S3,通过模拟的IO操作,在上位机上运行并调试可执行程序。
作为优选,硬件平台以非硬件相关的语言编写应用程序。
作为优选,库文件包括动态库文件或静态库文件。
作为优选,步骤S1进一步包括:
通过硬件平台为应用程序提供的API来确定硬件平台的IO操作。
作为优选,硬件平台的IO操作包括下列至少之一:
文件IO操作、图形显示、时钟、硬件信息IO操作、执行单元IO操作。
根据本发明的另一个方面,提供了一种用于硬件平台所开发的应用程序的调试***,其包括:
模拟模块,其配置为确定硬件平台的IO操作,用上位机***内的IO操作代码来模拟硬件平台的IO操作;
编译模块,其配置为将用于模拟的IO操作代码编译为库文件,且将待调试的应用程序编译为上位机的可执行程序,并将库文件与可执行程序的各执行代码分别进行初始链接;
调试模块,其配置为通过模拟的IO操作,在上位机上运行并调试可执行程序。
作为优选,硬件平台以非硬件相关的语言编写应用程序。
作为优选,库文件包括动态库文件或静态库文件。
作为优选,模拟模块进一步配置为通过硬件平台为应用程序提供的API来确定硬件平台的IO操作。
作为优选,硬件平台的IO操作包括下列至少之一:
文件IO操作、图形显示、时钟、硬件信息IO操作、执行单元IO操作。
本发明相对于现有技术的有益效果在于:
1、本发明利用上位机的IO操作代码来模拟硬件平台的主要IO操作,使在上位机上进行调试的应用程序的运行逻辑以及运行效果与在硬件平台上运行时保持一致,从而使得硬件平台所开发的应用程序可以易于由上位机的调试工具进行调试从而定位该应用程序内的逻辑错误,解决了在硬件平台上开发软件时遇到的仿真操作过程复杂的问题,并且不需要硬件仿真器,因此可以降低开发成本,并且本发明的技术方案的实现不同于现有技术中的硬件虚拟机,硬件虚拟机在进行调试时需要模拟硬件指令集,而本发明的只需要模拟该硬件平台的IO操作,因而所需的开发周期很短,能够实现轻量级的仿真方法;
2、适用于多种上位机***,便于对硬件平台所开发的应用程序进行调试,并且在上位机上也不需要额外的硬件支持,仅使用其常用的开发调试工具即可。
附图说明
图1为根据本发明的用于硬件平台所开发的应用程序的调试方法的流程图;
图2为根据本发明的用于硬件平台所开发的应用程序的调试***的结构框图。
具体实施方式
以下结合附图对本发明的进行详细描述。
根据本发明的实施例,提供了一种用于硬件平台所开发的应用程序的调试方法,其可以包括以下步骤:
步骤S1,确定硬件平台的IO操作,用上位机***内的IO操作代码来模拟硬件平台的IO操作。
一般硬件平台会为应用程序提供API(Application Programming Interface),由于硬件平台的操作***往往十分精简,其API一般都是IO操作,因此可以通过利用硬件平台为应用程序提供的API来确定硬件平台的IO操作。其中,硬件平台的IO操作可以包括文件IO操作、图形显示、时钟、硬件信息IO操作、执行单元IO操作等。根据对硬件平台IO操作的分析可以确定该硬件平台的IO操作中是否存在文件操作,该硬件平台是否有显示设备,该应用程序是否需要向显示设备显示一些信息,该平台的程序是否要向***获取时钟等。
在一些优选实施方式中,如果上位机***为Windows或Linux等主流操作***,则步骤S1中的IO操作代码的模拟可以包括:将文件IO操作模拟为Windows或Linux平台的文件操作,将图形显示模拟为窗口显示,将时钟模拟为获取***的时间等。其中,此类IO操作一般为操作***的***调用。
步骤S2,将用于模拟的IO操作代码编译为库文件,将待调试的应用程序编译为上位机的可执行程序,并将库文件与可执行程序的各执行代码分别进行初始链接。
由于硬件平台的此类应用程序的开发通常直接使用非硬件相关的语言(例如C语言)进行编写,所以可以直接将硬件平台开发的应用程序编译为任意上位机平台(如Windows或Linux等)的指令,使得应用程序可以直接在上位机进行执行,便于对硬件平台所开发的应用程序进行调试,并且在上位机上也不需要额外的硬件支持,仅使用其常用的开发调试工具即可。
步骤S3,通过模拟的IO操作,在上位机上运行并调试可执行程序。
通过上述技术方案,可以使得硬件平台上开发的应用程序可以直接在上位机上进行调试或运行,效果与上位机***内的普通应用程序一样,并可以直接查看模拟的IO操作效果是否与预期的一致。
库文件可以包括动态库文件或静态库文件。静态库和动态库是两种共享程序代码的方式。使用动态库的优点是***只需载入一次动态库,不同的程序可以使用内存中相同的动态库的副本,因此节省了很多内存。使用静态库的特点是调试程序中包含了库代码的一份完整拷贝。
根据本发明的一个实施例,提供了一种调试方法在实践中用于嵌入式平台(即对应于上述硬件平台)所开发的应用程序。在一个嵌入式平台中具有多份源文件(即对应于待调试的应用程序的执行代码)。该嵌入式平台为该源文件提供了API,可通过如上步骤实现仿真(即调试):
步骤1、上位机根据该嵌入式平台所提供的API(即IO操作)、用上位机的IO操作代码对嵌入式平台的IO操作进行模拟,然后将用于模拟的IO操作代码编译为静态库文件,其中,该嵌入式平台的应用程序以C语言所编写,将应用程序直接编译为上位机的Windows操作***的可执行程序;
步骤2、将该可执行程序与步骤1中所模拟的静态库文件进行链接;
步骤3、通过上位机的调试工具对该可执行程序进行运行和调试,通过模拟的IO效果,验证程序逻辑是否正确。
根据本发明的实施例,还提供了一种用于硬件平台所开发的应用程序的调试***,该调试***可以配置在上位机中。硬件平台可以以非硬件相关的语言编写应用程序。
该调试***可以包括:
模拟模块21,其配置为确定硬件平台的IO操作,硬件平台的IO操作可以包括下列至少之一:文件IO操作、图形显示、时钟、硬件信息IO操作、执行单元IO操作。该模拟模块21利用上位机***内的IO操作代码来模拟硬件平台的IO操作,优选地,该模拟模块21可以配置为通过硬件平台为应用程序提供的API来确定硬件平台的IO操作;
编译模块22,其配置为将用于模拟的IO操作代码编译为库文件,其中,库文件可以包括动态库文件或静态库文件,并且该编译模块22还配置为将待调试的应用程序编译为上位机的可执行程序,并将库文件与可执行程序的各执行代码分别进行初始链接;
调试模块23,其配置为通过模拟的IO操作,在上位机上运行并调试所述可执行程序。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

Claims (10)

1.一种用于硬件平台所开发的应用程序的调试方法,其特征在于,包括以下步骤:
步骤S1,确定所述硬件平台的IO操作,用上位机***内的IO操作代码来模拟所述硬件平台的IO操作;
步骤S2,将用于模拟的所述IO操作代码编译为库文件,将待调试的应用程序编译为上位机的可执行程序,并将所述库文件与所述可执行程序的各执行代码分别进行初始链接;
步骤S3,通过模拟的IO操作,在上位机上运行并调试所述可执行程序。
2.根据权利要求1所述的调试方法,其特征在于,所述硬件平台以非硬件相关的语言编写所述应用程序。
3.根据权利要求1所述的调试方法,其特征在于,所述库文件包括动态库文件或静态库文件。
4.根据权利要求1所述的调试方法,其特征在于,步骤S1进一步包括:
通过所述硬件平台为所述应用程序提供的API来确定所述硬件平台的IO操作。
5.根据权利要求1所述的调试方法,其特征在于,所述硬件平台的IO操作包括下列至少之一:
文件IO操作、图形显示、时钟、硬件信息IO操作、执行单元IO操作。
6.一种用于硬件平台所开发的应用程序的调试***,其特征在于,包括:
模拟模块,其配置为确定所述硬件平台的IO操作,用上位机***内的IO操作代码来模拟所述硬件平台的IO操作;
编译模块,其配置为将用于模拟的所述IO操作代码编译为库文件,且配置为将待调试的应用程序编译为上位机的可执行程序,并将所述库文件与所述可执行程序的各执行代码分别进行初始链接;
调试模块,其配置为通过模拟的IO操作,在上位机上运行并调试所述可执行程序。
7.根据权利要求6所述的调试***,其特征在于,所述硬件平台以非硬件相关的语言编写所述应用程序。
8.根据权利要求6所述的调试***,其特征在于,所述库文件包括动态库文件或静态库文件。
9.根据权利要求6所述的调试***,其特征在于,所述模拟模块进一步配置为通过所述硬件平台为所述应用程序提供的API来确定所述硬件平台的IO操作。
10.根据权利要求6所述的调试***,其特征在于,所述硬件平台的IO操作包括下列至少之一:
文件IO操作、图形显示、时钟、硬件信息IO操作、执行单元IO操作。
CN201510131447.7A 2015-03-24 2015-03-24 用于硬件平台所开发的应用程序的调试方法和*** Active CN104699523B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510131447.7A CN104699523B (zh) 2015-03-24 2015-03-24 用于硬件平台所开发的应用程序的调试方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510131447.7A CN104699523B (zh) 2015-03-24 2015-03-24 用于硬件平台所开发的应用程序的调试方法和***

Publications (2)

Publication Number Publication Date
CN104699523A CN104699523A (zh) 2015-06-10
CN104699523B true CN104699523B (zh) 2018-06-01

Family

ID=53346689

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510131447.7A Active CN104699523B (zh) 2015-03-24 2015-03-24 用于硬件平台所开发的应用程序的调试方法和***

Country Status (1)

Country Link
CN (1) CN104699523B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106970825B (zh) * 2017-03-10 2020-07-14 深圳航天科技创新研究院 一种基于gdb可配置框架的arm7仿真目标机实现方法
CN107193628A (zh) * 2017-04-07 2017-09-22 万达百汇科技(深圳)有限公司 支付终端应用仿真方法和装置
CN108255542B (zh) * 2018-01-05 2021-08-10 北京北信源信息安全技术有限公司 一种虚拟机的串口并口管控方法与装置
CN109992516B (zh) * 2019-04-03 2022-08-26 寒武纪(西安)集成电路有限公司 一种编程调试方法、装置及相关产品
CN112765018B (zh) * 2021-01-12 2022-09-13 武汉光庭信息技术股份有限公司 一种仪器仪表调试***及方法
CN113342702B (zh) * 2021-08-04 2021-11-16 武汉天喻信息产业股份有限公司 一种应用程序测试方法、装置、设备及可读存储介质
CN115525542B (zh) * 2022-09-06 2024-01-02 河南翔宇医疗设备股份有限公司 一种调试工具的调试方法、装置以及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1558330A (zh) * 2004-01-18 2004-12-29 广东拓思软件科学园有限公司 家电控制器嵌入式软件的仿真集成开发***及其纯软件仿真执行方法
CN102662648A (zh) * 2012-03-05 2012-09-12 广东天波信息技术股份有限公司 一种通讯终端的嵌入式软件开发仿真平台及其应用
CN103678099A (zh) * 2012-09-10 2014-03-26 国网电力科学研究院 一种实现硬件平台与软件平台通讯的方法以及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1558330A (zh) * 2004-01-18 2004-12-29 广东拓思软件科学园有限公司 家电控制器嵌入式软件的仿真集成开发***及其纯软件仿真执行方法
CN102662648A (zh) * 2012-03-05 2012-09-12 广东天波信息技术股份有限公司 一种通讯终端的嵌入式软件开发仿真平台及其应用
CN103678099A (zh) * 2012-09-10 2014-03-26 国网电力科学研究院 一种实现硬件平台与软件平台通讯的方法以及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"嵌入式软件测试方法";王荣;《航空兵器》;20031030(第5期);第12-14页 *

Also Published As

Publication number Publication date
CN104699523A (zh) 2015-06-10

Similar Documents

Publication Publication Date Title
CN104699523B (zh) 用于硬件平台所开发的应用程序的调试方法和***
US7171653B2 (en) Systems and methods for providing communication between a debugger and a hardware simulator
RU2473115C2 (ru) Способ автоматического генерирования сценария для проверки правильности функционального программного обеспечения системы, установленной на борту летательного аппарата, и устройство для применения способа
US20170308451A1 (en) Flexible configuration and control of a testing system
JP4766540B2 (ja) プログラムコード変換の検証を実行するための方法および装置
US20060041864A1 (en) Error estimation and tracking tool for testing of code
US7895575B2 (en) Apparatus and method for generating test driver
US6467082B1 (en) Methods and apparatus for simulating external linkage points and control transfers in source translation systems
CN104156311B (zh) 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法
CN105302719A (zh) 一种变异测试方法及装置
US8515727B2 (en) Automatic logic model build process with autonomous quality checking
CN101706750A (zh) 一种基于嵌入式模拟器的测试桩获取方法
Davidson et al. An overview of firmware engineering
CN107766602A (zh) 技术***的运行软件的修正和仿真
US20090089758A1 (en) Testing and debugging of dynamic binary translation
US20070277165A1 (en) Debugging Interpreted Input
US6314557B1 (en) Hybrid computer programming environment
US20080127118A1 (en) Method and system for dynamic patching of software
CN111930398A (zh) 应用程序更新方法、装置、***、介质及设备
CN110554861A (zh) 具有编译和读取-评估-打印-循环操作的软件开发环境
Pohl et al. vMAGIC—automatic code generation for VHDL
Liu et al. End-to-end automation of feedback on student assembly programs
KR20110037140A (ko) 임베디드 소프트웨어 가상 개발 환경을 제공하는 시스템
EP4399597A1 (en) Hot reloading a running application with an unsaved source code change
US11256479B2 (en) Dynamic updates in an interactive programming environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
CB02 Change of applicant information

Address after: 100193 Beijing, Haidian District, East West Road, No. 10, East Hospital, building No. 5, floor 5, layer 510

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee after: Beijing Shendun Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.