一种嵌入式系统交叉调试方法和装置制造方法及图纸

技术编号:15746483 阅读:65 留言:0更新日期:2017-07-03 01:54
本发明专利技术涉及一种嵌入式系统交叉调试方法,包括以下步骤:步骤S1:上电启动,加载运行操作系统;步骤S2:判断是否要更新程序,若是则进入步骤S3,若否则进入步骤S9;步骤S3:操作系统加载并运行程序更新模块;步骤S4:JTAG下载修改后的应用程序到内存;步骤S5:JTAG写入程序信息到预定内存;步骤S6:程序更新模块根据程序信息将内存的应用程序写入外存固件区;步骤S7:在固件区文件系统目录项中添加一条指向应用程序的记录;步骤8:提示更新结束并重启;步骤S9:进入正常的应用加载状态,从固件区文件系统目录项的末尾往前检索应用对应的最新目录项;步骤S10:通过最新目录项加载应用程序并运行调试。本发明专利技术还提供一种用于实现上述方法的装置。

Method and device for cross debugging of embedded system

The invention relates to a cross debugging method of embedded system, which comprises the following steps: step S1: electric start, loading and running operating system; step S2: to determine whether or not to update the program, if it is to step S3, if not to step S9; step S3: operating system to load and run the program to download the application to modify the update module; after the step S4:JTAG into memory; step S5:JTAG write program information to a predetermined memory; step S6: program update module according to the program information application memory write disk firmware zone; step S7: add a record to the application firmware file system directory entry; step 8: tip end of update and restart step S9: enter the application; loading state of normal, the new directory entry on retrieval application from the corresponding firmware at the end of the file system directory; Step S10: load the application with the latest directory entry and run the debug. The invention also provides a device for implementing the method.

【技术实现步骤摘要】
一种嵌入式系统交叉调试方法和装置
本专利技术涉及一种调试方法和装置,特别是一种高效的嵌入式系统交叉调试方法和装置。
技术介绍
嵌入式系统交叉调试方法一般分为两种,一种是基于JTAG的片上调试方法,一种是基于调试代理的远程调试方法。请参阅图1,其为基于JTAG的片上调试方法的连接框图。JTAG是一种国际标准芯片测试协议,目前大多数CPU体系都支持JTAG。基于JTAG的片上调试方法最突出的代表就是JLink调试器,其定义了一个软件调试层面的RDI接口标准,然后JLink调试器将调试环境软件(IAR、KEIL等)发出的RDI接口转化为JTAG命令,对芯片进行调试。该方法多适用于嵌入式系统底层驱动调试、裸系统调试和单应用调试。请参阅图2,其为基于调试代理的远程调试方法的连接框图。基于调试代理的远程调试方法是在目标机上运行一个调试代理程序,与宿主机的调试器进行通信交互,一起配合完成调试的任务。该方法主要使用软件陷入来模拟断点以接管CPU来完成调试,GDB远程调试是主要代表。一般地,基于调试代理的远程调试方法有两种方式。一种是gdbserver,其能在目标机的系统上独立运行,用于调试有操作系统的应用程序;另一种是stub,其和嵌入式系统程序一起链接运行,一般用于调试系统程序。其中,Gdbserver比较容易,但需要操作系统支持;stub调试比较难,需要针对具体的芯片体系进行移植。两者的工作原理是相似的,GDB调试基于串口协议或者TCP/IP协议。由于调试代理、串口驱动或者TCP/IP驱动需要占用大量的内存空间,因此该方法一般用于内存资源比较丰富的嵌入式系统的调试。嵌入式系统一般分资源宽裕型系统和资源紧缺型系统,前者CPU处理能力强、内存资源丰富(一般在M字节级以上),如能支持Linux内核运行的嵌入式系统,而其一般都是选用基于调试代理的远程调试方法来进行开发;而后者的CPU处理能力一般、内存资源有限(一般在100K字节以下),多见于单片机控制器类成本敏感的消费类电子系统,系统程序难以和stub程序一起在内存中运行,因此难以选择基于调试代理的远程调试方法来进行开发,而是选择基于JTAG的片上调试方法或者直接串口打印的方式来进行调试。但是,在资源紧缺型嵌入式系统上,针对带操作系统(如基于UCOS内核、FreeRTOS内核)的应用程序进行调试,基于JTAG的片上调试方法也是难以胜任的。特别是对将应用程序存入外存(这也是极大地节省内存成本的常用手段),在需要运行时才进行加载的嵌入式系统,基于JTAG的片上调试方法的效率是比较低的。例如以下场景:一般带嵌入式操作系统的电子产品往往都具有多个应用,例如一些带LCD屏的音频播放器,它除了有音乐应用,也有图片应用、FM应用、电子书应用等等,同时还可以充当一个U盘进行文件拷贝。该系统同时可能运行一到两个应用,例如听音乐看电子书,而其他应用则不能同时运行。这些应用程序和操作系统、UI资源文件、配置文件都是存在于外存(如nandflash或者norflash)的固件区,对使用用户不可见;而音乐文件、电子书等则是存在于外存的用户区,对使用用户可见。从中可看成,各个应用程序是分时复用宝贵的内存资源。由于成本敏感,内存资源的大小是经过精心设计的。对于单个应用程序,也会将代码分为常驻内存类型和可切换类型。例如,对性能影响比较大的解码部分代码就需要常驻内存,而选择文件相关的代码则可以在需要时才加载到内存。同时,还可能固化一部分内核的代码以节省内存。这样,就能做到以100K左右的内存来支撑整个系统的运行。这类系统最大的特点就是:应用程序在非运行状态时存储在外存中,在应用运行时才会被操作系统加载到内存中,同时对可切换类型的代码进行调度切换。如果要调试这种带操作系统类型的应用程序,由于内存的原因,是不可能选择基于调试代理的远程调试方法的;而在选择基于JTAG的片上调试方法时则会遇到以下问题:由于没有STUB在目标机运行,所以基于JTAG的片上调试方法只能通过JTAG协议接口来对内存进行读写。而上述应用程序包括常驻代码和可切换类型代码,在未运行时需要存储到外存中,在需要的时候才能由定制的操作系统加载到内存中。很明显,JTAG接口无法将代码写到外存中去。因此,需要通过其他的手段将固件(包括操作系统、所有的应用程序、UI资源文件、配置文件)烧写到固件区,才能使用基于JTAG的片上调试方法进行调试。即基于JTAG的片上调试方法不能满足这类系统的写外存需求,只能先通过其他方式写外存之后,再使用JTAG进行调试(读内存、设置断点等)。请同时参阅图3,其为现有技术中调试带操作系统类型的应用程序的流程图。因此,调试这种带操作系统类型的应用程序一般的流程如下:(1)调试过程中遇到问题,停止调试,修改程序,编译链接该应用程序。(2)打包固件,将操作系统、所有的应用程序、UI资源文件、配置文件等打包成一个固件。(3)烧写固件,一般使用USB量产工具,或者直接的外存烧写工具。(4)启动系统,并运行到该程序,进入调试状态。然而,现有技术的这种调试方式最大的问题就是效率很低。因为每次修改程序,都要重新打包整个固件,一般要耗费10分钟,甚至更长;同时,还要重新烧写整个固件,烧写前还要先擦除外存,这里也要耗费不少时间。另外,由于烧写固件和JTAG调试是两套不同的工具,来回切换也需要消耗不少时间。
技术实现思路
本专利技术的目的在于克服现有技术的缺点与不足,提供了一种能够高效地进行调试的嵌入式系统交叉调试方法和装置。本专利技术通过以下的方案实现:一种嵌入式系统交叉调试方法,包括以下步骤:步骤S1:上电启动,加载并运行操作系统;步骤S2:判断是否有接收到进入“更新程序”的触发命令,若是,则进入步骤S3;步骤S3:操作系统加载程序更新模块及外存对应的驱动程序,并运行该模块程序,接管CPU控制权;步骤S4:利用JTAG下载修改后的应用程序到内存;步骤S5:利用JTAG写入应用程序名称、写入内存的起始地址、应用程序大小三个信息到预定内存地址;步骤S6:当程序更新模块监控到所述预定内存发生变化后,解析该预定内存中的内容,将之前写入到内存中的应用程序(步骤S4)写入到外存的固件区;步骤S7:在系统固件区的文件系统目录项中添加一条指向新增应用程序的目录记录。作为本专利技术的进一步改进,还包括步骤S8:通过LED灯提示更新结束,并执行系统重启。作为本专利技术的进一步改进,在步骤S2中,当判断没有接收到进入“更新程序”的触发命令时,执行以下步骤:步骤S9:进入正常加载状态,从外存固件区文件系统的目录项末尾开始往前检索对应的应用目录项,最先检索到的目录项即是最新的应用程序对应的目录项;步骤S10:根据最新目录项加载最新的应用程序,并开始运行该应用程序;步骤S11:再次启动JTAG调试,进入正常的调试状态。本专利技术还提供了一种嵌入式系统交叉调试装置,包括:启动模块,用于加载并启动操作系统;判断加载模块,用于判断是否有接收到进入“更新程序”的触发命令;如果收到,则进入程序更新状态,由操作系统加载程序更新模块并运行;如果没收到,则进入正常的应用加载状态。程序更新模块,对预订内存块的内容进行监控。若监控到所述预定内存发生变化后,解析该预定内存中的内容,将之前通过JTAG写本文档来自技高网
...
一种嵌入式系统交叉调试方法和装置

