嵌入式LINUX系统的静/动态集成调试模式

发布者:Yaqi最新更新时间:2021-05-18 来源: eefocus关键字:嵌入式  LINUX系统  动态 手机看文章 扫描二维码
随时随地手机看文章

现有的嵌入式LINUX系统开发过程中,所有的工程师都疲惫于使用两种不同的调试模式分别调试系统的内核和应用程序。首先通过一个JTAG调试工具来配置和启动LINUX系统;嵌入式LINUX系统正常运行起来后,就要通过GDB来继续调试工作。


LAUTERBACH公司综合了上述两种传统调试技术特长提供了一种新的LINUX调试技术。


本文以ARM架构上的LINUX系统开发为例,详细介绍和对比这三种不同的调试模式的实现和应用。


静态调试模式


通过JTAG调试接口进行软件调试的工具一般都只能工作在静态调试模式下,处理器和整个系统都必须被同时挂起。然后调试工具通过JTAG接口把处理器和目标系统的当前状态获取并显示出来(如图1所示)。



静态调试模式具有如下的优点:


● 静态调试模式唯一的环境需求就是目标系统必须支持JTAG调试标准,该调试模式最大的优点就是可以支持从复位向量表开始调试;


● 只要调试工具支持LINUX和MMU调试,就可以实现对LINUX内核及进程越界等问题的调试;


● 如果软件异常,随时可以挂起处理器,查看当前错


误代码及系统状态;


● 因为处理器处于挂起状态,内核和其它进程都不会再对系统造成任何的干扰。


然而静态调试模式也有其不足之处,一旦处理器被挂起,所有的通信接口进程同时被终止。造成的结果就是所有通过Ethernet、Bluetooth或者CAN等接口和处理器进行通信的外部设备, 都会因为等待响应超时而中断连接。因此通过静态模式进行调试时,即使你只调试其中的一个进程或函数,也有可能改变整个系统的状态和配置;接下来再继续运行和调试程序,就无法保证系统的完整性和连续性,所以后续的调试可能就没有任何意义。


动态调试模式


GDB 调试模式是嵌入式LINUX系统的通用的动态调试模式。 在该模式下,可以实现只对当前进程挂起,系统的内核和其它的所有进程都继续处于运行状态。


然而GDB是一个纯粹的软件调试工具,同时需要下面的软件环境才可以实现:


● 目标系统上要有活动的GDB Server LINUX进程


● 主机端要有相应的调试软件,例如TRACE32(如图2所示)



TRACE32与GDB Server通过RS232或者Ethernet接口进行通信,收集当前被挂起的进程的状态信息。但是要实现动态调试模式,还必须建立在如下两个条件都成立的基础之上:


● 目标系统已经被完全正确的初始化并正确启动


● GDB Server 永远处于活动状态——即通信接口已经正确运行,处理器或GDB Server不会被其它程序错误的挂起


综上所述,两种调试模式都有各自的优点和不足,静态调试模式比较容易实现,操作也比较简单,但是无法保证系统的连续和完整性;动态调试模式环境需求比较复杂。因此,LAUTERBACH提供了可以实现上述两种调试模式的调试工具,在完全克服了各自的缺陷的同时充分发挥了各自的优势,实现了嵌入式LINUX调试技术的飞跃。


集成的静态和动态调试模式


针对嵌入式LINUX系统,支持集成的静态和动态调试模式的TRACE32调试工具工作原理如下(如图3所示):



1. TRACE32调试工具通过JTAG接口进入静态调试模式。在静态模式下首先完成对目标系统的硬件和动态调试模式(GDB)的环境配置。


2. 如果目标系统初始化和启动程序是调试重点,就使用静态调试模式进行调试。


3. 目标系统正确启动完成后,TRACE32可以切换为动态调试模式,从而实现对应用程序的动态调试。


4.如果在动态调试过程中,需要对系统重新做新的配置和初始化。TRACE32也支持随时再把系统切换到静态调试模式。


同时,由于集成的静态和动态调试模式的实现,下面的许多新属性也被添加到动态调试模式里。


● 对于基于ARM架构的处理器,可以以调试通信通道(DCC)为动态调试模式的信息通信接口。这样只需要一个JTAG接口就可以支持集成的静态和动态调试模式。


