ARM开发调试教程.

合集下载

嵌入式系统8ARM程序的调试分析解析

嵌入式系统8ARM程序的调试分析解析
5
I 指令集模拟器的调试方法
利用主机(一般是PC)的资源构建一个虚拟的目标机系统,该系统通过解释执行目标处理器的二进制代码来仿真运行目标程序VM为指令集综合模拟器ARM Armulator-模拟运行ARM指令系统Palm OS 的模拟器-模拟运行68K指令系统
6
II 操作系统模拟器的调试方法
西安电子科技大学计算机学院
32
断点的类型
硬件断点在ARM中直接设定watchpoint中的地址,当ARM运行到指定的地址时,就进入Debug状态数目受EmbeddedICE中的Watchpoint数目(2个)的限制;但是,可以在任何地方设置断点软件断点改变存储器中的ARM指令为一个特殊的数据X(ARM的未定义指令),同时,设置watchpoint中的断点数据也为X,当ARM把X数据作为指令读入的时候,ARM就进入Debug状态数目不受限制,但是,软件断点是通过替换系统的断点地址的指令实现的,所以,软件断点只能在可写的存储器的地址中设置(比如:RAM),而不能在ROM(比如:Flash)中设置
10
2.3 在目标机上驻留监控软件
1、原理(大使兼间谍)被调试的应用程序放在RAM中;监控程序(Monitor)放在ROM(flash)中;监控程序负责按主机的要求控制应用程序的执行节奏;并随时将目标机上的各种状态报告给主机。需要时可将控制权全部交给应用程序。
11
Q:单步调试怎么实现?
2、基于调试代理(Angel)的调试方法
驻留Angel是一段驻留在开发板ROM中的一段程序,系统Boot后,Angle接管整个系统并初始化系统和通信接口。通信Angel通过一定的通信协议与主机的Debugger通信。下载和移交Debugger通过特定的命令通知Angel将用户调试的程序下载到目标板的SDRAM中的特定地址,并可以按照Debugger的要求将控制权交给相应的代码地址。断点和数据上传的实现对于用户设置的断点,Angel会在断点的位置插入一条软陷指令,当用户的程序执行到断点时,系统会产生一个软陷异常。中断后可以由Angel接管系统,并将系统当前的寄存器和某些内存值传给主机Debugger。

ARM开发软件使用教程

ARM开发软件使用教程

ARM开发软件使用教程
二、工程创建
安装完成后,打开ARM开发软件,点击“新建工程”按钮。

在弹出的
对话框中,选择工程类型和工程名称,并选择工程保存的目录。

点击“确定”按钮完成工程创建。

三、代码编写
四、编译调试
五、调试工具
ARM开发软件提供了强大的调试工具,包括调试器、仿真器等。

通过
调试工具可以实时监测程序的运行状态、寄存器的值、内存的使用情况等。

在调试过程中,可以使用调试工具进行断点设置、变量监视等操作,以辅
助调试工作。

六、调试技巧
ARM开发软件的调试过程中,可以使用一些技巧提高调试效率。

比如,使用断点进行程序的停留,通过查看寄存器的变化情况来分析程序的运行
状态。

还可以使用观察窗口实时监测变量的值,通过调试输出窗口打印调
试信息等。

七、其他功能
除了上述基本功能外,ARM开发软件还提供了其他一些功能,如性能
分析、代码优化等。

性能分析功能可以帮助开发者找出程序的性能瓶颈,
对代码进行优化改进。

代码优化功能可以将代码进行优化,提高程序的执
行效率。

总结:。

ARM开发调试教程

ARM开发调试教程

ARM开发调试教程作者:李希岗创建日期:2003年5月20日修改日期:2003年5月20日版本:说明:本文是我学习ARM开发以来的一些经验总结,以自己设计的S3C44B0X板为例,给出我调试开发ARM开发板的一些最基础知识。

我只是在自己的开发板调试过并且经验有限,有些知识只能做为参考,不一定准确,就算给大家一个“例程”吧,如果大家有不同意见,希望多多指正!硬件篇(一)开发板的整体架构我设计的开发板是在三星44B0 demo板的基础上,参考网络上相关的资料,加入我的思想开发的。

以下是该开发板的整体架构:(二)开发板的焊接贴片式元器件的拆卸、焊接宜选用200~280℃调温式尖头烙铁。

贴片式电阻器、电容器的基片大多采用陶瓷材料制作,这种材料受碰撞易破裂,因此在拆卸、焊接时应掌握控温、预热、轻触等技巧。

控温是指焊接温度应控制在200~250℃左右。

预热指将待焊接的元件先放在100℃左右的环境里预热1~2分钟,防止元件突然受热膨胀损坏。

轻触是指操作时烙铁头应先对印制板的焊点或导带加热,尽量不要碰到元件。

另外还要控制每次焊接时间在3秒钟左右,焊接完毕后让电路板在常温下自然冷却。

以上方法和技巧同样适用于贴片式晶体二、三极管的焊接。

贴片式集成电路的引脚数量多、间距窄、硬度小,如果焊接温度不当,极易造成引脚焊锡短路、虚焊或印制线路铜箔脱离印制板等故障。

拆卸贴片式集成电路时,可将调温烙铁温度调至260℃左右,用烙铁头配合吸锡器将集成电路引脚焊锡全部吸除后,用尖嘴镊子轻轻插入集成电路底部,一边用烙铁加热,一边用镊子逐个轻轻提起集成电路引脚,使集成电路引脚逐渐与印制板脱离。

