CN110018959B - 一种嵌入式应用调试的方法以及系统 - Google Patents
一种嵌入式应用调试的方法以及系统 Download PDFInfo
- Publication number
- CN110018959B CN110018959B CN201910233145.9A CN201910233145A CN110018959B CN 110018959 B CN110018959 B CN 110018959B CN 201910233145 A CN201910233145 A CN 201910233145A CN 110018959 B CN110018959 B CN 110018959B
- Authority
- CN
- China
- Prior art keywords
- computer
- embedded application
- lower computer
- debugging
- middleware
- 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
Images
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/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种嵌入式应用调试的方法,包括上位机以及下位机,所述下位机为嵌入式终端,system运行在下位机上,所述上位机用于运行编译调试工具的终端,嵌入式应用运行在上位机上,所述下位机连接至所述上位机,具体包括如下步骤:步骤1、嵌入式应用生成API调用请求数据;步骤2、上位机将API调用请求数据发送至下位机上;步骤3、下位机接收并转换API调用请求数据,根据转换后的数据执行任务;本发明还提供一种嵌入式应用调试的系统,降低成本,提高调试效率。
Description
技术领域
本发明涉及嵌入式领域,特别涉及一种嵌入式应用调试的方法以及系统。
背景技术
在嵌入式领域,程序员编写完应用代码,一般通过两种方式进行调试:
1)真实环境调试;
程序员在电脑上通过交叉编译工具将应用代码编译成目标文件后下载到产品,通过产品输出调试LOG或依赖于专门的调试器(如jlink)对应用代码进行调试。
2)模拟器调试;
在电脑上开发一个虚拟终端模拟产品功能。程序员直接在电脑上利用虚拟终端开发和调试应用程序。
常见调试方法的优缺点:
1)真实环境调试
优点:基于真实环境进行调试,调试通过的代码就是最终版本。
缺点:调试受限。调试手段依赖于硬件支持,如调试器需要单独购买,并且产品采用的MCU要支持。面向嵌入式的集成开发环境,使用起来比较复杂,提供的调试功能也相对简单。
调试效率低。每次都要先把应用下载到产品上才能开始调试。
2)模拟器调试
优点:编译完就可以直接调试,省去了下载应用的过程,电脑上的集成开发环境可选范围更大,功能更强大,如windows操作系统就支持多种C语言集成开发环境,典型的像Visual Studio提供了强大的代码编辑调试功能。
缺点:开发和维护成本高;模拟器越接近真实产品,成本越高;
适用范围有限;产品硬件会更新换代,还会有衍生品类,不可能都支持;
模拟功能有限;只能模拟真实终端的部分功能。
发明内容
本发明要解决的技术问题,在于提供一种嵌入式应用调试的方法以及系统,提高效率,降低成本。
本发明之一是这样实现的:一种嵌入式应用调试的方法,包括上位机以及下位机,所述下位机为嵌入式终端,system运行在下位机上,所述上位机用于运行编译调试工具的终端,嵌入式应用运行在上位机上,所述下位机连接至所述上位机,具体包括如下步骤:
步骤1、嵌入式应用生成API调用请求数据;
步骤2、上位机将API调用请求数据发送至下位机上;
步骤3、下位机接收并转换API调用请求数据,根据转换后的数据执行任务。
进一步地,还包括步骤4、任务执行完成后,生成一回馈信息,下位机将回馈信息发送至上位机,嵌入式应用接收该回馈信息。
本发明之二是这样实现的:一种嵌入式应用调试的系统,包括上位机以及下位机,所述下位机为嵌入式终端,system运行在下位机上,所述上位机用于运行编译调试工具的终端,嵌入式应用运行在上位机上,所述下位机连接至所述上位机,具体包括如下步骤:
生成模块,嵌入式应用生成API调用请求数据;
发送模块,上位机将API调用请求数据发送至下位机上;
接收执行模块,下位机接收并转换API调用请求数据,根据转换后的数据执行任务。
进一步地,还包括反馈模块,任务执行完成后,生成一回馈信息,下位机将回馈信息发送至上位机,嵌入式应用接收该回馈信息。
本发明具有如下优点:
1)低成本:不需要购买硬件调试器。信息传递模块COMM的开发及维护成本很低。
2)调试效率高:应用代码在上位机上编译完就可以直接开始调试,不必先下载至下位机。
3)调试手段丰富:调试手段不再受产品硬件配置限制。程序员可以根据自己的喜好相对自由的选用集成开发环境,享受windows或linux等操作系统上开发工具提供的丰富调试功能。
4)高适配性:产品更新换代或各种衍生产品的情况,本方案可以不修改或只要少量修改就能适配。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明方法执行流程图。
具体实施方式
如图1所示,本发明嵌入式应用调试的方法,包括上位机以及下位机,所述下位机为嵌入式终端,system运行在下位机上,所述上位机用于运行编译调试工具的终端,嵌入式应用运行在上位机上,所述下位机连接至所述上位机,具体包括如下步骤:
步骤1、嵌入式应用生成API调用请求数据;
步骤2、上位机将API调用请求数据发送至下位机上;
步骤3、下位机接收并转换API调用请求数据,根据转换后的数据执行任务;
步骤4、任务执行完成后,生成一回馈信息,下位机将回馈信息发送至上位机,嵌入式应用接收该回馈信息。
本发明嵌入式应用调试的系统,包括上位机以及下位机,所述下位机为嵌入式终端,system运行在下位机上,所述上位机用于运行编译调试工具的终端,嵌入式应用运行在上位机上,所述下位机连接至所述上位机,具体包括如下步骤:
生成模块,嵌入式应用生成API调用请求数据;
发送模块,上位机将API调用请求数据发送至下位机上;
接收执行模块,下位机接收并转换API调用请求数据,根据转换后的数据执行任务;
反馈模块,任务执行完成后,生成一回馈信息,下位机将回馈信息发送至上位机,嵌入式应用接收该回馈信息。
现有的采用二层结构,软件全部运行在下位机,APP可以直接调用API。变成三层结构后,APP运行在上位机,system运行在下位机,APP调用API时,就需要先通过COMM模块(即中间件)将APP的请求从上位机发送至下位机,再由COMM模块解析请求后转换为具体的API调用,然后将API的执行结果再通过COMM模块返回给APP。COMM模块作为APP与system的信息传递中介,一部分运行在应用层(即在上位机运行),另一部分运行在系统层(即在下位机运行)。
由于上位机与下位机之间要进行信息交换,因此上位机与下位机之间要连接一个通信接口。接口的物理形态不限,可以是有线的串口,USB等,也可以是无线的WIFI,LAN,蓝牙等,具体根据产品实际配置而定。原则上通信速率越快越好,因为越快,API调用的延迟就越低,调试效果自然就越逼近真实产品。
应用与系统之间,核心是API调用。一次API调用过程大致是,APP指定某个API并提供API需要的参数值,system执行这个API调用请求,然后将结果通过API返回给APP。
当APP运行在上位机,而system运行在下位机的时候,APP的API调用请求就无法直接传递。此时,就需要COMM模块通过物理通讯接口,在上位机与下位机之间建立一套通信协议。APP的API调用请求通过COMM模块的通讯包,从上位机发送给下位机。下位机收到请求后执行指定的API,然后将执行结果通过COMM模块的通讯包,从下位机应答给上位机。通过一些编码约定及COMM模块的中转,使APP在上位机运行时就如同在下位机运行一样。
以C语言为例,COMM模块处理API调用,需要根据不同的函数形式做不同的处理。
3.1编码约定
3.1.1system与app之间的数据传递
由于system和app使用的是各自独立的存储空间,不能直接访问对方的存储空间。因此,API参数中带数据指针类型的情况下,就需要约定获取对方存储空间数据的方法,如系统层访问应用层数据,必须通过CopyToApp和CopyFromApp两个函数,功能分别为从system拷贝数据至app和从app拷贝数据至system。
COMM模块对这两个函数的实现示例:
3.1.2回调函数约定
回调函数,也就是参数类型为函数指针的情况。同“3.1.1”所述,由于应用与系统的空间各自独立,因此跨分层的使用就需要事先约定。
为所有跨分层的函数指针(回调函数)原型建立分类,如:
CALLBACK_OPEN对应Open函数的原型类
CALLBACK_RW对应Read和Write函数的原型类
注册回调函数
应用需要向系统注册回调函数,注册时提供回调函数原型类和函数地址。
执行回调函数
执行是在特定的事件或条件发生时由系统调用。执行时需要提供回调函数原型类和函数地址。
3.2实施示例
函数形参数据类型分:值和指针;
指针分:数据指针和函数指针;
根据参数个数,可以分为:定参和不定参;
实例会覆盖以上情况,但以上情况不能代表API调用的所有情况。如遇其它情况可以参照实例中的方法具体实现。
示例函数采用嵌入式产品中最常见的API形式进行说明,如:
int Open(char*pcName);
int Close(int iHandle);
int Read(int iHandle,void*pvBuf,unsigned int uLen);
int Write(int iHandle,void*pvBuf,unsigned int uLen);
示例函数中出现的App或Sys前缀是为了阅读方便,直观说明此代码是在应用层还是系统层。
3.2.1值与数据指针传递
COMM模块在应用层部分
从示例可知,在应用层,不管传入API的参数是值,如iHandle,还是数据指针,如pcName,处理方式都是将参数值直接打包进数据包中,传递给系统层。
COMM模块在系统层部分
等待接收应用层发送的通讯报文。当获取到请求报文,则分派给SysDealRequest函数处理。SysDealRequest根据报文内容,将请求转换为具体的API调用操作,然后将执行结果返回给应用层。
系统的API实现
根据编码约定,系统在实现Open,Close,Write,Read函数的时候,涉及APP存储空间访问,就必须利用CopyFromApp和CopyToApp来实现。方法示例如下:
3.2.2函数指针传递
传递函数指针就是为了在特定的事件或条件发生时由系统调用此指针指向的函数,也就是回调函数。
回调功能的实现,概念上相当于APP提供API给system使用。约定部分有说明,回调分为注册和执行两个步骤。注册就相当于APP向system提供API列表,执行则直接沿用APP调用system API的思路,只是逻辑上将APP与system的地位做个对调。
3.2.2.1注册
COMM模块在应用层部分
在报文中指明是注册回调,并提供函数地址。
COMM模块在系统层部分
解析报文,将参数转给系统中具体的注册回调API
3.2.2.1执行
系统部分的执行接口可以按如下方式写:
SysExecCallback根据pvFunc从注册库检索原型类,根据原型类获取参数并执行具体的回调操作。
剩余部分的处理同“3.2.1值与数据指针传递”一致。主要差别是主动方变为系统,被动方变为应用。即,API的执行请求是由系统发出,应用收到请求后会执行具体函数,然后将执行结果返回给系统。
3.2.3不定参数
不定参数类型的处理方式是,在COMM模块的应用层部分先将“不定参”拆解成具体的“定参”,这样,后续的处理就与“3.2.1值与数据指针传递”中的方式一致了。
如果考虑兼容所有参数数据类型的情况,可以在数据包中增加一个域,用于指示每个参数的数据类型。如果参数的数据类型很明确,比如每个参数值占用的空间都小于或等于sizeof(int),则可以不管参数的数据类型,统一按int型的大小进行传递,从而简化编码。
以统一按int型大小进行传递为例,如下:
COMM模块在应用层部分
将不定参函数拆解出具体参数后,组包发送至系统层。
COMM模块在系统层部分
将拆解出的具体参数,分派给具体的不定参函数,如SysBaseApi。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (4)
1.一种嵌入式应用调试的方法,其特征在于:包括上位机以及下位机,所述下位机为嵌入式终端,system运行在下位机上,所述上位机用于运行编译调试工具的终端,嵌入式应用运行在上位机上,所述下位机连接至所述上位机,具体包括如下步骤:
步骤1、嵌入式应用生成API调用请求数据;
步骤2、上位机将API调用请求数据发送至下位机上;
步骤3、下位机接收并转换API调用请求数据,根据转换后的数据执行任务;
嵌入式应用调用API时,就需要先通过中间件将嵌入式应用的请求从上位机发送至下位机,再由中间件解析请求后转换为具体的API调用,然后将API的执行结果再通过中间件返回给嵌入式应用,中间件作为嵌入式应用与system的信息传递中介,一部分运行在上位机,另一部分运行在下位机。
2.根据权利要求1所述的一种嵌入式应用调试的方法,其特征在于:还包括步骤4、任务执行完成后,生成一回馈信息,下位机将回馈信息发送至上位机,嵌入式应用接收该回馈信息。
3.一种嵌入式应用调试的系统,其特征在于:包括上位机以及下位机,所述下位机为嵌入式终端,system运行在下位机上,所述上位机用于运行编译调试工具的终端,嵌入式应用运行在上位机上,所述下位机连接至所述上位机,具体包括如下步骤:
生成模块,嵌入式应用生成API调用请求数据;
发送模块,上位机将API调用请求数据发送至下位机上;
接收执行模块,下位机接收并转换API调用请求数据,根据转换后的数据执行任务;
嵌入式应用调用API时,就需要先通过中间件将嵌入式应用的请求从上位机发送至下位机,再由中间件解析请求后转换为具体的API调用,然后将API的执行结果再通过中间件返回给嵌入式应用,中间件作为嵌入式应用与system的信息传递中介,一部分运行在上位机,另一部分运行在下位机。
4.根据权利要求3所述的一种嵌入式应用调试的系统,其特征在于:还包括反馈模块,任务执行完成后,生成一回馈信息,下位机将回馈信息发送至上位机,嵌入式应用接收该回馈信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910233145.9A CN110018959B (zh) | 2019-03-26 | 2019-03-26 | 一种嵌入式应用调试的方法以及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910233145.9A CN110018959B (zh) | 2019-03-26 | 2019-03-26 | 一种嵌入式应用调试的方法以及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110018959A CN110018959A (zh) | 2019-07-16 |
CN110018959B true CN110018959B (zh) | 2023-04-07 |
Family
ID=67190008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910233145.9A Active CN110018959B (zh) | 2019-03-26 | 2019-03-26 | 一种嵌入式应用调试的方法以及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110018959B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001084316A1 (en) * | 2000-05-02 | 2001-11-08 | Yang Sei Yang | Rapid debugging method on rapid prototyping apparatus for complex embedded system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100399292C (zh) * | 2005-04-15 | 2008-07-02 | 中国人民解放军国防科学技术大学 | 一种快速开发嵌入式应用系统的方法及应用系统 |
CN101340314A (zh) * | 2008-08-11 | 2009-01-07 | 中兴通讯股份有限公司 | 一种嵌入式系统的实时调试定位方法及其装置 |
CN103761121A (zh) * | 2013-12-31 | 2014-04-30 | 深圳英飞拓科技股份有限公司 | 一种嵌入式系统及其系统实现方法 |
CN104899145A (zh) * | 2015-06-20 | 2015-09-09 | 成都彬鸿科技有限公司 | 一种嵌入式系统调试方法 |
CN106547694B (zh) * | 2016-10-25 | 2018-12-11 | 浙江大学 | 一种基于ARM CortexM4内核处理器的在线调试系统 |
CN109144849B (zh) * | 2018-07-23 | 2022-04-01 | 武汉虹信科技发展有限责任公司 | 一种嵌入式软件调测方法 |
-
2019
- 2019-03-26 CN CN201910233145.9A patent/CN110018959B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001084316A1 (en) * | 2000-05-02 | 2001-11-08 | Yang Sei Yang | Rapid debugging method on rapid prototyping apparatus for complex embedded system |
Also Published As
Publication number | Publication date |
---|---|
CN110018959A (zh) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9746845B2 (en) | Support device, recording medium, and method for facilitating data exchange between different types of progrrammable logic controllers | |
CN1752946A (zh) | 一种嵌入式系统的调试方法及其系统 | |
CN100492387C (zh) | 基于Keil C51的软件保护开发的方法和系统 | |
CN107391219B (zh) | 函数编译方法和装置 | |
CN101630343B (zh) | 仿真方法及系统 | |
CN110119282A (zh) | 一种基于通用嵌入式计算机的物联网终端及系统 | |
CN101800910B (zh) | 一种模拟系统、pc侧模拟器及手机侧代理客户端 | |
WO2020037475A1 (zh) | 一种调试应用程序的方法及设备 | |
WO2017066181A2 (en) | Software platform for embedded systems | |
CN107844410A (zh) | 一种分布式集群系统的调试方法和装置 | |
CN113448690A (zh) | 监测方法及装置 | |
US7296187B1 (en) | Hardware debug device having script-based host interface | |
CN110018959B (zh) | 一种嵌入式应用调试的方法以及系统 | |
CN109460280B (zh) | 运行程序的方法、终端 | |
CN112559336B (zh) | 自适应调试异构计算芯片的方法、装置、系统及主板芯片 | |
CN112306539B (zh) | 一种单片机应用层开发方法、系统、终端及介质 | |
CN110688099B (zh) | 远距离无线电集成可编程片上系统的微处理器开发方法 | |
CA2783829A1 (en) | Transparent network substrate system | |
CN112612474A (zh) | 产品移植方法、装置、存储介质和电子设备 | |
Navas et al. | Reconciling run-time evolution and resource-constrained embedded systems through a component-based development framework | |
Schweigler | A unified model for inter-and intra-processor concurrency | |
Baker et al. | Early UML model testing using TTCN-3 and the UML testing profile | |
Bernauer et al. | A comprehensive compiler-assisted thread abstraction for resource-constrained systems | |
Yamamoto et al. | Component-based mruby platform for IoT devices | |
CN115878282A (zh) | 跨平台交互方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |