CN116126690A - 一种用于轻量级嵌入式系统的调试方法及系统 - Google Patents

一种用于轻量级嵌入式系统的调试方法及系统 Download PDF

Info

Publication number
CN116126690A
CN116126690A CN202211592017.1A CN202211592017A CN116126690A CN 116126690 A CN116126690 A CN 116126690A CN 202211592017 A CN202211592017 A CN 202211592017A CN 116126690 A CN116126690 A CN 116126690A
Authority
CN
China
Prior art keywords
function
command
jumping
parameter
entry address
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
Application number
CN202211592017.1A
Other languages
English (en)
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.)
Hunan Econavi Technology Co Ltd
Original Assignee
Hunan Econavi 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 Hunan Econavi Technology Co Ltd filed Critical Hunan Econavi Technology Co Ltd
Priority to CN202211592017.1A priority Critical patent/CN116126690A/zh
Publication of CN116126690A publication Critical patent/CN116126690A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种用于轻量级嵌入式系统的调试方法及系统,方法包括以下步骤:通过串口或网口接收以特殊字符为结束符的命令字符串,根据特殊字符断帧,得到当前指令;解析并提取出当前指令中的函数名和参数信息,将所述函数名和参数信息匹配预先注册好的函数名列表,若存在匹配结果则跳转到对应的函数入口地址,将对应的参数处理后执行函数,所述函数名为特殊命令函数时还获取函数名之后的待执行函数的入口地址信息,再次跳转到待执行函数的入口地址执行函数,若不存在匹配结果,所述函数名不为系统命令时终止解析并返回错误信息,所述函数名为系统命令时执行对应的系统功能。本发明支持常见硬件接口,提高了调试效率。

Description

一种用于轻量级嵌入式系统的调试方法及系统
技术领域
本发明涉及嵌入式系统领域,尤其涉及一种用于轻量级嵌入式系统的调试方法及系统
背景技术
计算机硬件由操作系统内核(Kernel)控制,由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要在用户和内核之间增加一层“代理”,即通过图形界面和命令行的方式,接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,既能简化用户的操作,又能保障内核的安全。
嵌入式系统包括以linux、wince为内核的系统,这类系统内核庞大,功能完善,但实时性不高,所以还存在轻量级嵌入式系统,轻量级嵌入式系统就是嵌入式软件运行在rtos(ucos、bios等)或者简单的前后台系统上,而不是运行在linux系统上。在这类系统中,往往没有配套的调试系统或者调试系统适用范围受限(仅适用于单一rtos),而嵌入式软件在开发过程中或现场调测过程中,常常需要实时查看各种变量、亦或导出内存特定范围的数据或者存于flash中的文件数据以供后续分析、亦或执行特定的调试函数等等,这时往往需要在源代码中增加打印语句或者增加调试语句,重编译后再运行观察,这样做不仅步骤繁杂,浪费大量的编译、运行时间,而且破坏了问题发生时的现场,不利于偶发性问题的定位,甚至在有些特定的恶劣现场环境下(如板卡已经装入整机无法单独拆卸下来、在剧烈摇动的环境下导致仿真器接触不良),根本无法挂载仿真器进行下载操作。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种用于轻量级嵌入式系统的调试方法及系统,支持常见硬件接口,能够进行快速、有效的调试,适用性较广。
为了解决上述技术问题,本发明采用的技术方案为:
一种用于轻量级嵌入式系统的调试方法,包括以下步骤:
S1)通过串口或网口接收以特殊字符为结束符的命令字符串,根据特殊字符断帧,得到当前指令;
S2)解析并提取出当前指令中的函数名和参数信息,将所述函数名和参数信息匹配预先注册好的函数名列表,若存在匹配结果则执行步骤S3),若不存在匹配结果则执行步骤S4);
S3)若所述函数名不为特殊命令函数,跳转到对应的函数入口地址,将对应的参数处理后执行函数,跳转步骤S5);若所述函数名为特殊命令函数,跳转到特殊命令函数入口地址,获取函数名之后的待执行函数的入口地址信息,将对应的参数处理后,跳转到待执行函数的入口地址执行函数,跳转步骤S5);
S4)若所述函数名不为系统命令,终止解析并返回错误信息,跳转步骤S5);若所述函数名为系统命令,执行对应的系统功能,跳转步骤S5);
S5)返回步骤S1)直到不再接收到命令字符串。
进一步的,所述特殊命令函数的格式为generalFuc(void(*fuc)(),char*format,...),其中void(*fuc)()为从map文件查找到的待执行函数入口地址,char*format所指向的字符串包含待执行函数的参数个数和类型信息,该字符串由转换说明符组成,…为可变参数。
进一步的,步骤S3)中所述函数名为特殊命令函数时,将将对应的参数处理包括以下步骤:根据当前可变参数的地址获取当前可变参数的值并保存,遍历format字符串,分析当前可变参数的类型并记录当前可变参数的类型信息,根据当前可变参数的类型得到当前可变参数占用的内存,将当前可变参数的地址与当前可变参数占用的内存相加得到下一可变参数的地址。
进一步的,步骤S2)中,所述参数包括符号整数、有符号整数、32位浮点、字符串、函数指针中的一种或多种。
进一步的,步骤S4)中,所述系统命令包括帮助指令、打印函数列表指令、显示数字类型十进制/十六进制转换指令中的一种或多种。
本发明还提出一种轻量级嵌入式系统,包括对外接口以及mini-shell模块,所述mini-shell模块通过对外接口与PC端连接,所述对外接口为网口或串口,所述mini-shell模块被配置以执行以下步骤:
通过串口或网口接收以特殊字符为结束符的命令字符串,根据特殊字符断帧,得到当前指令;
解析并提取出当前指令中的函数名和参数信息,将所述函数名和参数信息匹配预先注册好的函数名列表;
若存在匹配结果,且所述函数名为特殊命令函数,跳转到特殊命令函数入口地址,获取函数名之后的待执行函数的入口地址信息,将对应的参数处理后,跳转到待执行函数的入口地址执行函数;若不存在匹配结果,且所述函数名为系统命令,执行对应的系统功能。
进一步的,所述mini-shell模块还被配置以执行以下步骤:
若存在匹配结果,且所述函数名不为特殊命令函数,跳转到对应的函数入口地址,将对应的参数处理后执行函数;若不存在匹配结果,且所述函数名不为系统命令,终止解析并返回错误信息。
和现有技术相比,本发明具有下述优点:
本发明通过串口或网口接收以特殊字符为结束符的命令字符串,从而可以根据特殊字符断帧得到完整的指令,解析并提取指令中的函数名及参数后,若函数名存在于预先注册好的函数名列表中或者函数名为系统命令,则将对应的参数进行处理以供后续流程使用,函数名列表中设有特殊命令函数,其可配置所有函数的入口地址信息,并且针对特殊命令函数,可跳转到实际待执行函数的入口地址执行函数,从而避免针对未注册的函数需要重新修改代码和重新编译的问题,有效提高了调试效率。
附图说明
图1为本发明实施例的轻量级嵌入式系统的框架示意图。
图2为本发明实施例的mini-shell模块功能流程图。
图3为本发明实施例中针对特殊命令函数的工作流程图。
图4为本发明实施例中的方法流程图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
实施例一
本实施例提出一种轻量级嵌入式系统,如图1所示,包括对外接口以及mini-shell模块,mini-shell模块通过对外接口与PC端连接。对于该轻量级嵌入式系统,数据传输的物理基础是串口或网口,当为串口时,PC端的控制软件为常用的串口调试助手,如sscom、XCOM等等。PC端通过发送字符串来与轻量级嵌入式系统交互。PC发送命令后,mini-shell模块将接收到的命令字符进行解析,然后从用户函数列表中调用相应的用户函数,也可将数据传回PC供后续分析。
本实施例中,mini-shell模块通过串口或网口接收带有特殊结尾符号的命令信息后,根据特殊结尾符号断帧并将有效信息暂存到内存中,并作为输入参数传递给命令解析函数,命令解析函数解析出接收命令中包含的函数名、参数数值及参数个数,与事先存储在内存中的注册表进行比对,如若接收命令中解析出的函数名存在于注册表中,则执行该函数一次,若不存在于注册表中,则认为接收命令无效。
本实施例中,命令分为两大类:
第一类是函数名命令,用户输入待运行的函数名以及参数,mini-shell负责解析并执行该函数一次。输入参数时允许,无符号整数、有符号整数、32位浮点、字符串、函数指针等,mini-shell目前不会对输入参数的类型是否正确进行判别,这个工作需要用户自己负责。对于参数是指针(字符串指针例外)的情况,需要输入具体地址才行。另外,函数名命令中有一条特殊命令:generalFuc,它对应用户函数列表中的generalFuc(void(*fuc)(),n,...),该命令可执行嵌入式系统中的任何函数,具有较大的灵活性。
第二类是系统命令,主要包括了帮助指令、打印函数列表指令、显示数字类型十进制/十六进制转换指令等。
除了系统命令外,其他所有指令解析完后都是跳转到待执行函数的入口地址等待执行对应函数。
如图2所示,mini-shell模块被配置以执行以下步骤:
1.通过串口或网口接收以特殊字符为结束符的命令字符串,根据特殊字符断帧,得到当前指令;具体的,使用者通过串口调试助手发送命令字符串,并以特殊字符为结束符,mini-shell模块中断接收来自串口外设的数据并通过结束符作为断帧依据,将接收到的一条完整指令存入临时数组中,并交由解析模块进行解析;
2.解析并提取出当前指令中的函数名和参数信息,将所述函数名和参数信息匹配预先注册好的函数名列表,函数名列表包括以注册函数的函数名,以及对应的函数入口地址;具体的,解析模块首先提取出接收指令中的函数名及参数个数,并将提取出的函数名与预先注册好的函数名列表进行逐个比对,判断用户想要执行的函数是否已注册;
3.若存在匹配结果,且所述函数名为特殊命令函数generalFuc,根据函数名列表中函数名对应的函数入口地址,跳转到特殊命令函数入口地址执行特殊命令函数:获取函数名之后的待执行函数的入口地址信息,将对应的参数处理后,跳转到待执行函数的入口地址执行函数;若存在匹配结果,且所述函数名不为特殊命令函数,根据函数名列表中函数名对应的函数入口地址,跳转到对应的函数入口地址,将对应的参数处理后执行函数;参数处理包括:将输入指令中位于函数名之后的参数信息进行逐个提取、类型判别、字符串到真实类型的转换、存储以及生成若干辅助提示信息,供后续流程使用;
4.若不存在匹配结果,且所述函数名为系统命令,执行对应的系统功能;若不存在匹配结果,且所述函数名不为系统命令,终止解析并返回错误信息。
本实施例中,mini-shell模块实际是通过解析输入命令而获取待执行函数在内存中实际的地址并直接跳转到该地址执行该函数,从而达到调试目的。这种执行方式意味着理论上只要知道任意函数的地址,并将该地址信息加入到命令中并由模块解析出来,就可以执行该函数(并不是所有的函数都允许被执行,如rtos内核的函数就不容许被执行)。这增强了该模块可执行函数的覆盖面,在需要执行某函数但该函数又没有加入到注册列表的情况下,通过特殊命令generalFuc将待执行函数的地址输入即可达到执行该函数的目的,可跳过修改代码、编译、下载的步骤。
下面对于generalFuc指令进行详细说明:
由于函数名列表里注册的指令函数为调试过程中所需的基本功能,如读写内存数据、读写特定全局变量值、读取文件数据等,随着调试过程的深入或者应用需求的变化,很可能要执行其他的函数进行验证、观察,这些函数形式千变万化,参数个数和类型都不定,难以有确定的形式。遇到这种情况,一般的解决办法是重新修改代码,在注册表里添加需要执行的新函数信息并重新编译下载到目标设备,继续调试,导致效率低下,为了解决这个问题,特引入特殊命令函数:generalFuc(void(*fuc)(),char*format,...),该函数的灵活之处就在于只要知道待执行的函数入口地址,并按照类似于printf函数的参数输入风格输入参数,就可以执行该函数一次。而一个工程的map文件包含了该工程所有函数的入口地址信息,所以通过map文件的查找理论上可以执行任意函数。大大增强了该组件的适应性。
特殊命令函数(generalFuc(void(*fuc)(),n,...))实际跳转了两次待执行函数的入口地址,第一次是generalFuc本身这个已经注册了的函数,所谓注册就是把待执行函数的地址与待执行函数的函数名一一对应起来,这样当从命令行中解析出待执行函数的函数名后就可查到函数入口从而实现跳转,这个过程跟其他普通命令是一致的。第二次跳转是在generalFuc函数内部执行时发生的,这次的跳转是真正用户需要执行的函数入口,该入口地址信息是从generalFuc的第一个参数得来的。所以从这里可看出,特殊指令包含了两次跳转所需要的入口地址信息,第一次所需信息是函数名generalFuc,可通过查找函数名列表获取。第二次所需信息为第一个参数。该函数的参数列表可分为两类,第一类为前两个参数,提供了待执行函数的所有必要的信息,其中“void(*fuc)()”为从map查找到的待执行函数入口地址。“char*format”所指向的字符串包含待执行函数的参数个数和类型等信息,该字符串由转换说明符组成,形如“%d,%d,%f”。第二类为可变参数“…”,这个可变参数用来输入待执行函数的各个具体参数,由于待执行函数的参数类型和个数都是未知的,所以使用可变参数来应付这种情况。
generalFuc命令的解析和执行流程与其他命令是一致的,但由于它存在可变参数,所以需要借用c标准库里的stdarg.h头文件所提供的一系列宏来处理可变参数,其基本原理是根据参数入栈的特点从最靠近第一个可变参数的固定参数开始,依次获取每个可变参数的地址,宏的定义如下:
typedef char*va_list;
#define_INTSIZEOF(n)((sizeof(n)+sizeof(int)-1)&~(sizeof(int)-1))
#define va_start(ap,v)(ap=(va_list)&v+_INTSIZEOF(v))
#define va_arg(ap,t)(*(t*)((ap+=_INTSIZEOF(t))-_INTSIZEOF(t)))
#define va_end(ap)(ap=(va_list)0)
其中,_INTSIZEOF(n)宏是为了考虑那些内存地址需要对齐的系统,应该是跟sizeof(int)对齐。一般的sizeof(int)=4,也就是参数在内存中的地址都为4的倍数。比如,如果sizeof(n)在1-4之间,那么_INTSIZEOF(n)=4;如果sizeof(n)在5-8之间,那么_INTSIZEOF(n)=8。
为了能从固定参数依次得到每个可变参数,va_start,va_arg充分利用下面两点:
1.C语言在函数调用时,先将最后一个参数压入栈
2.嵌入式硬件平台下的内存分配顺序是从高地址内存到低地址内存
栈的内存分布示意图如下:
***高位地址***
第N个可变参数
。。。
第二个可变参数
第一个可变参数 ?ap
固定参数 ?v
***低位地址***
由上可见,v是固定参数在内存中的地址,在调用va_start后,ap指向第一个可变参数。这个宏的作用就是在v的内存地址上增加v所占的内存大小,这样就得到了第一个可变参数的地址。接下来,可以这样设想,如果能确定这个可变参数的类型,那么就知道了它占用了多少内存,依葫芦画瓢,就能得到下一个可变参数的地址。再来看看va_arg,它先ap指向下一个可变参数,然后减去当前可变参数的大小即得到当前可变参数的内存地址,再做个类型转换,返回它的值。要确定每个可变参数的类型,有两种做法,要么都是默认的类型,要么就在固定参数中包含足够的信息让程序可以确定每个可变参数的类型。本方案中,generalFuc,程序通过分析format字符串就可以确定每个可变参数的类型。最后一个宏va_end使得ap不再指向有效的内存地址。
如图3所示,针对generalFuc的参数进行处理时,具体工作流程为:
1调用va_start(ap,format)使得ap指向第一个可变参数。
2逐个判断format是否为转换说明符。若是,则调用va_arg(ap,type),其中type为从转换说明符获取的参数类型,从而依次从栈中获取各个参数值并存储、记录类型信息。
3遍历完整个format后,调用va_end(ap),使得ap不再指向有效的内存地址。
4根据待执行函数入口地址、参数个数、类型等信息执行函数。
本实施例中,mini-shell模块是一个灵巧的交互组件,通过常用的硬件接口,如串口或网口,现场工程师可快速并且牢靠的给系统发送指令,执行前期已经写好了的若干调试函数,并具备把存在ram或者文件系统里面的实时数据或者过往数据导出到PC进行后续分析。函数名列表中的generalFuc命令理论上具备执行任何函数的功能。这给了现场人员极大的自由度,也有效的提高了调试效率。
实施例二
基于实施例一的轻量级嵌入式系统,本实施例提出一种用于轻量级嵌入式系统的调试方法,如图4所示,包括以下步骤:
S1)通过串口或网口接收以特殊字符为结束符的命令字符串,根据特殊字符断帧,得到当前指令;
S2)解析并提取出当前指令中的函数名和参数信息,参数信息包括参数数值及参数个数,将所述函数名和参数信息匹配预先注册好的函数名列表,若存在匹配结果则执行步骤S3),若不存在匹配结果则执行步骤S4);
S3)若所述函数名不为特殊命令函数,根据函数名列表中函数名对应的函数入口地址,跳转到对应的函数入口地址,将对应的参数处理后执行函数,跳转步骤S5);若所述函数名为特殊命令函数,根据函数名列表中函数名对应的函数入口地址,跳转到特殊命令函数入口地址,获取函数名之后的待执行函数的入口地址信息,将对应的参数处理后,跳转到待执行函数的入口地址执行函数,跳转步骤S5);
S4)若所述函数名不为系统命令,终止解析并返回错误信息,跳转步骤S5);若所述函数名为系统命令,执行对应的系统功能,跳转步骤S5);
S5)返回步骤S1)直到不再接收到命令字符串。
本实施例的步骤S2)中,所述参数包括符号整数、有符号整数、32位浮点、字符串、函数指针中的一种或多种。
本实施例的步骤S3)中,所述特殊命令函数的格式为generalFuc(void(*fuc)(),char*format,...),其中void(*fuc)()为从map文件查找到的待执行函数入口地址,char*format所指向的字符串包含待执行函数的参数个数和类型信息,该字符串由转换说明符组成,…为可变参数,此外,步骤S3)中所述函数名为特殊命令函数时,将将对应的参数处理包括以下步骤:根据当前可变参数的地址获取当前可变参数的值并保存,遍历format字符串,分析当前可变参数的类型并记录当前可变参数的类型信息,根据当前可变参数的类型得到当前可变参数占用的内存,将当前可变参数的地址与当前可变参数占用的内存相加得到下一可变参数的地址。
本实施例的步骤S4)中,所述系统命令包括帮助指令、打印函数列表指令、显示数字类型十进制/十六进制转换指令中的一种或多种。
本实施例的方法具有以下优点:
1、独立于任何内核从而方便移植使用;
2、对硬件要求不高,如常见的串口即可胜任;
3、能够覆盖技术人员在没有仿真器或者现场环境不允许使用仿真器的情况下研发调测过程中的基本需求,从而提高定位问题的速度;
4、扩展性较方便,只需简单修改特殊命令函数代码即可扩展命令。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

Claims (7)

1.一种用于轻量级嵌入式系统的调试方法,其特征在于,包括以下步骤:
S1)通过串口或网口接收以特殊字符为结束符的命令字符串,根据特殊字符断帧,得到当前指令;
S2)解析并提取出当前指令中的函数名和参数信息,将所述函数名和参数信息匹配预先注册好的函数名列表,若存在匹配结果则执行步骤S3),若不存在匹配结果则执行步骤S4);
S3)若所述函数名不为特殊命令函数,跳转到对应的函数入口地址,将对应的参数处理后执行函数,跳转步骤S5);若所述函数名为特殊命令函数,跳转到特殊命令函数入口地址,获取函数名之后的待执行函数的入口地址信息,将对应的参数处理后,跳转到待执行函数的入口地址执行函数,跳转步骤S5);
S4)若所述函数名不为系统命令,终止解析并返回错误信息,跳转步骤S5);若所述函数名为系统命令,执行对应的系统功能,跳转步骤S5);
S5)返回步骤S1)直到不再接收到命令字符串。
2.根据权利要求1所述的用于轻量级嵌入式系统的调试方法,其特征在于,所述特殊命令函数的格式为generalFuc(void(*fuc)(),char*format,...),其中void(*fuc)()为从map文件查找到的待执行函数入口地址,char*format所指向的字符串包含待执行函数的参数个数和类型信息,该字符串由转换说明符组成,…为可变参数。
3.根据权利要求2所述的用于轻量级嵌入式系统的调试方法,其特征在于,步骤S3)中所述函数名为特殊命令函数时,将将对应的参数处理包括以下步骤:根据当前可变参数的地址获取当前可变参数的值并保存,遍历format字符串,分析当前可变参数的类型并记录当前可变参数的类型信息,根据当前可变参数的类型得到当前可变参数占用的内存,将当前可变参数的地址与当前可变参数占用的内存相加得到下一可变参数的地址。
4.根据权利要求1所述的用于轻量级嵌入式系统的调试方法,其特征在于,步骤S2)中,所述参数包括符号整数、有符号整数、32位浮点、字符串、函数指针中的一种或多种。
5.根据权利要求1所述的用于轻量级嵌入式系统的调试方法,其特征在于,步骤S4)中,所述系统命令包括帮助指令、打印函数列表指令、显示数字类型十进制/十六进制转换指令中的一种或多种。
6.一种轻量级嵌入式系统,其特征在于,包括对外接口以及mini-shell模块,所述mini-shell模块通过对外接口与PC端连接,所述对外接口为网口或串口,所述mini-shell模块被配置以执行以下步骤:
通过串口或网口接收以特殊字符为结束符的命令字符串,根据特殊字符断帧,得到当前指令;
解析并提取出当前指令中的函数名和参数信息,将所述函数名和参数信息匹配预先注册好的函数名列表;
若存在匹配结果,且所述函数名为特殊命令函数,跳转到特殊命令函数入口地址,获取函数名之后的待执行函数的入口地址信息,将对应的参数处理后,跳转到待执行函数的入口地址执行函数;若不存在匹配结果,且所述函数名为系统命令,执行对应的系统功能。
7.根据权利要求6所述的轻量级嵌入式系统,其特征在于,所述mini-shell模块还被配置以执行以下步骤:
若存在匹配结果,且所述函数名不为特殊命令函数,跳转到对应的函数入口地址,将对应的参数处理后执行函数;若不存在匹配结果,且所述函数名不为系统命令,终止解析并返回错误信息。
CN202211592017.1A 2022-12-12 2022-12-12 一种用于轻量级嵌入式系统的调试方法及系统 Pending CN116126690A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211592017.1A CN116126690A (zh) 2022-12-12 2022-12-12 一种用于轻量级嵌入式系统的调试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211592017.1A CN116126690A (zh) 2022-12-12 2022-12-12 一种用于轻量级嵌入式系统的调试方法及系统