用镊子提起集成电路时一定要随烙铁加热的部位同步进行,防止操之过急将线路板损坏。

换入新集成电路前要将原集成电路留下的焊锡全部清除,保证焊盘的平整清洁。

然后将待焊集成电路引脚用细砂纸打磨清洁,均匀搪锡,再将待焊集成电路脚位对准印制板相应焊点,焊接时用手轻压在集成电路表面,防止集成电路移动,另一只手操作电烙铁蘸适量焊锡将集成电路四角的引脚与线路板焊接固定后,再次检查确认集成电路型号与方向,正确后正式焊接,将烙铁温度调节在250℃左右,一只手持烙铁给集成电路引脚加热,另一只手将焊锡丝送往加热引脚焊接,直至全部引脚加热焊接完毕,最后仔细检查和排除引脚短路和虚焊,待焊点自然冷却后,用毛刷蘸无水酒精再次清洁线路板和焊点,防止遗留焊渣。

第五讲 基于ARM处理器开发过程和调试原理

第五讲 基于ARM处理器开发过程和调试原理

第五讲嵌入式系统开发和调试原理Sep 2007数据处理指令-第二个操作数Sep 2007跳转的实现Sep 2007前变址和后变址寻址Sep 2007堆栈操作¾ARM的堆栈操作由块传送指令来实现Sep 2007Software Interruptspart and optional C partSep 2007ATPCS介绍-寄存器的使用规则Sep 2007第五讲嵌入式系统开发和调试原理Sep 2007嵌入式系统调试的需求Sep 2007PC 上的调试Sep 2007嵌入式系统的开发过程Sep 2007交叉编译环境Sep 2007嵌入式系统调试的一般方法Sep 2007交叉编译环境的内容Sep 2007第五讲嵌入式系统开发和调试原理Sep 20071. ADS开发环境Sep 20071. ADS开发环境Sep 20071. ADS开发环境Sep 2007程序举例Sep 2007第五讲嵌入式系统开发和调试原理Sep 2007调试工具和方法分类嵌入式系统的调试工具基于主机的调试 指令集模拟器 OS模拟器 GUI模拟器(应用程序开发) 基于硬件的调试工具和方法。

在线仿真器:使用硬件仿真芯片和仿真内存,连接困难,价格昂贵。

如常见的51仿真器(替代处理器) Rom 仿真器 :替代目标系统的ROM存储器,价格低廉的调试手段, 功能比较简单 驻留监控软件(Resident Monitors): BDM仿真技术:摩托罗拉公司处理器芯片采用的一种方式, POWERPC等。

片内内置调试电路和微码程序,通过串口调试 JTAG仿真技术:目前主流。

通过JTAG芯片测试接口和内部片上调试 逻辑通信,实现调试Sep 2007No. 21指令集模拟器利用在宿主机(一般是PC) 的资源构建一个虚拟的目标 机系统,该系统通过解释执 行目标处理器的二进制代码 来仿真运行目标程序 ARM Armulator-模拟 运行ARM指令系统App1 App1App2 App2….App n App n目标机的RTOS 目标机的RTOS 虚拟机构建的环境:寄存器,存储器等等 VM(虚拟机) VM(虚拟机) PC OS (MS Windows) PC OS (MS Windows) PC PCSep 2007No. 22ARMULATOR 软件仿真器ARMulator(ARM仿真器):是一个指令级的仿真程序, 运行在主机上没有硬件的情况下,调试应用程序 ARMulator可以报告各指令执行时的机器周期,所以也可以用来进行应用 程序的性能分析。

ARM开发板使用手册

ARM开发板使用手册

ARM开发板使用手册PHILIP LPC2132ARM7TDMI第一章介绍LPC2132开发板是专门为arm 初学者开发的实验板,用户可以做基础的arm实验,也可以做基于ucos-ii的操作系统实验。

本系统的实验源代码全部开放,用户可以在此基础上开发产品,减少重复劳动。

由于LPC2132体积很小,并且功能强大,因此特别适合需要复杂智能控制的场合,其运行速度高于早期的80486计算机,而体积只有指甲大。

我们已经将LPC2132产品成功应用在干扰比较强的工业场合,经过6个月的运行,各项指标符合要求。

因此我们特别推荐这一款开发板作为ARM初学者入门。

由于此款开发板体积很小,非常适合直接应用在工业以及民用智能控制器的场合。

LPC2132 CPU介绍LPC2131/2132/2138 是基于一个支持实时仿真和跟踪的16/32 位ARM7TDMI-STM CPU,并带有32kB、64kB 和512kB 嵌入的高速Flash 存储器。

128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率下运行。

对代码规模有严格控制的应用可使用16 位Thumb 模式将代码规模降低超过30%,而性能的损失却很小。

较小的封装和很低的功耗使LPC2131/2132/2138 特别适用于访问控制和POS 机等小型应用中;由于内置了宽范围的串行通信接口和8/16/32kB 的片内SRAM,它们也非常适合于通信网关、协议转换器、软件modem、语音识别、低端成像,为这些应用提供大规模的缓冲区和强大的处理功能。

多个32 位定时器、1个或2 个10 位8 路的ADC、10 位DAC、PWM 通道、47 个GPIO 以及多达9 个边沿或电平触发的外部中断使它们特别适用于工业控制应用以及医疗系统。