● 对两个或多个进程进行同时调试。


将DCC作为通信接口


ARM的架构下,JTAG接口中已经包含DCC通信接口。当应用程序在目标处理器上运行时,从原理上讲通过DCC实现如下两个模块间信息通信是完全可行的。


● 主机端的调试软件


● 目标系统上的任何应用程序—通过GDB Server


因此,如果TRACE32 采用DCC 作为和GDB Server 通信的接口,就不再需要额外的通信接口来实现对动态调试模式的支持(如图4所示)。



多个进程同时调试


在实际的调试过程中,经 常需要对多个进程进行同时的调试。为了实现该属性,LAUTERBACH为动态调试模式提供了T32Server模块。如果T32Server作为一个LINUX的进程从终端窗口中被启动,就可以实现如下的命令和操作:


● 启动进程(TASK.RUN)


● 选择运行进程(TASK.SELECT)


● 停止进程(TASK.KILL)



当一个进程被启动并选中后,T32Server就会给每个进程分配一个独立的GDB Server(如图5所示),再配合上面的三条TASK操作命令就可以实现多个进程的同时调式。用户可以通过命令(TASK.LIST)查看当前的进程信息。


关键字:嵌入式  LINUX系统  动态 引用地址:嵌入式LINUX系统的静/动态集成调试模式

上一篇:基于嵌入式ARM9的USB通信设计与实现
下一篇:基于CAN总线的送经卷取的系统设计

推荐阅读最新更新时间:2024-11-06 12:32

基于OHCI的嵌入式USB主机控制器接口实现
1 引言     当前有关 USB 的开发,大多是针对USB 外设或是USB 高层驱动程序开发,少数基于单 片的无OS(operating system)的USB 主机开发大都是由个人完成,其软件的耦合度高、接 口不够清晰、可重用性低。而LINUX 中的USB 主机驱动程序由于其复杂性和对系统的依赖 性,对其在无OS 平台上的移植带来了一定的困难。论文以Compaq、Microsoft 等公开的 USB 主机控制器接口规范为基础,遵循USB 主机的协议规范,开发了独立于操作系统的USB 主机底层驱动程序,并在S3C2410 平台上得到了验证。下面详细论述主机控制器接口规范及 驱动程序实现。 2 USB 体系结构    
[嵌入式]
嵌入式单片机PPP协议的应用研究
  PPP协议(Point-to-Point Protocol)提供了在串行点对点链路上传输数据报的方法,支持异步8位数据及位导向的同步连接(如ISDN)。它提供了一种管理两点间会话的有效方法,正在取代SLIP(Serial Line InteRFace Protocol)协议成为点对点网络的标准。   嵌入式单片机PPP协议是在单片机中嵌入PPP协议,以实现单片机与计算机之间的PPP数据传输,使它既可以作为PPP连接的客户端,也可以作为独立的PPP服务器端来使用。它在家电控制和小型数据传输系统中具有非常广阔的应用前景,并且具有成本低、传输稳定等特点,是当前单片机研究的热门话题之一。    1 PPP的工作原理   P
