0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARM仿真调试技术:软件仿真和硬件仿真

如意 来源:CSDN 作者:杨硕 2020-06-20 09:51 次阅读

嵌入式系统的设计中,仿真应用的范围主要集中在对程序的仿真上。在ARM的开发过程中,一种最简单和原始的开发流程是:编写程序,然后烧写到芯片上验证功能,这种方法对于简单的小系统是可以对付的,但在大系统中使用这种方法则是完全不可能的。所以很多时候我们需要在不烧写代码的情况下调试程序,这就是仿真调试技术。

现代调试技术可以分为软件仿真调试和硬件仿真调试两种:

一.软件仿真(指令集仿真):

概念:

用数据结构描述目标机CPU中各个寄存器和其他资源(内存等),通过软件模拟,可以逐条指令解释执行目标机可执行映象中的程序。

应用场合:

● 当嵌入式软件开发在目标硬件平台不存在的情况下进行,就要使用这种软件来模拟目标CPU,以验证代码逻辑。

● 是学习嵌入式开发有效地工具,可以让学习者从底层具体硬件细节中解脱出来,专注于软件,尤其是与具体硬件无关的系统软件(TCP/IP协议栈)。

几个不错的硬件模拟平台:

● Skyeye:清华大学计算机系博士后陈渝发起,开源项目,主要模拟ARM内核CPU。

● ARMulator:ARM公司推出,ARM指令集模拟器(ADS,Realview MDK上就用这个)。

● ZIX:一个快捷高效、功能强大、易于配置的嵌入式Linux开发环境。

软件仿真的缺点:

无法完全仿真与硬件相关的部分,最终还要通过硬件仿真来完成最终的设计。

二.硬件仿真调试:

以前的芯片没有JTAG调试逻辑,要向仿真它就必须要有专门的仿真器,这种仿真器成本较高,而且每种芯片都不一样,现在这种仿真器已经不存在了。

现在的芯片一般都内置了JTAG调试逻辑,并不需要CPU仿真器,需要的只是一个JTAG协议转接器(现在还称其为仿真器,其实叫做调试器比较合适)。所以下面主要介绍JTAG及其仿真技术。

JTAG简介

JTAG是Joint Test Action Group的简称,该组织致力于统一芯片的测试标准,它们最初向IEEE提出了IEEE1149.1标准,后来经过IEEE批准并且标准化,所以IEEE1149.1标准又叫JTAG标准,它是一套芯片测试接口和标准,现在几乎所有的CPU核里面都会实现JTAG逻辑单元。JTAG原本是用来测试芯片设计是否正确,其基本原理就是在芯片的各个管脚上放置锁存器,然后串联起来构成移位寄存器,可以监控芯片管脚的输入和输出。后来大家发现用JTAG在线调试芯片非常方便(其实就是利用JTAG控制CPU内核),还不需要设计专门的仿真芯片,因此就出现了用JTAG调试风行的局面。

边界扫描技术(Boundary-Scan):

JTAG调试主要就是基于这种边界扫描技术。

边界扫描技术的基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上,所以被称为边界扫描寄存器 (Boundary-Scan Register Cell) 。当芯片处于调试状态的时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。

JTAG的主要作用:

检测芯片是否良好

■这是JTAG最初设计的目标

● 镜像文件的烧写功能

■可以烧写编译出来的二进制或者十六进制可执行文件到目标板的Flahs芯片上

■当开发板为裸板(没有固化任何程序)的时候,通常需要通过JTAG接口下载bootloader

■调试功能

■JTAG接口为宿主机和目标系统之间的通信、控制提供了方便的途径

ARM7TDMI调试架构:

一个调试系统通常包含三个部分:

● 调试主机

■是一台运行调试软件(ADS,Keil等)的计算机

■可以发出一些高层的调试命令,设置断点,访问内存等

● 协议转换器

■将调试主机发出的高层调试命令转换为底层的ARM JTAG调试命令

■调试目标

■基于目标芯片的开发板

ARM7TDMI典型的调试架构如下图所示:

经过协议转换器进行命令解释,主机上运行的调试软件就可以通过JTAG接口直接和目标芯片对话了。

为了支持底层的调试,ARM7TDMI提供了硬件上的调试扩展,包括:

● 停止程序的运行

● 检查和修改ARM7TDMI的内核状态

● 观察和修改内存

● 恢复程序的运行

常见ARM调试工具:

● BDI1000/2000/3000

■非常好的调试工具,可以调试ARM、MIPS、PowerPC、Xscale等多种架构处理器

■JTAG下载速度可以上兆,以太网接口

■性能优越但是价格不菲,可以调试Linux内核这种复杂的代码

● U-Link

■U-Link是Keil公司做的用于ARM和某些增强型8051单片机调试的工具

■由于Keil公司做的时候没有加密,导致现在盗版满天飞

■U-link仅仅支持Keil,JTAG下载速度20K~30K

U-Link下载程序不是简单通过JTAG,而是先用JTAG下载一段固件程序到目标板,然后再用这个固件程序和JTAG把用户代码写入Flash以提高速度

● J-Link

■J-Link是IAR公司为ARM芯片开发的调试工具

■支持RDI协议的调试工具,如Keil、ADS、IAR等

■J-Link不支持ARM10以上的内核

■JTAG下载速度400K~500K

● Multi-ICE

■ARM公司原创调试工具,支持全系列ARM芯片

■JTAG下载速度130K左右

● Wiggler电缆

■Wiggler是世界上最泛滥的一种调试工具