主要特性●●16/32 位ARM7TDMI-S 核,超小LQFP64 封装。

●●8/16/32kB 的片内静态RAM 和32/64/512kB 的片内Flash 程序存储器。

ARM7调试文档

ARM7调试文档

吾人制作
试验一 LED 跑马灯试验 先将工程目录拷贝到本地硬盘,去掉所有文件的只读属性。将 JTAG 板子跳线接到 Wiggler 接 口(我们出厂默认已经接到这个位置了),连接板子和电脑并口;点击 ARM7.exe 运行调试代 理软件(这个软件在整个调试的过程中都要打开的),JTAG 链接正常后应该显示如下画面。
#define LEDTEST_DELAY 500000 我们可以方便的控制闪烁频率。
吾人制作
Image 文件。选择 led.axf 文件,程序被调入到 AXD 调试环境当中,如下图:
程序指针执行第一条语句,在 AXD 环境中调试程序和大多数的调试环境一样,我们可以设 置断点,单步执行,查看变量的值等等。
本试验程序的效果是 LED1、LED2、LED3 轮流闪烁,我们可以通过修改延时的参数来控制 闪烁的频率。打开 main.c 文件修改下来宏
这样设置好后,我们相当于设置了程序的代码段起始地址,程序入口地址以及哪个目标文件中 的哪个段放再代码段的起始的地方,如下图,起始地址是 0x0c008000,代码段起始地址
吾人制作
0x0c008000,将 vector.o 目标文件的 SelfBoot 段放在代码段的起始地方。
我们可以打开 vector.s 文件看到如下这一段代码,其中就有名为 SelfBoot 的代码段。
吾人制作
在使用光盘中的试验例子之前我们需要做一下的准备工作 1、 安装 ADS1.2 2、 安装调试代理 3、 将程序从光盘拷到硬盘中,并去掉所有文件的只读属性 一、安装 ADS1.2
将安装包解压后,双击 setup.exe 开始安装,在拷贝文件结束后将出现 ARM License Wizard 界面,如下图,在这里需要安装 license 文件。

JTAG(ARM)调试方法

JTAG(ARM)调试方法

ARM JTAG 调试原理OPEN-JTAG开发小组 1 前言这篇文章主要介绍ARM JTAG调试的基本原理。

基本的内容包括了TAP (TEST ACCESS PORT) 和BOUNDARY-SCAN ARCHITECTURE的介绍,在此基础上,结合ARM7TDMI详细介绍了的JTAG调试原理。

这篇文章主要是总结了前段时间的一些心得体会,希望对想了解ARM JTAG调试的网友们有所帮助。

我个人对ARM JTAG的理解还不是很透彻,在文章中,难免会有偏失和不准确的地方,希望精通JTAG调试原理的大侠们不要拍砖,有什么问题提出来,我一定尽力纠正。

同时也欢迎对ARM JTAG调试感兴趣的朋友们一起交流学习。

2 IEEE Standard 1149.1 - Test Access Port and Boundary-Scan Architecture既然是介绍JTAG调试,还是让我们从IEEE的JTAG调试标准开始吧。

JTAG是JOINT TEST ACTION GROUP的简称。

IEEE 1149.1标准就是由JTAG这个组织最初提出的,最终由IEEE批准并且标准化的。

所以,这个IEEE 1149.1这个标准一般也俗称JTAG调试标准。

接下来的这一部分,主要简单的介绍了TAP (TEST ACCESS PORT) 和BOUNDARY-SCAN ARCHITECTURE的基本构架。

虽然不是很全面,但对了解JTAG的基本原理来说,应该是差不离了。

如果希望更全面深入的了解JTAG的工作原理,可以参考IEEE 1149.1标准。

2-1 边界扫描在JTAG调试当中,边界扫描(Boundary-Scan)是一个很重要的概念。

边界扫描技术的基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。

因为这些移位寄存器单元都分布在芯片的边界上(周围),所以被称为边界扫描寄存器(Boundary-Scan Register Cell)。

ARM调试方案

ARM调试方案

11
读系统状态 (在停止模式 在停止模式) 在停止模式
从地址0x8000 向后读 10 个字
ARMxD ARMxD
1
FDE
Databus
2
registers
System speed
Databus
TDI TCK
MCLK
ARMxD
MOV r0, #0x8000 LDMIA r0!, {r1-r10} - system speed STMIA r0, {r1-r10} - debug speed
目标板
主机 - 在AXD 和 Multi-ICE之间的控制器 AXD Multi-ICE 实时监控协议
非常简单的协议 快速 – 没有出错检查 允许后台命令
实际目标板
小的调试监控程序 (<2k 代码字节) 集成在目标里. 以目标代码和原代码的形式提供
122v01 ARM Debug Solutions
r1 Write Register
1 0
Scan chain 2 Scan chain 2
Control Register
r3
W R
Read Register
; 拷贝 DCC 控制寄存器到 r2
MRC p14,0,r2,c0,c0,0 ;检查DCC 控制寄存器的位0 TST r2,#0x1
; 如果位0设置,拷贝数据从DCC 写寄存器 到r3
BREAKPT
EmbeddedICE Logic-RT
TAP
ARM 被调试的系统可以是最终的系统! 也可以用第三方的协议转换工具:
/DevSupp/ICE_Analyz/ 122v01 ARM Debug Solutions
TM

ARM开发软件使用教程

ARM开发软件使用教程

