CN103024777A - 一种非入侵式的无线传感器网络调试装置及调试方法 - Google Patents
一种非入侵式的无线传感器网络调试装置及调试方法 Download PDFInfo
- Publication number
- CN103024777A CN103024777A CN2012104600299A CN201210460029A CN103024777A CN 103024777 A CN103024777 A CN 103024777A CN 2012104600299 A CN2012104600299 A CN 2012104600299A CN 201210460029 A CN201210460029 A CN 201210460029A CN 103024777 A CN103024777 A CN 103024777A
- Authority
- CN
- China
- Prior art keywords
- function
- debugging
- wireless sensor
- data structure
- module
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种非入侵式的无线传感器网络调试装置及调试方法,该方法利用跳转数据结构将直接调用函数转换为间接调用函数,调试代理在进行远程调试时,所述跳转数据结构根据调试命令所指定的函数的地址在内存中生成该函数的镜像函数,通过修改跳转数据结构的函数值在内存的镜像函数中查找调试指令,完成调试操作;同时,当有优先级更高的中断事件时,通过重定向机制优先处理中断命令事件,该方法避免了在远程调试阶段需要修改节点编程内存的操作,使得调试运行生命周期延长、调试运行开销小,调试命令反应快,并能够实时地对于大规模无线传感器网络进行远程调试。
Description
技术领域
本发明涉及无线自组织网络与传感器网络领域,尤其涉及一种非入侵式的无线传感器网络调试装置及调试方法。
背景技术
一个典型的无线传感器网络由大量廉价传感器节点组成,每个无线传感器节点包括传感器模块、处理器模块、无线通信模块和能量供应模块,它们能够在不同的环境中迅速被部署,通过无线自组成的形式组网,感知数据并通过无线通信以多跳中继方式汇集到数据处理中心,使人们可以不受时间、地点的限制,实时获取大量详实而可靠的环境信息。传感器节点的电源能量约束是阻碍传感器网络应用的严重问题。传感器节点通常采用微型电池提供能量,一旦电能耗尽,节点就会失效或报废。为了最大限度的节约电能,传感器节点在硬件和软件设计时都应以节能为中心,已获得更高的电源效率。
源码级别的调试器应用技术在无线传感器网络诊断中扮演着重要的角色,很多Bug仅仅出现在实际运行的系统中,而不出现在离线的测试环境里,因此,运行在实际系统中的实时调试器技术就显得尤为重要。现有技术中可以使用附加的调试硬件或者某些特定的调试语言实现,但这些技术应用到实际的大型无线传感器网络会带来不切实际的内存、能量和通信开销。
图1为现有技术中调试方法流程图。如图1所示,假设节点接收到一个断点命令,控制权首先交给调试器,等待进一步的调试操作。为了实现一个断点调试操作,该调试技术利用经典的二进制代码替换技术,在需要跳转的位置上插入jmp指令指向到一个位于编程flash中的叫做trampoline的操作块。当一 个断点到达时,调试步骤如下:
步骤101:调试器接收断点指令,跳转到trampoline块;
步骤102:保存APP(应用程序接口)的上下文;
步骤103:执行相应的指令代码等待调试命令;
步骤104:在命令结束后跳转回到原来APP执行位置上。
该调试技术执行一个调试命令需要多次写编程flash,产生较大的能量和时间开销。
针对上述问题,需要一种调试功能强大,生命周期长,运行开销小的远程代码级别调试器应用技术,来保证和支持系统的功能和应对遇到的各种事件。
发明内容
本发明要解决的技术问题是提供一种非入侵式的无线传感器网络调试装置及调试方法,通过远程代码级别的调试器技术,解决了现有技术中能量和时间开销大的问题,同时,该技术还可以实现远程控制一个或者多个节点的调试操作。
为达到上述目的,本发明是通过以下技术方案来实现的:
一种非入侵式的无线传感器网络调试方法,包括如下步骤:
在无线传感器节点设置由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端;
选择被调试的无线传感器节点并生成调试命令;
无线传感器节点的调试代理客户端接收调试命令,利用所述跳转数据结构选择执行相应的调试操作指令,所述调试操作步骤包括:
定位调试命令所指定的函数;
保存该函数在跳转数据结构中相应的函数地址;
在内存中生成该函数的镜像函数并修改跳转数据结构的函数值指向内存里的镜像函数;
根据调试命令在内存镜像函数中查找对应的指令进行调试;
调试结束后通过修改跳转数据结构的函数值指向原来的函数地址。
进一步地,所述“在无线传感器节点设置由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端”还包括,设置一中断处理数据结构和一个重定向处理数据结构,并将所述中断处理数据结构和重定向数据处理结构设置到无线传感器节点,所述中断处理数据结构用于对中断事件进行分析,判断中断事件的优先级,当接收到的中断事件优先级高于当前处理的调试命令时,重定向处理数据结构修改原始的中断向量指向相应的中断处理程序,并在相应的中断处理程序执行结束后返回原来的中断服务程序。
进一步地,所述“由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构”的步骤包括,
编译源代码生成函数表并记录每个函数的地址;
在预先生成的跳转数据结构中定位每个函数的原始地址并标记每个间接函数调用入口的对应地址。
进一步地,所述“重定向处理数据结构修改原始的中断向量”的步骤包括,重定向处理数据结构记录中断类型和相应的中断处理程序的地址,修改原始向量指向与所述中断类型相应的中断处理程序的地址。
进一步地,所述“选择被调试的无线传感器节点并生成调试命令“包括,用户在源代码中定义一个位置信息和相应的操作,基站端生成调试命令;调试代理在进行调试时,将指定的位置信息和相应的操作转换成包括指定函数地址和相对函数起始地址偏移量的二元元素组,根据所述二元元素组查找指令具体 位置进行调试。
进一步地,所述方法能够同时选择多个无线传感器节点进行调试。
相应地,本发明还公开一种非入侵式无线传感器网络调试装置,,所述调试装置包括设置模块、接收模块、跳转模块和执行模块,
所述设置模块,与接收模块连接,用于在无线传感器节点设置由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端;
所述接收模块,分别与设置模块和跳转模块连接,用于接收由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端,及被选择调试的无线传感器节点信息及生成的调试命令;
所述跳转模块,与接收模块和执行模块连接,用于接收调试命令,利用所述跳转数据结构选择执行相应的调试操作指令;
所述执行模块,与跳转模块连接,用于执行相应的调试操作指令,所述调试操作步骤包括:
定位调试命令所指定的函数;
保存该函数在跳转数据结构中相应的函数地址;
在内存中生成该函数的镜像函数并修改跳转数据结构的函数值指向内存里的镜像函数;
根据调试命令在内存镜像函数中查找对应的指令进行调试;
调试结束后通过修改跳转数据结构的函数值指向原来的函数地址。
所述执行相应的调试操作指令的过程不需要对编程内存进行写操作。
进一步地,所述装置还包括中断模块和重定向模块,
所述中断模块,分别与接收模块、跳转模块和重定向模块连接,用于对中断事件进行分析,判断中断事件的优先级;
所述重定向模块,分别与执行模块和中断模块连接,用于在接收到的中断事件优先级高于当前处理的调试命令时,修改原始的中断向量指向相应的中断处理程序,并在相应的中断处理程序执行结束后返回原来的中断服务程序。
进一步地,跳转模块包括定位单元、映像单元、镜像单元和查询单元,
所述定位单元,与映像单元连接,用于定位调试命令所指定的函数;
所述映像单元,与定位单元和镜像单元连接,用于保存该函数在跳转数据结构中相应的函数地址;
所述镜像单元,与映像单元和查询单元连接,用于在内存中生成该函数的镜像函数并修改跳转数据结构的函数值指向内存里的镜像函数;
所述查询单元,与镜像单元连接,用于根据调试命令在内存镜像函数中查找对应的指令执行调试操作。
进一步地,所述装置能够同时选择多个无线传感器节点进行调试本发明的技术方案,利用跳转数据结构将直接调用函数转换为间接调用函数,调试代理在进行远程调试时,所述跳转数据结构根据定位调试命令所在的函数的地址在内存中生成该函数的镜像函数,通过修改跳转数据结构的函数值在内存的镜像块中查找调试指令,完成调试操作;同时,当有优先级更高的中断事件时,通过重定向机制优先处理中断命令事件,该方法避免了在远程调试阶段需要修改节点编程内存的操作,使得调试运行生命周期延长、调试运行开销小,调试命令反应快,并能够实时地对于大规模无线传感器网络进行远程调试。
附图说明
图1为现有技术中调试方法流程图;
图2为本发明非入侵式无线传感器网络调试方法的流程图;
图3为本发明非入侵式无线传感器网络调试方法示意图;
图4为本发明调试方法中利用跳转数据结构进行调试的流程图;
图5为本发明调试方法中重定向过程示意图;
图6为本发明调试方法调试生命周期示意图;
图7为本发明调试方法调试操作能量开销示意图;
图8为本发明调试插入断点操作时间开销对比示意图;
图9为本发明节点运行程序支持电压与现有节点程序支持电压的对比示意图;
图10为本发明非入侵式的无线传感器网络的调试装置结构示意图;
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
本发明提供了一种非入侵式的无线传感器网络调试应用技术,该技术使用快速跳转数据结构避免了在远程调试阶段需要修改节点编程内存的操作。图2为本发明非入侵式无线传感器网络调试方法的流程图。如图2所示,该方法包括如下步骤:
步骤201:在无线传感器节点设置由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端;
该步骤通过一个运行于基站端的二进制文件修改器完成。所述二进制文件修改器主要完成在源代码级别生成跳转数据结构和嵌入调试代理的功能。
其中,由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构的步骤包括,
编译源代码生成函数表并记录每个函数的地址;
在预先生成的跳转数据结构中定位每个函数的原始地址并标记每个间接函数调用入口的对应地址。
生成跳转数据结构详细步骤如下:(1)在编译阶段,首先为App建立一个快速跳转表(跳转数据结构)。调试器分析程序定位所有的函数,修改所有的直接调用为间接调用。而实际的函数地址写在快速跳转表里面,间接调用指向与之对应的快速跳转表的值;(2)在运行阶段,当一个调试命令到达的时候,程序跳转到了调试模式,修改函数和执行相应的调试操作。例如:print一个变量,首先复制函数块到内存里,并修改对应函数在快速跳转表里的地址使其指向内存里新函数的地址。这样做使任何函数快速的跳转到内存的新函数处。当调试命令结束的时候仅仅修改1Byte的快速跳转表就可以使程序在不修改编程内存的情况下快速的转换到原来的运行模式,实现了调试模式和用户模式的转化。
跳转数据结构设计改变了节点中被调试的程序,使得在后续的调试操作中不需要修改编程flash的内容。快速跳转数据结构可以把被调试的代码块在内存中生成镜像,并根据调试命令修改镜像块。
步骤202:选择被调试的无线传感器节点并生成调试命令;
该步骤通过一个运行于基站端的命令生成器实现。所述生成器主要是根据系统管理员的要求实时生成调试命令。用户在源代码中定义一个位置信息和相应的操作,基站端生成调试命令。比如对于某一个节点远程插入一个断点的操作。
步骤203:无线传感器节点的调试代理客户端接收调试命令,利用所述跳转数据结构选择执行相应的调试操作指令,所述执行相应的调试操作指令的过程不需要对编程内存进行写操作。
该步骤通过一个运行于传感器节点的调试代理实现。所述调试代理主要完成接收调试命令和运行相应的调试命令的功能。当特定节点通过无线自组织的多跳中继网络接收到命令之后,根据相应的命令运行调试操作。当调试代理在 进行调试时,将调试命令指定的位置信息和相应的操作转换成包括指定函数地址和相对函数起始地址偏移量的二元元素组,根据所述二元元素组查找指令具体位置进行调试
图4为本发明调试方法中利用跳转数据结构进行调试的流程图。对比图1所示的调试技术,当一个断点命令被设置之后,不同于在编程flash中插入jmp指令,本发明调试步骤包括:
步骤401:接受调试命令,定位调试命令所指定的函数;
步骤402:保存该函数在跳转表里相应的函数地址;
步骤403:在内存中生成该函数的镜像函数并修改跳转数据结构的函数值指向内存里的镜像函数;
步骤404:根据调试命令在内存镜像函数中查找对应的指令执行调试操作;
步骤405:调试结束后通过修改跳转数据结构的函数值指向原来的函数地址。
本发明的设计是基于TinyOS 2.x和TI MSP430 16xx系列MCU完成的,除此之外该设计可以很容易的扩展到其他平台上。
本发明的技术方案能够同时对多个无线传感器节点进行调试,通过跳转数据结构使得实际的调试过程完成于节点的内存中,不需要对编程内存进行写操作。
此外,当一个程序运行一个调试命令时,一个更高优先级的中断命令事件会终止调试操作引起一个不可预期的错误。例如当一个程序运行一个调试命令时,外界一个定时器中断了调试操作,改变了程序的状态将会使得调试节点导致一个未定义的结果,而且如果完全的关闭中断响应将会导致调试节点不可以接收到更进一步的调试命令。因此,为了在调试过程中支持中断响应机制,本 发明还提出了重定向机制来完成相应的功能。
所述重定向机制的实现过程:在基站端编译源代码并生成将直接调用函数转换为间接调用函数的跳转数据结构之后,设置一中断处理数据结构和一个重定向处理数据结构,并将所述中断处理数据结构和重定向数据处理结构设置到无线传感器节点的调试代理中。所述中断处理数据结构用于对中断命令事件进行分析,判断中断命令事件的优先级,当接收到的中断命令事件优先级高于当前处理的调试命令时,重定向处理数据结构修改原始的中断向量指向相应的中断处理程序,并在相应的中断处理程序执行结束后返回原来的中断事件。这种劫持中断命令事件的设计可以保证调试进程的优先级,允许调试节点优先对中断命令事件做出响应和处理。本设计方案只需要添加一个中断模块和一个重定向模块,仅仅需要276Bytes的存储空间。
下面以具体的实现环境对整个调试方法进行详细说明。
为了介绍程序编译过程,本实施例使用TelosB平台上的NesC语言作为例子。图3为本发明非入侵式无线传感器网络调试方法示意图。如图3所示,整个调试过程如下:基站端,二进制的修改器通过修改应用的二进制映像(binary image)在源代码级别上添加一个跳转数据结构将原来程序中的直接调用函数变为间接调用的函数;修改过后的程序例程被烧入到无线传感器节点,部署为一个实时运行的无线传感器网络。
典型的TelosB节点的内存结构:10KBtyes RAM位于地址空间0x1100-0x38FF;48KB的程序缓存位于地址空间0x4000-0xFFFF;中断向量和power-up起始地址位于地址空间0FFE0h-0FFFFh。一个中断向量是一个相应的中断处理程序指令序列的16位地址。为了在TelosB平台上编译程序,NesC编译器将NesC源代码编译成C代码,然后这些C代码将被MSP430GCC工具链编译 成一个目标文件。
MPS430GCC链接工具将目标文件链接到一个MSP ELF格式(类似unix系统下的可执行和可链接格式的可执行文件,目标代码,共享库和核心堆)的文件。这种ELF文件格式也是一种在嵌入式处理器中使用的二进制映像的通用对象和可执行格式。ELF格式的文件转换成ihex文件并存储在编程内存中,如.text,.data,和.bss段。
基站端,二进制文件修改器通过三步生成一个可执行二进制(image)映像:间接函数调用、生成跳转表和重定向中断。
由于需要将直接函数调用转换为间接函数调用。在编译过程中,生成一个空的跳转表,这个跳转表用来记录下一步中将要调用的函数地址。同时,向代码中添加一个调试代理端。这个调试代理负责解释调试命令和处理相关的操作。
在编译过程中,并不是所有的函数都是内联的,本发明调试器使用source-to-source的转换,在本地代码中添加编译属性。调试器记录所有函数的名字,然后编译器会不内联相关的函数。通常,一个程序包含.text(程序指令),.data部分(用于程序中数据的初始化)和.vector部分(包含中断处理程序的地址)。调试器将直接函数调用改为间接函数调用并且将函数地址存储在跳转表中。程序的内存分配过程如下:代码首先被编写到程序flash中;通过特殊的编译选项可以添加一个新的部分,调试器首先分析由代码产生的函数表,在函数表的基础上,调试器记录了每个函数的地址,之后,调试器处理程序(.text部分)找到所有的函数调用指令并用间接函数代替它们。
调试器定位跳转表中每个函数的原始地址并且在跳转表中标记了每个间接函数调用入口的对应地址。通过这种方式,间接函数调用可以回调正确的函数,而不需要写入程序flash。通过上述方式生成的代码生成传感器节点并部署他 们。
在本发明的调试器中,跳转表存储在一个新的空间(.switch段),这个空间在程序链接过程中被定义和分配。MSPGCC链接器为用户提供方便的接口以便于修改映像段的定义。这个地址空间(.switch)可以很容地根据(.data)的结束地址和跳转表的大小得到。
在中断机制的基础上,本发明调试器用一套细致的值修改原始中断向量,所述细致的值记录了中断类型和指向本发明调试器的中断处理部分。
本发明调试器使用可执行工具(hook.exe)中的重定向模块改变原始中断向量。
在重定向模块中,本发明调试器首先记录中断类型,之后跳转到钩子模块执行一些操作,并返回原来的中断程序。图5为本发明调试方法中重定向过程示意图。如图5所示,该重定向过程包括:(1)原始的中断向量值从0x403变为0x4bbe,0x4bbe指向了重定向模块;(2)重定向模块将中断类型保存在0x113a,然后跳转到中断处理程序模块((0x5c56)。以这种方式,在每个原始中断服务进行前每个中断事件被本发明调试器捕获,保证了本发明调试器的优先权。
为了生成一个调试命令,用户需要在源代码中定义一个位置和相应的操作。例如,在一行设置一个断点,用户需要定义行号。
无线传感器节点的调试代理设有一个解释器,具有解释收到调试命令的功能。不同的程序依据不同的命令执行不同的操作。调试代理接收调试命令,根据行号,节点的命令解释器确定指定代码行的函数(我们称它为代码行的host function主函数);然后根据host function的函数名称确定地址并保存在跳转表中;然后,命令解释器将行号翻译成相对于函数起始地址的偏移量,同时设置断点的命令被翻译成二元元素组<host function ID,offset>。当编译命令运 行至此,本发明调试器使用host function ID从跳转表中查找到函数地址,之后,偏移量被用来寻找中断指令的具体位置。
当本发明调试器获得控制权后,不同的调试命令由本发明调试器来处理。下面举例说明,当无线传感器节点接收到一个watch,log或者是其他类似的命令时,本发明调试器相应地改变内存(RAM)里面的代码。对于watch命令,本发明调试器调用相应的调试过程,这个调试过程查找变量的地址并查看和发送变量返回基站。这种修改方式十分容易,而且对比修改程序flash的方式是一种更为轻量级的修改方式。
当无线传感器节点接收到一个step或者一个continue命令时,控制权需要返回给用户程序。在这种情况下,传统的调试器修改程序缓存并用原来的指令替换jmp指令。在本发明调试器中,将控制权返回给用户程序是通过将跳转表中的地址恢复为原来的地址实现的。同样,这种方式不用对程序flash进行写操作。所述调试方法支持多种调试命令,如break,watch,continue等命令,同时本发明调试器也支持多种条件命令,如定时器中断等。
本发明调试器具有占用极少内存空间、时间开销小、反应快的优势的特性,其中,节点本身的内存空间(10KB的空间)就可以满足需要,而跳转数据结构仅仅需要几个比特的空间;本发明保存寄存器仅仅需要0.0177ms,切换运行模式仅仅需要0.016ms等。
此外,不同的调试命令引入的读写内存和编程内存的次数不同,而本发明调试器完全不需要对编程内存进行操作,仅仅需要极少数的RAM内存的操作就可以完成相应调试操作。
图6为本发明调试方法调试生命周期示意图。由图6可知,本发明调试器生命周期为一般的用于无线传感器网络的调试器的生命周期的3倍左右。
图7为本发明调试方法调试操作能量开销示意图。如图7所示,使用示波器查看调试操作的瞬时电压值,对比经典的调试技术,本发明调试器的反应快,开销小,远远小于现有的调试技术能量开销,节约能量96.69%。
图8为本发明调试插入断点操作时间开销对比示意图。本发明调试器在执行调试命令时,不同模块大小所引起的开销近似成线性增长,但是时间保持在ms级别。
图9为本发明节点运行程序支持电压与现有节点程序支持电压的对比示意图。如图9所示,基于MSP430MCU的TelosB节点运行程序需要的支持电压1.8V以上的电压支持,而写编程flash的操作需要2.7V以上的电压支持,本发明的技术方案不需要对编程内存进行写操作,相较于现有技术的对编程内存进行写操作的调试方法,具有更小的能量和较短的生命周期开销。
图10为本发明非入侵式的无线传感器网络的调试装置结构示意图。如图10所示,所述调试装置包括设置模块151、接收模块152、跳转模块153和执行模块154,
所述设置模块151,与接收模块152连接,用于在无线传感器节点设置由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端;
所述接收模块152,分别与设置模块151和跳转模块153连接,用于接收由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端,及被选择调试的无线传感器节点信息及生成的调试命令;
所述跳转模块153,与接收模块152和执行模块154连接,用于接收调试命令,利用所述跳转数据结构选择执行相应的调试操作指令;
所述执行模块154,与跳转模块153连接,用于执行相应的调试操作指令, 所述执行相应的调试操作指令的过程不需要对编程内存进行写操作。
此外,所述装置还包括中断模块155和重定向模块156,
所述中断模块155,分别与接收模块151和重定向模块156连接,用于对中断事件进行分析,判断中断事件的优先级;
所述重定向模块156,分别与执行模块154和中断模块155连接,用于在接收到的中断事件优先级高于当前处理的调试命令时,修改原始的中断向量指向相应的中断处理程序,并在相应的中断处理程序执行结束后返回原来的中断事件。
所述跳转模块153包括定位单元1531、映像单元1532、镜像单元1533和查询单元1534,
所述定位单元1531,与映像单元1532连接,用于定位调试命令所指定的函数;
所述映像单元1532,与定位单元1531和镜像单元1533连接,用于保存该函数在跳转数据结构中相应的函数地址;
所述镜像单元1533,与映像单元1532和查询单元1534连接,用于在内存中生成该函数的镜像函数并修改跳转数据结构的函数值指向内存里的镜像函数;
所述查询单元1534,与镜像单元1533连接,用于根据调试命令在内存镜像函数中查找对应的指令执行调试操作。
本发明的技术方案,利用跳转数据结构将直接调用函数转换为间接调用函数,调试代理在进行远程调试时,所述跳转数据结构根据定位调试命令所在的函数的地址在内存中生成该函数的镜像函数,通过修改跳转数据结构的函数值在内存的镜像块中查找调试指令,完成调试操作;同时,当有优先级更高的中 断事件时,通过重定向机制优先处理中断命令事件,该方法避免了在远程调试阶段需要修改节点编程内存的操作,使得调试运行生命周期延长、调试运行开销小,调试命令反应快,并能够实时地对于大规模无线传感器网络进行远程调试。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如:ROM/RAM、磁碟、光盘等。
上述仅为本发明的较佳实施例及所运用技术原理,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围内。
Claims (10)
1.一种非入侵式的无线传感器网络调试方法,其特征在于,包括如下步骤:
在无线传感器节点设置由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端;
选择被调试的无线传感器节点并生成调试命令;
无线传感器节点的调试代理客户端接收调试命令,利用所述跳转数据结构选择执行相应的调试操作指令,所述调试操作步骤包括:
定位调试命令所指定的函数;
保存该函数在跳转数据结构中相应的函数地址;
在内存中生成该函数的镜像函数并修改跳转数据结构的函数值指向内存里的镜像函数;
根据调试命令在内存镜像函数中查找对应的指令进行调试;
调试结束后通过修改跳转数据结构的函数值指向原来的函数地址。
2.根据权利要求1所述的非入侵式的无线传感器网络调试方法,其特征在于,所述“在无线传感器节点设置由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端”还包括,设置一中断处理数据结构和一个重定向处理数据结构,并将所述中断处理数据结构和重定向数据处理结构设置到无线传感器节点,所述中断处理数据结构用于对中断事件进行分析,判断中断事件的优先级,当接收到的中断事件优先级高于当前处理的调试命令时,重定向处理数据结构修改原始的中断向量指向相应的中断处理程序,并在相应的中断处理程序执行结束后返回原来的中断服务程序。
3.根据权利要求1或2所述的非入侵式的无线传感器网络调试方法,其特征在于,所述“由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构”的步骤包括,
编译源代码生成函数表并记录每个函数的地址;
在预先生成的跳转数据结构中定位每个函数的原始地址并标记每个间接函数调用入口的对应地址。
4.根据权利要求2所述的非入侵式的无线传感器网络调试方法,其特征在于,所述“重定向处理数据结构修改原始的中断向量”的步骤包括,重定向处理数据结构记录中断类型和相应的中断处理程序的地址,修改原始向量指向与所述中断类型相应的中断处理程序的地址。
5.根据权利要求1所述的非入侵式的无线传感器网络调试方法,其特征在于,所述“选择被调试的无线传感器节点并生成调试命令“包括,用户在源代码中定义一个位置信息和相应的操作,基站端生成调试命令;调试代理在进行调试时,将指定的位置信息和相应的操作转换成包括指定函数地址和相对函数起始地址偏移量的二元元素组,根据所述二元元素组查找指令具体位置进行调试。
6.根据权利要求1所述的非入侵式的无线传感器网络调试方法,其特征在于,所述方法能够同时选择多个无线传感器节点进行调试。
7.一种非入侵式无线传感器网络调试装置,其特征在于,所述调试装置包括设置模块、接收模块、跳转模块和执行模块,
所述设置模块,与接收模块连接,用于在无线传感器节点设置由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端;
所述接收模块,分别与设置模块和跳转模块连接,用于接收由基站端生成的将直接调用函数转换为间接调用函数的跳转数据结构和调试代理客户端,及被选择调试的无线传感器节点信息及生成的调试命令;
所述跳转模块,与接收模块和执行模块连接,用于接收调试命令,利用所述跳转数据结构选择执行相应的调试操作指令;
所述执行模块,与跳转模块连接,用于执行相应的调试操作指令,所述调试操作步骤包括:
定位调试命令所指定的函数;
保存该函数在跳转数据结构中相应的函数地址;
在内存中生成该函数的镜像函数并修改跳转数据结构的函数值指向内存里的镜像函数;
根据调试命令在内存镜像函数中查找对应的指令进行调试;
调试结束后通过修改跳转数据结构的函数值指向原来的函数地址。
所述执行相应的调试操作指令的过程不需要对编程内存进行写操作。
8.根据权利要求7所述的非入侵式无线传感器网络调试装置,其特征在于,所述装置还包括中断模块和重定向模块,
所述中断模块,分别与接收模块、跳转模块和重定向模块连接,用于对中断事件进行分析,判断中断事件的优先级;
所述重定向模块,分别与执行模块和中断模块连接,用于在接收到的中断事件优先级高于当前处理的调试命令时,修改原始的中断向量指向相应的中断处理程序,并在相应的中断处理程序执行结束后返回原来的中断服务程序。
9.根据权利要求7或8所述的非入侵式的无线传感器网络调试装置,其特征在于,跳转模块包括定位单元、映像单元、镜像单元和查询单元,
所述定位单元,与映像单元连接,用于定位调试命令所指定的函数;
所述映像单元,与定位单元和镜像单元连接,用于保存该函数在跳转数据结构中相应的函数地址;
所述镜像单元,与映像单元和查询单元连接,用于在内存中生成该函数的镜像函数并修改跳转数据结构的函数值指向内存里的镜像函数;
所述查询单元,与镜像单元连接,用于根据调试命令在内存镜像函数中查找对应的指令执行调试操作。
10.根据权利要求7或8所述的非入侵式的无线传感器网络调试装置,其特征在于,所述装置能够同时选择多个无线传感器节点进行调试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210460029.9A CN103024777B (zh) | 2012-11-15 | 2012-11-15 | 一种非入侵式的无线传感器网络调试装置及调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210460029.9A CN103024777B (zh) | 2012-11-15 | 2012-11-15 | 一种非入侵式的无线传感器网络调试装置及调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103024777A true CN103024777A (zh) | 2013-04-03 |
CN103024777B CN103024777B (zh) | 2016-07-06 |
Family
ID=47972808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210460029.9A Active CN103024777B (zh) | 2012-11-15 | 2012-11-15 | 一种非入侵式的无线传感器网络调试装置及调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103024777B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336743A (zh) * | 2013-07-25 | 2013-10-02 | 清华大学 | 一种无线传感器代码检测的方法 |
CN110245027A (zh) * | 2018-09-21 | 2019-09-17 | 浙江大华技术股份有限公司 | 一种进程间通信的方法和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281488A (zh) * | 2007-04-06 | 2008-10-08 | 上海宇梦通信科技有限公司 | Linux操作系统的内核调试方法 |
CN101916194A (zh) * | 2010-06-01 | 2010-12-15 | 浙江大学 | 一种无线传感网节点程序的部署方法 |
WO2011116448A1 (en) * | 2010-03-25 | 2011-09-29 | Irdeto Canada Corporation | System and method for dynamic, variably-timed operation paths as a resistance to side channel and repeated invocation attacks |
-
2012
- 2012-11-15 CN CN201210460029.9A patent/CN103024777B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281488A (zh) * | 2007-04-06 | 2008-10-08 | 上海宇梦通信科技有限公司 | Linux操作系统的内核调试方法 |
WO2011116448A1 (en) * | 2010-03-25 | 2011-09-29 | Irdeto Canada Corporation | System and method for dynamic, variably-timed operation paths as a resistance to side channel and repeated invocation attacks |
CN101916194A (zh) * | 2010-06-01 | 2010-12-15 | 浙江大学 | 一种无线传感网节点程序的部署方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336743A (zh) * | 2013-07-25 | 2013-10-02 | 清华大学 | 一种无线传感器代码检测的方法 |
CN110245027A (zh) * | 2018-09-21 | 2019-09-17 | 浙江大华技术股份有限公司 | 一种进程间通信的方法和设备 |
CN110245027B (zh) * | 2018-09-21 | 2024-05-14 | 浙江大华技术股份有限公司 | 一种进程间通信的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103024777B (zh) | 2016-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100430904C (zh) | Just-My-Code调试技术 | |
US20080127113A1 (en) | Method and system for implementing watchpoints | |
US5713010A (en) | Source line tracking in optimized code | |
CN109976760A (zh) | 一种图形语言的交叉编译方法及交叉编译器 | |
KR100260859B1 (ko) | 초장 명령어 워드 프로그램의 오브젝트-코드 호환가능 표현 | |
CN102063324B (zh) | 一种实现自动化编程的方法及系统 | |
JP2002099312A (ja) | プログラマブルコントローラおよび制御プログラム開発支援装置 | |
CN100492288C (zh) | 一种应用程序界面的处理方法及系统 | |
CN100465895C (zh) | 编译器、编译方法 | |
CN103077064B (zh) | 一种解析并执行程序语言方法及解释装置 | |
CN103729288A (zh) | 一种嵌入式多核环境下应用程序的调试方法 | |
JPH11338738A (ja) | ソフトウェアのエミュレ―ションおよび変換方法 | |
CN101084485A (zh) | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 | |
CN107015841B (zh) | 一种程序编译的预处理方法及程序编译设备 | |
CN102346235A (zh) | 一种面向硬件设备功能的自动测试系统及方法 | |
JP4877068B2 (ja) | ソフトウェア開発支援プログラム、ソフトウェア開発支援方法 | |
CN100456260C (zh) | 一种用于对解释语言程序进行调试方法及装置 | |
CN105094906B (zh) | 一种游戏服务器热更新方法、装置与系统 | |
CN114995226B (zh) | 一种针对航天嵌入式设备的流程控制系统及方法 | |
CN103024777B (zh) | 一种非入侵式的无线传感器网络调试装置及调试方法 | |
CN103678099B (zh) | 一种实现硬件平台与软件平台通讯的方法以及装置 | |
CN110442520A (zh) | 一种基于plc编程语言的交叉调试系统及方法 | |
CN109032607B (zh) | 基于lua脚本的机房监控实时数据解析引擎及脚本调试工具 | |
CN115658140A (zh) | 一种sdk的打包方法、装置、终端以及存储介质 | |
CN100403264C (zh) | Ttcn测试用例执行方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190614 Address after: 214145 No. 63 Hongchang Road, Hongshan Street, Xinwu District, Wuxi City, Jiangsu Province (Building 13) Patentee after: Wuxi Luye Qianchuan Technology Co., Ltd. Address before: 214135 Taike Park Sensor Network University Science Park Qingyuan Road Liye Building, Area A, Wuxi New District, Jiangsu Province 504 Patentee before: Wuxi SenseHuge Technology Ltd. |