■结构非常简单:一片74HC244 + 一个9013 + 几个电阻

■性能一般,但是价格非常便宜

■后人又在Wiggler的硬件基础上开发了很多的调试工具,例如大名鼎鼎的H-Jtag

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8615

    浏览量

    361323
  • 仿真
    +关注

    关注

    50

    文章

    3860

    浏览量

    131956
收藏 人收藏

    评论

    相关推荐

    电路仿真软件multisim使用教程

    Multisim是一款功能强大的电路仿真软件,它为用户提供了丰富的元器件库和强大的仿真功能。
    的头像 发表于 03-29 14:08 53次阅读

    如何使用 ModelSim 进行设计仿真

    ModelSim为HDL仿真工具,我们可以利用该软件来实现对所设计的VHDL或Verilog程 序进行仿真,支持IEEE常见的各种硬件描述语言标准。可以进行两种语言的混合
    发表于 01-14 09:47 0次下载

    两种仿真软件仿真结果有差异吗

    两种仿真软件仿真结果在某些情况下可能存在差异。具体来说,仿真软件是通过模拟现实世界中的某个系统或过程来产生结果的工具。不同的
    的头像 发表于 12-28 15:37 370次阅读

    技术分享 | 验证入门黄金组合:数字仿真器与调试系统

    历史上第一款 EDA 软件SPICE,就是从仿真开始的。可以说,EDA软件从诞生之日起,就带着强烈的仿真基因。 不论是从项目的角度,或是用户的角度,数字
    的头像 发表于 12-18 13:00 207次阅读

    仿真能给你提速50%——说说系统仿真的重要性

    调试过其他同事的产品,并且把相应的链路,也量化到仿真软件里。然后花时间,验证出正确的仿真设置,仿真一些指标对接收机性能的影响。并且,在实验
    的头像 发表于 11-27 16:59 316次阅读
    <b class='flag-5'>仿真</b>能给你提速50%——说说系统<b class='flag-5'>仿真</b>的重要性

    PCB仿真软件有哪些?PCB仿真软件是如何进行LAYOUT仿真的?

    PCB仿真软件有哪些?PCB仿真软件是如何进行LAYOUT仿真的? PCB仿真
    的头像 发表于 11-24 14:51 5244次阅读

    仿真系统软件的架构是什么样的啊

    智慧华盛恒辉仿真软件的架构可以根据不同的仿真应用场景和需求而有所不同,但一般来说,以下是一些常见的仿真软件架构: 前向
    的头像 发表于 10-16 17:02 362次阅读

    仿真系统软件的架构是什么

    仿真软件的架构可以包括以下几个部分: 硬件驱动部分:负责驱动硬件,向上一层提供底层硬件的操作接口。仿真
    的头像 发表于 10-16 16:56 424次阅读

    硬件仿真开课啦!国产EDA技术公开课等你来

    面对复杂的设计代码,确保其准确性至关重要,功能验证就是非常重要的一环。通常使用的验证方法包括软件仿真硬件仿真和原型验证等。虽然软件
    的头像 发表于 09-13 08:28 400次阅读
    <b class='flag-5'>硬件</b><b class='flag-5'>仿真</b>开课啦!国产EDA<b class='flag-5'>技术</b>公开课等你来

    基于IAR for arm9.30.1在VS Code调试仿真RA

    基于IAR for arm9.30.1在VS Code调试仿真RA
    的头像 发表于 08-26 08:07 151次阅读
    基于IAR for <b class='flag-5'>arm</b>9.30.1在VS Code<b class='flag-5'>调试</b><b class='flag-5'>仿真</b>RA

    如何挑选合适的电路仿真软件工具

    微电子及集成电路技术发展日新月异,离不开EDA电子电路仿真软件的支持。每天不知有多少电路设计及验证者,使用着各种电路仿真软件工具。俗话说,工
    的头像 发表于 06-25 16:37 3023次阅读

    电磁仿真软件的应用

    今天我们一起来聊一下电磁仿真软件 当我们开始接触电磁波和微波工程的时候,第一件事就是仿真。电磁仿真可以说是一个射频工程师/微波工程师必备的技能之一。这个在射频求职的时候体现的很明白,基
    的头像 发表于 06-17 09:50 893次阅读
    电磁<b class='flag-5'>仿真</b><b class='flag-5'>软件</b>的应用

    软件仿真硬件仿真、原型验证是如何工作的?

    面对复杂的设计代码,我们如何确保其准确性?功能验证就是这场战斗的关键过程。工程师们通常使用的验证方法包括软件仿真硬件仿真和原型验证等。这些不同的验证方法都有各自的优点,也有各自的不足
    的头像 发表于 06-11 14:24 495次阅读
    <b class='flag-5'>软件</b><b class='flag-5'>仿真</b>、<b class='flag-5'>硬件</b><b class='flag-5'>仿真</b>、原型验证是如何工作的?

    讲讲仿真软件的文件导入

    仿真软件识别导入的设计文档是有区别的,实际的使用经历,ADS只是用于搭建Channel通道仿真,那本文以Cadence的Sigrity和Ansys的SIwave为例,讲讲仿真
    的头像 发表于 06-10 10:15 1924次阅读
    讲讲<b class='flag-5'>仿真</b><b class='flag-5'>软件</b>的文件导入

    DPLink仿真器-好用的ARM仿真器推荐

    于是乎,抱着为学员服务的心思,自己打算设计制作一个DPLink仿真器,DPlink为ARM开源方案,所以设计起来门槛不高。
    的头像 发表于 04-08 15:43 1050次阅读