ARM开发软件使用教程作者:龚俊Email:gongjun98@ QQ:63505043创建日期:2003年1月21日修改日期:2003年1月24日版本:1.2说明:本文是根据我学习ARM开发以来的一些经验总结,以自己设计的S3C44B0X板为例,给出入门上手的最基础知识。

有些东西只是个人的主观认为,不一定准确,算作抛砖引玉吧,欢迎大家指正!Emai或QQ联系,希望广交各位朋友,共同提高!一、安装SDT2.51点击SDT2.51安装程序中的setup.exe,出现如下安装界面:一路点击next继续,一般默认设置就行了,不需作任何修改了,最后完成安装,我是安装在C:\ARM251下面;二、启动SDT2.51安装完毕,点击程序组中的ARM Project Manager启动主程序:之后出现主程序界面如下:很多初学者会遇到这样一个问题:自己写了程序,编译也通过了,结果怎么也生成不了二进制格式的目标代码(*.bin)。

如何生成目标代码需要参考SDT2.51安装文件夹pdf中的userguide.pdf,在它的392页有详细说明,教你怎么Converting ARM linker ELF output to binary ROM formats。

为了减少大家的麻烦,我提供一个模板Project,你打开我这个Project,然后点击菜单File下的Save As Template:然后在弹出的窗口中随意选择一个目录下,新建一个自己的文件夹,随便取一个Project 名称,确认即可在主程序上出现新Project界面。

现在可以在刚才建立的文件夹下面编辑代码,包括汇编代码和C程序代码。

注意汇编代码必不可少,它是用来进行系统初始化和C程序入口的,这些范例代码可以在三星网站去下载,网上也有很多相关资源,如果找不到也可以找我要。

四、添加自己的源码点击菜单Project下的Add File To Project……,在弹出的窗口中,浏览自己的Project文件夹下面的程序代码,将代码添加到创建的项目。

arm调试内核寄存器的方法

arm调试内核寄存器的方法

arm调试内核寄存器的方法使用ARM调试内核寄存器的方法引言:在软件开发和调试过程中,经常需要查看和修改CPU的寄存器值。

而对于ARM架构的处理器,了解如何调试内核寄存器值是非常重要的。

本文将介绍一些常用的方法和工具,帮助开发者在ARM平台上进行内核寄存器的调试。

一、使用GDB调试器GDB是一款功能强大的开源调试器,可以用于调试多种编程语言和平台。

在ARM架构上,可以使用GDB调试器来查看和修改内核寄存器的值。

1. 准备工作需要安装GDB工具链,并将其添加到系统的环境变量中。

然后,在编译内核时,需要在配置文件中启用GDB调试支持选项,以生成可调试的内核映像。

2. 连接调试器将目标设备与主机通过调试接口(如JTAG、SWD)连接起来。

然后,在主机上运行GDB,并使用以下命令连接到目标设备:```$ gdb <kernel_image>```3. 设置断点在GDB中,可以使用`break`命令设置断点。

例如,要在内核函数`foo`的入口处设置断点,可以使用以下命令:```(gdb) break foo```4. 运行程序使用`run`命令启动目标设备上的程序,并让其执行到断点处。

当程序停止时,可以使用`info registers`命令查看所有寄存器的值。

5. 查看寄存器值使用`info registers`命令可以列出所有寄存器的值。

例如,要查看R0寄存器的值,可以使用以下命令:```(gdb) info registers r0```6. 修改寄存器值使用`set`命令可以修改寄存器的值。

例如,要将R0寄存器的值修改为0x1234,可以使用以下命令:```(gdb) set $r0 = 0x1234```二、使用JTAG调试器JTAG调试器是一种常用的硬件调试工具,也可以用于调试ARM架构的处理器。

它可以提供更低层次的访问权限,可以直接读写寄存器的值。

1. 准备工作需要将目标设备与JTAG调试器连接起来,并确保JTAG调试器的驱动程序已正确安装。

嵌入式ARM 开发板上机调试程序

嵌入式ARM 开发板上机调试程序

实验一 LED实验内容:八盏LED灯就会向右点亮文件包:boot方法:用SDRAM 调试先把映像文件下载到SDRAM 里,然后进行调试。

需要修改RO BASE为0xa0000000,其他不用修改,重新编译下载就可运行。

实验二键盘实验内容:本实验采用了直连键盘(1~4)对LED数码管进行控制。

文件包:Timer方法:用FLASH 调试,使用JFLASHMM 下载当按1键的时候,LED1数码管1234就会亮,同理,按相应的键,相应的数码管就会亮。

flash调试时需要修改RO BASE为0x00000000,其他不用修改,重新编译下载就可运行。

①将编译连接生成的.bin文件拷贝到D:\Jflash_Pxa270_P30目录下②打开CMD命令行窗口,在命令提示符中运行命令:jflashmm.exe pxa270 xxx.bin ,就可以把xxx.bin 下载到FLASH 里面了。

实验三 LCD控制器实验实验内容:本实验得到的结果为,LCD显示屏会循环显示白、黑、蓝、红、绿和灰这六种颜色,并且显示“亿道电子技术”这些字符。

文件包:LCD方法:用FLASH 调试使用H-JTAG 下载在flash调试时,需要修改RO BASE为0x00000000,不要对RW BASE进行设置,否则LCD屏的字体就无法正常显示。

实验四步进电机实验实验内容:步进电机转动文件包:stepMotor方法:用FLASH 调试使用H-JTAG 下载在flash调试时,需要修改RO BASE为0x00000000一、H-JTAG软件安装以及配置H-JTAG软件是免费JTAG调试和Flasher擦写软件,通过并口线连接目标板。

此软件针对EEliod开发平台和XSBASE 270-S开发板(或其它PXA270的开发板),需要进行配置才能正常工作。

1.安装H-JTAG软件,解压H-JTAG0.7x.rar,运行H-JTAG0.7x.exe,按照默认路径安装即可。

ARM内核调试方法

ARM内核调试方法

ARM-Linux 内核调试方法讨论1 概述由于ARM Linux不像桌面系统那样所见所得,很多时候是嵌入式的无终端的系统,更不像windows这样的系统软件开发那样开发主机和开发软件可以运行在同一个系统下,借助print、gdb等很容易调试。

因此ARM Linux内核的调试,由于其中牵涉启动流程,MMU,Driver等,并且Linux 内核开发者没有在内核里植入一个内核调试器,他们认为调试器会破坏内核的完整性,并添入其他不可预知的问题,因此内核调试显得很重要,并有一定的难度,本文试着讨论ARM Linux内核的调试方法。

下面就本人熟悉的几种调试技术进行说明。

2 GPIO控制(点灯)GPIO控制(俗称点灯),主要是bootloader和内核进入C环境之前的调试手段,主要做法是:1、在ARM Linux里,硬件工程师一般都会在硬件板上设计几个led灯,用于指示系统的运行,硬件的读写等;2、根据DataSheet,查找GPIO的地址,编写点灯程序,确认点灯程序的正确性;3、在需要验证代码执行的地方,植入点灯程序,查看GPIO电平的变化,或使用led 的闪烁,来判断程序是否运行;4、点灯程序一般运行在MMU没有开启的时段,如果MMU开启之后还需要使用点灯来调试kernel,需要将点灯程序GPIO的地址进行virt to phys的转换,否则不仅不能正确使用,还会引起内存访问错误segment fault;3 printkprintk() 是调试内核代码时最常用的一种技术。

在内核代码中的特定位置加入printk() 调试调用,可以直接把所关心的信息打打印到屏幕上,从而可以观察程序的执行路径和所关心的变量、指针等信息。

就本人的经验作以下说明:1、printk只能在内核的终端驱动加载之后才能正确输出,终端一般为串口;2、在驱动加载之前,printk可以使用,但是并不会有输出,内核会把需要的打印信息保存在一个buffer里,等到driver加载完成,一并输出。

第六讲 ARM处理器调试原理(2013)详解

第六讲 ARM处理器调试原理(2013)详解
Execution trace information(跟踪程序信息 ) Memory access history(存储器访问历史数 据)
Sep 2013
No. 10
嵌入式系统调试的一般方法
基于交叉编译环境下的调试
调试方法解决调试器与被调试程序 之间如何通信以达到调试目标
能够获取处理器数据总线、地址总线,处 理器状态等信息,以便在选中的数据点( watchpoints)和指令点(breakpoints )进入调试状态 能够获取处理器内核寄存器的信息 能够插入指令运行 能够访问存储器的内容 记录指令/数据的执行和访问记录
所有的ARM指令都是32位宽,在存储器中以4字节的边界对齐 3地址的数据处理指令(即两个源操作数和结果寄存器都独立设定) LOAD/STORE架构,包含非常强大的多寄存器Load和Store指令 能够在单时钟周期的单条指令来完曾一项普通移位操作和一项普通的 ALU操作 可以通过协处理器来扩展新的寄存器和数据类型 指令可条件执行 ARM指令的分类
Sep 2013
No. 5
第 六讲
嵌入式系统开发和调试原理

复习第四讲:ARM指令集和汇编语言概述 嵌入式系统的一般开发过程:交叉编译 嵌入式系统调试原理介绍 基于ARM7 内核微处理器调试原理 开发工具 ADS1.2 介绍—ARM7 开发工具uVision4.0 介绍—CM3
No. 12
交叉编译环境的内容
集成开发系统提供高效明晰的图形化的嵌入式应用软件开发平台,包括 一整套完备的面向嵌入式系统的开发和调试工具 。 一般包括编辑器、编译器、连接器、调试器、工程管理器和底层调试接 口设备(BDM/JTAG仿真器)等

arm外部调试断点指令

arm外部调试断点指令

ARM外部调试断点指令1. 什么是ARM外部调试断点指令ARM外部调试断点指令是一种用于调试ARM架构处理器的指令。

在软件开发过程中,调试是一个必不可少的环节,而断点是调试过程中常用的技术之一。

断点指令能够在程序执行到指定位置时暂停程序的执行,这样可以方便地进行调试和分析。

在ARM架构中,通常使用调试器来实现调试功能。

调试器可以通过连接到目标系统的调试接口,与系统进行通信,并发送断点指令来控制程序的执行。

ARM外部调试断点指令就是调试器发送给目标系统的指令,用于设置断点和控制程序的执行。

2. ARM外部调试断点指令的种类ARM外部调试断点指令可以分为软件断点和硬件断点两种类型。

2.1 软件断点软件断点是通过在目标程序的指令中插入特殊的指令来实现的。

当程序执行到这个特殊的指令时,会触发断点,程序的执行会被暂停。

软件断点的优点是灵活性高,可以设置在任意指令上,但是由于需要修改目标程序的指令,所以对于只读存储器的目标系统来说,软件断点可能无法使用。

软件断点的实现原理是将目标指令替换为断点指令,当程序执行到这个断点指令时,会触发中断异常,调试器会捕获这个异常并暂停程序的执行。

在ARM架构中,常用的软件断点指令是BKPT指令,它的操作码是0xE1200070。

2.2 硬件断点硬件断点是通过目标系统的调试接口来实现的。

调试接口通常是通过JTAG或SWD接口与目标系统相连,调试器可以通过这个接口来读写目标系统的寄存器,并设置硬件断点。

硬件断点的优点是速度快、精确度高,可以设置多个断点,而且不需要修改目标程序的指令。

硬件断点的实现原理是在目标系统的调试接口中插入断点触发逻辑,当程序执行到设置的断点位置时,会触发调试接口的中断信号,调试器会捕获这个中断信号并暂停程序的执行。

硬件断点的具体实现方式和数量取决于目标系统和调试器的支持情况,常见的硬件断点指令包括BKPT指令、BRK指令等。

3. ARM外部调试断点指令的使用方法ARM外部调试断点指令的使用方法主要包括以下几个步骤:3.1 连接目标系统和调试器首先,需要将调试器通过JTAG或SWD接口连接到目标系统。

ARM编译环境调试(共21张)

ARM编译环境调试(共21张)
avi”,安装ADS 2、观看“实验一.avi”视频文件 3、建立一个工程 4、新建asse.s文件并编辑代码 5、新建main.c文件并编辑代码 6、设置工程,参考“实验一.avi” 7、编译工程,参考“实验一.avi”” 8、下载调试,参考“实验一.avi”
第7页,共21页。
ADS安装要点(yàodiǎn):开始安装
双击SETUP.EXE开始安装
第8页,共21页。
ADS安装 要点:安装 (ānzhuāng) LICENSES (ānzhuāng)
此处选择LICENSES文件,通过右边地
Browse进行选择
第9页,共21页。
汇编语言 和C语言混合编 (huì biān yǔ yán) 程
第21页,共21页。
Warrior和AXD) 4、实用程序和支持软件
第3页,共21页。
命令行开ARM发汇工编器具ARM C/C++编
译器
符号调试器
ARM 链接(liàn jiē) 器
第4页,共21页。
ARM运行 时库 (yùnxíng)
ANSI C函数库
C++函数库
第5页,共21页。
图形化集成开发 环境 集成开发环境
(kāifā)
ADS调试器
ARM调试器
集成开发环境
第6页,共21页。
实用程序和支持软件
1、fromELF ,ARM映像 文件转 (yìnɡ xiànɡ) 换工具
2、armar,ARM库函数生成器 3、Flash downloader,FLASH编程
器 4、ARMulator,ARM指令集模拟器
1、汇编代码中调用C代码 2、汇编语言中函数的实现 3、C语言调用汇编文件中的函数 4、C语言内嵌汇编语言

10 ARM 开发与调试

10 ARM 开发与调试

华清远见
3.仔细研究datasheet
尽管ARM在内核上兼容,但每家芯片都有自己 的特色,编写程序时必须考虑这些问题。在这儿 千万别有依赖心理,总想拿别人的示例程序修改 ,却越改越乱。
4.操作系统
在ARM的应用开放源代码的程序很多,要想提 高自己,就要多看别人的程序, linux, uc/os-II等 等这些都是很好的原码。
ARM 开发与调试
华清远见
ARM开发的简单步骤 开发的简单步骤 ARM开发和调试方法 2410开发板简介
华清远见
ARM开发的简单步骤
1.做个最小系统板
如果你从没有做过ARM的开发,建议你一开始不 要贪大求全,把所有的应用都做好, 因为ARM的 启动方式和dsp或单片机有所不同,往往会遇到 各种问题,所以建议先布一个仅有Flash,SRAM或 SDRAM、CPU、JTAG、和复位信号的小系统板,留 出扩展接口。使最小系统能够正常运行,你的任 务就完成了一半,好在ARM的外围接口基本都是 标准接口,如果你已有这些硬件的布线经验,这 对你来讲是一件很容易的事情。
华清远见
ARM开发的简单步骤 ARM开发和调试方法 开发和调试方法 2410开发板简介
华清远见
2410开发板简介(见试验指导)
华清远见
JTAG 仿真器
JTAG 仿真器也称为 JTAG 调试器,是通过 ARM 芯片的 JTAG 边界扫描口进行调试的设备 。 JTAG 仿真器比较便宜,连接比较方便,通过 现有的 JTAG 边界扫描口与 ARM CPU 核通信, 属于完全非插入式 ( 即不使用片上资源 ) 调试, 它无需目标存储器,不占用目标系统的任何端口 ,而这些是驻留监控软件所必需的。另外,由于 JTAG 调试的目标程序是在目标板上执行,仿真 更接近于目标硬件,因此,许多接口问题,如高 频操作限制、 AC 和 DC 参数不匹配,电线长度 的限制等被最小化了。使用集成开发环境配合 JTAG 仿真器进行开发是目前采用最多的一种调 试方式。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM开发调试教程作者:李希岗创建日期:2003年5月20日修改日期:2003年5月20日版本:1.0说明:本文是我学习ARM开发以来的一些经验总结,以自己设计的S3C44B0X板为例,给出我调试开发ARM开发板的一些最基础知识。