Publications (1)

Publication Number Publication Date
CN116126690A true CN116126690A (zh) 2023-05-16

Family

ID=86296433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211592017.1A Pending CN116126690A (zh) 2022-12-12 2022-12-12 一种用于轻量级嵌入式系统的调试方法及系统

Country Status (1)

Country Link
CN (1) CN116126690A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111459827A (zh) * 2020-04-07 2020-07-28 长沙景嘉微电子股份有限公司 一种跨平台调试shell的实现方法、装置和计算机

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111459827A (zh) * 2020-04-07 2020-07-28 长沙景嘉微电子股份有限公司 一种跨平台调试shell的实现方法、装置和计算机

Similar Documents

Publication Publication Date Title
US8370531B1 (en) Method and system for accessing objects defined within an external object-oriented environment
KR100763177B1 (ko) 자바 가상 머신의 명령어 수행 방법 및 그 장치
CN108491207B (zh) 表达式处理方法、装置、设备及计算机可读存储介质
US20200257524A1 (en) Generating interaction libraries
CN114116134A (zh) 智能合约部署和执行方法、设备及存储介质
CN116126690A (zh) 一种用于轻量级嵌入式系统的调试方法及系统
CN106293687B (zh) 一种打包流程的控制方法,及装置
RU2634171C1 (ru) Способ выполнения кода интерпретатором
US7428729B2 (en) Methods, systems, and computer program products for integrating legacy applications into a platform-independent environment
CN111913741B (zh) 对象拦截方法、装置、介质及电子设备
CN113168320A (zh) 用类选择性替换遗留加载模块程序以在java虚拟机中执行
CN114398102B (zh) 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质
CN110659022A (zh) 一种基于Java自动调用Python脚本的方法
EP3333746B1 (en) System and method of execution of code by an interpreter
US11169783B2 (en) System and method for generating an executable hardware-software interface specification
CN111273913B (zh) 一种输出规范表示的应用程序接口数据的方法及装置
RU2659742C1 (ru) Способ эмуляции исполнения файлов, содержащих инструкции, отличные от машинных
CN117093227B (zh) 一种用于执行智能合约的方法及装置
WO2024069772A1 (ja) 解析装置、解析方法および解析プログラム
CN109492354A (zh) 一种混淆代码的方法、装置及系统
JP7355211B2 (ja) シグネチャ生成装置、シグネチャ生成方法およびシグネチャ生成プログラム
RU2659734C1 (ru) Способ эмуляции исполнения файлов
Zhou et al. Development of a PLC virtual machine orienting IEC 61131-3 standard
US11989291B2 (en) System, method, and apparatus for software verification
JPH09179738A (ja) オブジェクト指向言語処理方法及び処理装置

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