您的位置 首页 观点

关于嵌入式处理器的在线调试办法

关于嵌入式处理器的在线调试方法-在FPGA 设计中使用嵌入式处理器软核( 如MicroBlaze、PicoBlaze 等) 构成可编程片上系统( SystemOn Programmable Chip,SOPC) ,相比于ASIC 具有更好的可修改性和可维护性,得到了普遍的应用。

FPGA 规划中运用嵌入式处理器软核( 如MicroBlaze、PicoBlaze 等) 构成可编程片上体系( SystemOn Programmable Chip,SOPC) ,比较于ASIC 具有更好的可修正性和可维护性,得到了遍及的运用。因为ARM,MicroBlaze 等大型处理器内核具有调试接口,在与之对应的调试模块合作下,调试软件能够经过JTAG 接口完成: 履行到断点处挂起、单步履行、检查处理器内部状况、检查和修正Memory空间中的数据等根本的在线调试功用。上述根本的在线调试功用对嵌入式体系的调试具有重要意义。

关于PicoBlaze 等占用资源少、规划开发简略的细巧型处理器,一般不具有调试接口,然而在SOPC体系规划中常常需求运用上述处理器。运用上述处理器时,因为没有调试接口,归于大型处理器的标准高效的调试机制不再能够运用,因而经过指令集仿真( ISS,Cycle – accurate Instruction Set SimulaTIon) 和运用仿真东西对含有处理器的体系进行软硬件协同仿真是确保规划正确性的重要途径。

关于嵌入式处理器的在线调试办法

然而在比如接纳机基带信号处理等体系的规划中,仿真所用的测验用例往往覆盖率不行,或许在发现毛病今后很难构造出与之相应的测验用例。因而迫切需求使在线调试功用能够便利地扩展到一般的处理器上。

针对上述运用需求,这儿提出的新调试办法经过引进一种通用的调试模块( Universal Debug Module,UDM) 能够使没有调试接口的处理器建立起标准的调试机制。该调试模块运用处理器的中止机制完成处理器呼应断点( breakpoint) 的机制,运用根据双端口RAM 中一种奇妙的地址映射机制完成一起对多行代码设置断点的功用,而且能够便利地完成被调试体系和调试主机之间调试信息和指令的交互。UDM 还具有易于扩展的长处,当SOPC 体系中有多个处理器时能够共用一个UDM。

关于没有调试接口的处理器现在首要是经过在软件和硬件规划中充分考虑或许的调试需求,再加上调试主机和被调试体系之间的通讯机制来完成在线调试的。这种调试形式下,调试代码需求刺进到正常程序中,将调试信息输出到调试主机,一起还能够接纳调试主机发过来的指令做出各种呼应。该办法的首要缺点是针对不同的调试需求,要不断修正正常程序中的调试代码,导致标准化和通用性程度不高。此处的UDM 在不对处理器内核做修正的状况下即可使这类处理器建立起便利的调试机制,是一种不同于干流大型处理器完成在线调试的办法。

运用UDM 的调试体系,运用与FPGA 同在一块PCB 板上的ARM、DSP 等处理器作为辅佐调试用的嵌入式处理器( 下文中简称为辅佐处理器) ,简化了UDM 与调试主机之间的通讯。经过辅佐处理器的总线接口,UDM 中的各种控制和数据寄存器被直接映射到辅佐处理器的Memory 空间。

关于嵌入式处理器的在线调试办法

在辅佐处理器开发东西的Memory 窗口直接进行数据读写操作,就可完成对UDM 的控制。因为在一块PCB 板上一起集成FPGA 和嵌入式处理器芯片是很常见的规划,因而这种通讯办法适用的规模很广。

UDM 直接作为FPGA 外部辅佐调试的嵌入式处理器的外设,如果在外部处理器总线挂接多个UDM 模块,就能完成一起对多个处理器进行调试。

UDM 经过发生调试中止( DeBug Interrupt,DI) 信号,使处理器呼应中止并调用调试服务程序( DebugRouTIne,DR) 。UDM 经过监测处理器的取指令地址( InstrucTIon Address, IA) 发生DI 信号。PicoBlaze 在运转DR 时可经过其总线接口拜访UDM,然后完成调试信息的输出和对调试指令的呼应。

发生DI 时因为处理器会当即履行DR,然后中止正常的履行流程转为为调试服务,因而决议DI 发生的机遇是完成断点机制的中心。DI 信号是经过监测处理器的取指令地址( InstrucTIon Address, IA)发生的。直接经过一个比较器将IA 与一个数据比较一次只能设置一个断点,为了处理此对立选用了如下办法: 在UDM 顶用双口RAM 存储断点装备信息,使RAM 中的每1bit 与程序存储区的一个地址对应起来,数据为1 代表设置了断点,0 代表没有。

将输入的IA 进行地址改换后对RAM 存储区寻址,使得RAM 在一端输出一个正好代表输出的地址处是否设置了断点信息,再根据此数据就可生成正确的DI 信号。在双口RAM 的别的一端,断点设置状况能够便利地被修正。这样一来能够设置的断点个数变为首要受UDM 中双口RAM 容量约束了。

只需在DR 中确保处理器不对方针程序的内外部环境形成改动,就等效于完成了处理器的挂起功用。因而,需求将DR 和方针程序的履行环境阻隔开来,这能够经过对编译器进行某些设置或强制的编码标准来完成。在处理器被挂起之后,DR 与外部调试主机通讯,经过查询指令寄存器的办法呼应调试主机宣布的各种调试指令。这些指令包含: 将有关的调试信息搬移到外部调试主机能够调查的缓存区中、修正Memory 空间中的数据、退出DR 使方针程序持续履行等。因为DR 有必要与方针程序运用彼此阻隔的资源而且小型处理器中代码容量,外部Memory空间巨细等都比较受限,因而DR 的规划应该尽或许占用较少的端口数、通用寄存器数和代码总行数。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/98503.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部