我只是在自己的开发板调试过并且经验有限,有些知识只能做为参考,不一定准确,就算给大家一个“例程”吧,如果大家有不同意见,希望多多指正!硬件篇(一)开发板的整体架构我设计的开发板是在三星44B0 demo板的基础上,参考网络上相关的资料,加入我的思想开发的。

以下是该开发板的整体架构:(二)开发板的焊接贴片式元器件的拆卸、焊接宜选用200~280℃调温式尖头烙铁。

贴片式电阻器、电容器的基片大多采用陶瓷材料制作,这种材料受碰撞易破裂,因此在拆卸、焊接时应掌握控温、预热、轻触等技巧。

控温是指焊接温度应控制在200~250℃左右。

预热指将待焊接的元件先放在100℃左右的环境里预热1~2分钟,防止元件突然受热膨胀损坏。

轻触是指操作时烙铁头应先对印制板的焊点或导带加热,尽量不要碰到元件。

另外还要控制每次焊接时间在3秒钟左右,焊接完毕后让电路板在常温下自然冷却。

以上方法和技巧同样适用于贴片式晶体二、三极管的焊接。

贴片式集成电路的引脚数量多、间距窄、硬度小,如果焊接温度不当,极易造成引脚焊锡短路、虚焊或印制线路铜箔脱离印制板等故障。

拆卸贴片式集成电路时,可将调温烙铁温度调至260℃左右,用烙铁头配合吸锡器将集成电路引脚焊锡全部吸除后,用尖嘴镊子轻轻插入集成电路底部,一边用烙铁加热,一边用镊子逐个轻轻提起集成电路引脚,使集成电路引脚逐渐与印制板脱离。

用镊子提起集成电路时一定要随烙铁加热的部位同步进行,防止操之过急将线路板损坏。

换入新集成电路前要将原集成电路留下的焊锡全部清除,保证焊盘的平整清洁。

然后将待焊集成电路引脚用细砂纸打磨清洁,均匀搪锡,再将待焊集成电路脚位对准印制板相应焊点,焊接时用手轻压在集成电路表面,防止集成电路移动,另一只手操作电烙铁蘸适量焊锡将集成电路四角的引脚与线路板焊接固定后,再次检查确认集成电路型号与方向,正确后正式焊接,将烙铁温度调节在250℃左右,一只手持烙铁给集成电路引脚加热,另一只手将焊锡丝送往加热引脚焊接,直至全部引脚加热焊接完毕,最后仔细检查和排除引脚短路和虚焊,待焊点自然冷却后,用毛刷蘸无水酒精再次清洁线路板和焊点,防止遗留焊渣。

检修模块电路板故障前,宜先用毛刷蘸无水酒精清理印制板,清除板上灰尘、焊渣等杂物,并观察原电路板是否存在虚焊或焊渣短路等现象,以及早发现故障点,节省检修时间。

一点点建议:建议您先焊接一些主要的器件,比如说S3C44B0﹑SST39VF160﹑HY57V641620﹑JTAG ﹑复位电路﹑电源部分,这样您焊接好后,就可以进行FLASH的直接烧写,确定FLASH的功能是否正确。

(三)开发板电源调试焊接过后的电路板,很可能存在短路﹑虚焊的情况,如果你此时直接通入电源的话,很可能造成主芯片的发热和烧毁,我已经出现这样的情况了,焊接好电路后,直接通入电源,FLASH就开始发热,直到烫手…此时一定不要轻举妄动,都花一点时间测试电源部分的正确。

比如测试S3C44B0的电源是否正确,包括+3.3V和+2.5V,如果不正确,立刻进行检测,看是否有错误的情况。

应该接电源的脚分别如下:接+3.3V的引脚:9脚﹑47脚﹑125脚接+2.5V的引脚:138脚﹑109脚﹑62脚﹑34脚﹑21脚如果测试完全正常,那么就要开始检测s3c44B0的电源地是否正确,正常情况下有如下引脚应该接地,如果没有接地的话,可以判断已经断路。

应该接地的引脚如下:应该接地的引脚:10脚﹑22脚﹑35脚﹑48脚﹑63脚﹑73脚﹑74脚﹑90脚﹑110脚﹑126脚﹑139脚﹑152脚上述引脚有的并非地线,电路只有将该脚接地才可以工作。

(四)开发板调试的第一步呵呵,如果您的焊接方法没有问题,电源完全是好的,那么你就已经成功一半了。

试通电一次,看电源指示灯是否亮了,电源只是灯亮度正常,那么你就已经成功了。

如果你在调试过程中,发现电源指示灯很暗的话,估计是某些电路是短路了,赶快拔掉电源,看一下是否某些芯片发热或者已经冒烟了…记住:有几个跳线一定要跳的,就是JP5﹑JP6﹑JP7一定要短路,如果不短路的话,你的所有电源都没有。

JP1不短路﹑JP2短路﹑JP3短路,他们分别对应OM0﹑OM1﹑OM1JP8短接2—3。

确定是S3C44B0工作方式big mode 和little mode。

好了,如果全部正常的话,直接用JTAG调试板,连接好JTAG部分,启动WIN98,进入我给你的光盘,找到简单应用程序的目录。

里面有一个程序,是直接烧写S3C44B0的FLASH的。

在您烧写之前,查看JTAG连接是否正常,JTAG上的短路线是否已经短路,如果全部正常的话,直接进入烧写了。

在烧写之前有几个地方需要注意:并口延长线分别连接PC机并行口和JTAG下载板,JTAG下载板通过扁平排线连接ARM板。

S3C44B0X有两个复位引脚,其中nRESET是CPU复位引脚,nTRST是JTAG单元复位引脚,一般的S3C44B0X系统都有一个跳线,用短路块将两个复位端连在一起,这样一按复位按键,两个复位引脚都复位了。

而JTAG下载板上面也有一个跳线,这个跳线是JTAG单元复位引脚。

在烧写Flash的时候,PC机会通过JTAG下载板上的那个跳线来复位ARM板的JTAG单元,所以应该用短路块将JTAG下载板上的跳线短路,而ARM板上的跳线(连接nRESET和nTRST)的则不应该短路;全部准备好了,现在可以烧写代码了!网上有一个叫Fluted.exe的程序,使用它就可以完成Flash烧写。

这里面针对不同的CPU还需要不同的Bsd文件,不同的Flash芯片需要对Fcd文件进行相应的修改。

S3C44B0X的BSD文件S3C44B0X.bsd可以在三星公司网站找到,适用于SST39VF160的fcd文件在网上搜索得到。

特别说明:这个烧写Flash的程序只能在Windows98系统下才能运行!不支持Windows2000、WindowsNT和WindowsXP,所有你需要切换到Windows98下面才能进行这项工作!对于我的板子,使用SST39VF160,需要的S3C44B0X.bsd、default.fcd和Fluted.exe,将自己的目标代码model.bin与上面的三个文件放在同一个目录下面,运行Fluted.exe就可以进行Flash烧写了。

由于Fluted.exe要输入相应的配置参数,所以我干脆做了一个批处理文件f.bat:FluteD a -f model.bin -v -s 0这样运行这个批处理文件就可以开始烧写了,烧写界面如下:如果你是自己设计ARM板,第一次烧写Flash,那么你可以检查一下系统:首先看看CPU的各种电压是否正常,可以看看系统时钟输入的波形,32768晶体的一个引脚上应该能看到32768的正弦波。

如果是刚焊新的Flash,那么一般Flash里面数据都是0Xff,用示波器可以看到数据线都是高电平,地址线上面有规则的方波信号。

你一按复位按键,方波立马消失变成低电平。

如果写入成功的话,WRITE &&VIRIFY成功的话,你已经成功了……恭喜你了!!!很可能由于电源高频干扰或者错误接地,或者SST39VF160两个地址线短路出现清除FLASH,能够写入FLASH,可是VERIFY出错的问题,我遇到的就是那个两个地址线短路的情况,结果写入都正确,可是VERIFY时错误了,错误信息如下:verify missed at 0x11111 orianglal :0x20 jtag:0x45如果您在开发自己的开发板的时候也出现类似情况,我这里给你提示了,呵呵成功已经离你不远了……SDT软件篇已经有了自己的平台,那么怎么样知道你的硬件是否真的好了呢?唯一的办法就是用SDT进行调试硬件,我们正式开始我的下一篇—SDT软件篇。

(一) SDT软件的安装点击SDT2.51安装程序中的setup.exe,出现如下安装界面:接着出现如下画面:然后出现拷贝文件过程如下:安装完成时:此处必须重新启动计算机,以使设置生效。

(二)启动SDT2.51安装完毕,点击程序组中的ARM Project Manager启动主程序,界面如下:(三)利用我提供的模板开始自己的项目很多刚刚学习ARM的人往往会遇到这样一个问题:自己写了程序,编译也通过了,结果怎么也生成不了二进制格式的目标代码(*.bin)。

如何生成目标代码需要参考SDT2.51安装文件夹pdf中的userguide.pdf,在它的392页有详细说明,教你怎么Converting ARM linker ELF output to binary ROM formats。

为了给大家带来方便,在我提供的小应程序中,可以将他保存为一个模板,操作如下打开我提供的小应用程序的工程,点击菜单File下的Save As Template:然后在弹出的窗口中随意选择一个目录下,新建一个自己的文件夹,随便取一个Project名称,确认即可在主程序上出现新Project界面。

现在可以在刚才建立的文件夹下面编辑代码,包括汇编代码和C程序代码。

注意汇编代码必不可少,它是用来进行系统初始化和C程序入口的,这些范例代码可以在三星网站去下载。

(四)如何添加自己的源码点击菜单Project下的Add File To Project……,在弹出的窗口中,浏览自己的Project文件夹下面的程序代码,将代码添加到创建的项目。

这时依次点击rom、debug、Sources前面的十字架,就会看到自己刚才添加成功的代码,双击任何一个代码文件就可以打开它进行编辑:说明:SDT2.51好象有一个bug,当你直接双击一个代码文件时,可能会出现非法错误。

我的机器就是这样。

希望各位当编写代码时用uedit,这样比较方便。

(五)生成可以在FLASH中运行的代码编辑代码大家都会了,那么如何将自己写的代码放在FLASH中,并直接运行呢?看过S3C44B0 DATASHEET的人或者知道计算机启动过程的人都会知道,BIOS是一个什么东西,那么对于S3C44B0的启动也无非如此。

你生成的代码必须存放在0x00000000为开始的FLASH中,这样当S3C44B0复位的时候,从这里取指令执行。

那么如何设置呢?如下:点击ENTRY AND BASE,接着会出现如下对话框:(六)生成可在FLASH中运行的目标码现在选择菜单build或者点击快捷图标就可以编译代码,点击Force build之后就生成了二进制目标代码(*.bin),这可以在项目文件夹下面找到。

相关文档
最新文档