【技术保护点】
一种嵌入式系统交叉调试方法,其特征在于,包括以下步骤:步骤S1:上电启动,加载运行操作系统;步骤S2:判断是否有接收到进入“更新程序”的触发命令,若是,则进入步骤S3;步骤S3:操作系统加载程序更新模块及外存对应的驱动程序,并运行该模块程序,接管CPU控制权;步骤S4:利用JTAG下载修改后的应用程序到内存;步骤S5:利用JTAG写入应用程序名称、写入内存的起始地址、应用程序大小三个信息到预定内存地址;步骤S6:当程序更新模块监控到所述预定内存发生变化后,解析该预定内存中的内容,将之前写入内存中的应用程序写到外存的固件区;步骤S7:在该固件区的文件系统目录项中添加一条指向新增应用程序的目录记录。

【技术特征摘要】
1.一种嵌入式系统交叉调试方法,其特征在于,包括以下步骤:步骤S1:上电启动,加载运行操作系统;步骤S2:判断是否有接收到进入“更新程序”的触发命令,若是,则进入步骤S3;步骤S3:操作系统加载程序更新模块及外存对应的驱动程序,并运行该模块程序,接管CPU控制权;步骤S4:利用JTAG下载修改后的应用程序到内存;步骤S5:利用JTAG写入应用程序名称、写入内存的起始地址、应用程序大小三个信息到预定内存地址;步骤S6:当程序更新模块监控到所述预定内存发生变化后,解析该预定内存中的内容,将之前写入内存中的应用程序写到外存的固件区;步骤S7:在该固件区的文件系统目录项中添加一条指向新增应用程序的目录记录。2.根据权利要求1所述嵌入式系统交叉调试方法,其特征在于:还包括步骤S8:通过LED灯提示更新结束,并执行系统重启。3.根据权利要求1所述嵌入式系统交叉调试方法,其特征在于:在步骤S2中,当判断没有接收到进入“更新程序”的触发命令时,执行以下步骤:步骤S9:进入正常的应用加载状态,从外存固件区的文件系统目录项末尾开始往前检索对应的应用目录项;最先检索到的目录项即是最新的应用程序对应的目录项;步骤S10:通过最新目录项加载最新的...

【专利技术属性】
技术研发人员:黄鑫吴跃前薛云王德明朱衡德
申请(专利权)人:华南师范大学
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1