[嵌入式]
军用嵌入式系统的可靠性设计
0 引言 目前用于机电一体化和工业自动控制的嵌入式系统,最早出现在20世纪60年代的武器控制系统之中,后来逐步用于军事指挥和通信。到了上世纪80年代,美军先进的武器系统基本都装备了嵌入式计算机。之后又经过几十年的发展,如今的嵌入式系统已广泛应用在各国军队的武器控制、指挥控制以及各种通信装备、野战指挥作战等专用设备上。 1 可靠性是军用嵌入式系统的重要因素 嵌入式系统往往工作环境恶劣、受电噪声干扰较大,而且随着软件越来越复杂,系统运行不稳定的现象愈来愈严重,因此,可靠性已经成为衡量嵌人式系统优劣的重要因素;军用嵌入式系统更应高度重视其可靠性设计、测试和评估技术,应把可靠性作为嵌入式系统最重要的指标优先考虑。这一方面是因为嵌入式
[嵌入式]
嵌入式Linux下ARM处理器与DSP的数据通信
摘要:本文通过一个开发实例详细说明如何通过DSP的HPI接口与运行Linux操作系统的ARM架构处理器进行数据通信。给出接口部分的实际电路和ARM-Linux下驱动程序的开发过程。 关键词:设备驱动程序 嵌入式Linux HPI ARM DSP 1 引言 基于ARM核心处理器的嵌入式系统以其自身资源丰富、功耗低、价格低廉、支持厂商众多的缘故,越来越多地应用在各种需要复杂控制和通信功能的嵌入式系统中。 内核源码开放的Linux与ARM体系处理器相结合,可以发挥Linux系统支持各种协议及存在多进程调度机制的优点,从而使开发周期缩短,扩展性增强。作为数字处理专用电路,DSP的数字信号处理能力十分强大,但对诸如任务管理、通信、
[应用]
休眠的嵌入式操作系统启动自动运行目标脚本和应用程序
  本文介绍了一种新方法,实现了基于休眠的嵌入式操作系统启动后,可自动运行任何形式的目标脚本和应用程序。为了提高系统的启动速度,通常采用基于休眠技术的方式来实现嵌入式系统的快速启动 。例如,在一些数字电视中,采用休眠技术以后的启动时间要比原来的启动时间约快1/3 。但基于休眠技术的启动方法有其不足之处:在保存内存内容时只能把内存中的信息以快照的形式保存到磁盘或其他外部存储设备,原来系统内某些正在运行的动态进程及进程本身的执行过程不能被完全保存下来,从而导致系统重新启动后此部分进程不能正常运行;基于休眠技术的启动方式一旦以快照的形式保存后其里面的内容将无法改动。   1 休眠唤醒后程序自动运行的方法   最新的Lin
[单片机]
休眠的<font color='red'>嵌入式</font>操作系统启动自动运行目标脚本和应用程序
嵌入式设计中将FRAM用作闪存的替代方案
如今,有多种存储技术均具备改变嵌入式处理领域格局的潜力。然而,迄今为止还没有哪一种技术脱颖而出成为取代微控制器(MCU)中闪存技术的强劲竞争者,直到FRAM的出现这种情况才得以改变。铁电随机存取存储器(FRAM)是一种非易失性的独立型存储技术,本文将论述FRAM的主要技术属性,同时探讨可充分展现FRAM优势的具体用例。    FRAM是什么   FRAM为非易失性存储器,其功耗、可写入次数、读/写速度均与常用的静态RAM(SRAM)很相似。存储在FRAM单元中的信息对应于铁电晶体的极化状态,即使在电源移除之后亦能保存其内容。正是这一特点使FRAM拥有了真正的非易失性。而且,与闪存单元的编程相比,晶体极化所需的电能消耗相对较低,因此
[模拟电子]
在<font color='red'>嵌入式</font>设计中将FRAM用作闪存的替代方案
基于单片机的嵌入式系统网络接入方案
  引言   在网络技术应用日益广泛的今天,网络传输是最经济有效的 数据 传输方式。如何利用廉价的51 单片机 来控制网卡芯片进行数据传输,加载TCP/IP 协议 连接到互联网,实现网络通信成了众多设计者的目标。但由于指令及资源的限制,实施过程会有许多困难。我们在设计方案中舍弃了耗费资源的高级协议,采用发送小数据包的方式以避免分段,来简化TCP协议和UDP协议,实现互联接入。   硬件设计与实现    系统 的硬件结构框图如图1所示。本系统的微控制器是Winbond公司的78E58,网络接口芯片是与NE2000系列兼容的Realtek公司的RTL8019AS。RTL8019AS内置了10BASE-T收发器,外接一个隔
[网络通信]
[S3C6410-00]嵌入式linux开发环境搭建
这篇文章是对之前的一个小结,涉及到的东西是从事嵌入式linux开发中最基本的环境搭建问题,后续我会把自己总结的东西都放到网上。闲话少说,开始进入主题。 从事嵌入式linux开发,最基本的工具无非就是Host-Windows系统,VisualMachine-VMWare和Board。本文主要是如何将三者有效结合在一起,提高工作效率。 step00 :准备的软件 Host :Windows XP SP3 VM :VMWare8.0 Board :OK6410 Linux :Fedora13 step01 :安装软件 安装好以上软件,是一件很容易的事,在此就略过。 但在安装Fedora13时,记住最好
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved