ADS调试ARM程序

合集下载

ADS调试心得(LPC2478的调试)

ADS调试心得(LPC2478的调试)

1、在调试“E:\htwang\smart2200v201\ARM嵌入式系统实验教程(二)\开发板出厂编程程序\液晶显示程序\LCM_Disp”的程序时,想使用外部RAM进行仿真调试,在将ADS1.2中的“DebugInExram Settings…->Arm Linker -> Output -> Equivalent Command Line”的“-info totals -entry 0x8100000-scatter .\src\mem_b.scf”改为“-info totals -entry 0x80000000-scatter .\src\mem_b.scf”时,编译时总是出现错误信息“Error: L6206E: Entry point(0x80000000) lies outside the images”,经梁工(宝琼)提示:“这是由于程序空间超出范围,需要改一个参数。

”打开关于外部RAM调试的分散加载文件“mem_b.scf”发现所有的程序调试地址都是指向0x81000000的Flash地址空间,而不是0x80000000的RAM地址空间(此时硬件电路板上的短路片RAM接CS0、Flash接CS1),后把0x81******全部改为0x80******,编译调试都正常。

2、不正常现象:在调试“SmartARM2200 V2.02”实验箱时,每次实验箱断电或实验箱上复位按键后,H-Flash的Load操作都要重新执行一遍(或者简单一点:只要在H-Flash -> Programming -> Check 按钮上点击一下也可以),否则下载程序后实验箱运行不了。

(先是在选用DebugInExram出现这种情况,后选用RelOutChip则不会出现这种情况。

)<2008-9-12> 另外,每次重新启动H-JTAG和H-Flash后,都要将H-Flash重新设一遍。

ARM嵌入式系统原理实验_ADS使用指南

ARM嵌入式系统原理实验_ADS使用指南

ADS使用指南1. 打开Codewarrior,file->new建立文件,用汇编语言编写的后缀为.s,用C语言编写的后缀为.c;2. 编写代码;3. file->new建立工程;4. 在工程页面中,右键->add files将需要的文件加入此工程;注意选中文件后,下面框中三个勾全部勾上;出现界面:5. 点击调试(DEBUG),自动连接AXD。

如程序编译出错,则先要修改,再进行调试;编译报错:编译出错请先检查下列情况:◆如果编译的是单独的一个汇编代码,则代码中必须有ENTRY;◆如果编译的是混合代码,汇编程序作为主程序的,则代码中必须有ENTRY;◆如果编译的是混合代码,C程序作为主程序的(即代码里有main函数的),则作为子程序的汇编代码中不能有ENTRY;◆使用立即数时,请注意立即数必须是合法的;◆程序中使用的逗号和分号不要漏掉,且要特别注意它们不能是中文字符的,必须是英文字符的;◆汇编程序中的指令、伪指令和伪操作不能顶格写,标号要顶格写;编译通过,自动连接至AXD:特别注意:如遇到点debug后打开的AXD里面是空白的,则点击AXD里面的options->configure target->选中ARMUL->点OK,然后关闭AXD,再从codewarrior中点debug再次连接AXD。

◆查看寄存器:processor views->registers->current;地址后回车,注意memory中数据存储是小端方式;◆查看输入输出值:processor views->console;◆查看变量:processor views->variables;查看指令所在地址:processor views->disassembly。

ADS开发环境安装配置

ADS开发环境安装配置
IO0SET = LED2CON;//灭灯
IO0CLR = LED3CON;//亮灯
Delay(200);//延时
IO0SET = LED3CON;//灭灯
}
}
4、配置项目
单击项目管理器中的生成的项目类型:“RealInFlash”,如下图9所示,单击右侧的第一个按钮 (“Setting”按钮),打开Settings对话框,如图10所示。
图11
*出口参数:无
****************************************************************************/
void Delay(intdly)
{
inti;
for(; dly>0; dly--)
for(i=0; i<600; i++);
}
/****************************************************************************
*名称:main()
*功能:控制LED闪烁
****************************************************************************/
void main(void)
{
PINSEL0 = 0x00000000;//设置所有管脚连接GPIO
PINSEL1 = 0x00000000;
图8
3、编写源代码
在图8中,选中mai.c,在“#include“config.h””处编写如下代码,实现流水灯功能:
#defineLED3CON (0x1<<17) /*P0.17*/

ADS开发环境的使用之在ADS中进行裸机程序调试的方法与步骤

ADS开发环境的使用之在ADS中进行裸机程序调试的方法与步骤

掌握了基本的汇编指令和伪操作后,就具备了编写简单ARM汇编程序的基本理论能力,不过要实战得到真实可执行的程序,还需要可以对程序进行编辑和编译的开发环境(命令行编译器或IDE)的支持,同时程序在开发过程中免不了要进行调试,这就需要调试器的支持。

一般而言,会有供应商将程序的编辑器、编译器、调试器以及其它一些辅助工具组合在一起,形成程序的开发、调试集成开发环境(IDE)软件,提供给程序开发人员使用。

对ARM程序开发而言,目前比较流行的IDE有2套:运行于Windows平台的ADS和运行于Linux平台的gcc等交叉编译工具链。

总的来看,ADS在程序的编译和调试方面要比gcc使用起来方便很多,也更容易掌握和使用,因此针对初学者,本书现在将展示ADS的使用。

在进行下面的学习之前,请自行在Windows主机上安装ARM公司出品的ads1.2这个集成开发环境软件。

1.4.1在编辑编译器ADS中进行裸机程序的编辑编译及运行ADS集成开发环境,主要由编辑编译器Code Warrior和调试器AXD组成。

1.4.2在调试器AXD中进行裸机程序调试的方法与步骤在完成程序的编译、链接生成二进制可执行文件后,很多情况下需要对程序进行调试,ADS采用的调试工具是AXD,在调试中,我们可以完成:✧设置断点及单步运行与调试;✧查看各种模式下的CPU寄存器;✧查看内存内容;✧查看C语言变量;先对调试器AXD(从ARMDeveloper Suite v1.2->AXD Debugger进入)进行设置,以使用正确的模拟开发板ARMUL图1-22配置目标菜单图1-23配置目标完成上面的设置后,下面就展示如何使用AXD对程序进行调试:(示例代码在光盘\work\armarch\ledcircle中)1.使用ads打开ledcircle.mcp工程2.单击菜单project->debug图1-24调试界面3.单击Porcessor Views->registers,注意窗口左上部分图1-25进入查看CPU寄存器4.展开Current,可发现当前模式处于SVC模式,并可查看当前模式下,CPU的各个寄存器的值,例如r13=0,pc=0x8000图1-26查看CPU寄存器PS:还可查看其它模式下,CPU各寄存器的值5、单击Execute->step,可以单步运行程序图1-27单步执行结果PS:此时发现pc值增加了4,而r13的值也由于ldr指令的赋值操作变为了0x34000000 6.单击Execute->step-in,可以单步跟踪进入子程序图1-28单步跟踪进入子程序7.按1次F8,单击ProcessorViews-〉Memory图1-29进入查看内存8.在Memory Start addr处输入0x56000010后按回车(enter)键。

学习ARM + Linux之前要讲解用ADS或RealViewMDK去调试ARM开发板的原因

学习ARM + Linux之前要讲解用ADS或RealViewMDK去调试ARM开发板的原因

学习ARM + Linux之前要讲解用ADS或RealViewMDK去调试ARM开发板的原因
 在ARM + Linux 培训班学习,讲师一般首先讲解用ADS 或RealView MDK 去调试ARM 开发板。

原因在于:
 1、掌握ARM 体系结构。

ARM 是一种计算机,掌握其体系结构也就是掌握ARM的工作原理。

在大学里一般会开设《微机原理》这门课程,讲解
x86计算机的工作原理,并学习x86汇编语言。

因为ARM与x86体系结构上的不同,所以学习ARM+Linux之前,要首先掌握ARM这种计算机的工作原理,并学习ARM汇编语言。

 2、掌握ARM汇编语言。

众所周知,汇编语言是低级语言,与计算机硬件关系密切。

因为体系结构的不同,ARM汇编语言与x86汇编语言有很大的不同。

前几年有一本书《ARM体系结构与编程》专门讲解ARM体系结构与汇编语言,随着技术的发展,ARM汇编语言的参考书也越来越多。

掌握ARM汇编语言是学习ARM+Linux 的基础。

Linux中汇编语言用得不多,却都是启动时必须有的。

 3、掌握ARM开发板的原理图。

电路板原理图是由做硬件的工程师画。

ARM ADS中的AXD 调试经验集锦(很实用的)

ARM ADS中的AXD 调试经验集锦(很实用的)

ARM ADS中的AXD 调试经验集锦1、如何设置AXD连接的Target。

在菜单的Configure Target…选项中可以设置。

一般选择MutiIce或者ARMUL两种。

ARMUL是一种ARM的模拟器。

一般的算法或者一些无需和硬件中断等设备打交道的程序都可以通过这个进行调试。

使用上非常简单。

我们一般上板子进行调试都是通过MutiICE来进行。

在刚刚安装了系统的时候,菜单中没有MutiICE,需要我们手动添加:点击ADD按钮,然后在弹出的文件浏览中,选择“C:\Program Files\ARM\Multi-ICE\Muti-ICE.dll”(默认安装的话)。

然后点击“确定”。

这样就把MutiICE的调试接口安装上了。

2、如何保存当前的调试现场。

我们在调试过程中,经常需要在不同的地方设置断点、设置Watchpoint或者打开很多source文件。

但是,一旦我们关闭了AXD,所有的工作都白费了。

当我们再次打开AXD后,我们得到的仍然是没有任何断点、只打开一个entry文件的调试环境。

这里介绍一种方法可以自动保存上一次的调试现场(寄存器的数据都是保存的)。

Options->General tab. 这里确认Save and load default sessions 选项是选中的。

然后打开Session File,确保Rselect Target和Reload images 选项是选中的。

在设置保存后,我们在关闭AXD后,再次启动,就会自动加载上次的image,恢复寄存器了。

如果需要保存多个现场,那么就在设置保存后,在File菜单中选择Save Session来进行保存。

不过注意,保存的路径中不能有空格和特殊字符。

最好保存在ClearCase上。

在需要恢复现场的时候,只需要Load Session就一切OK。

你以前辛辛苦苦设置的断点、 Watchpoint全都回来了。

3、不能设置断点,怎么办?不能设置断点时,我仅知有几种解决方案,这里列举一下:A:清空CPU的Vector Catch 。

ADS1.2设置

ADS1.2设置

ARM在ADS1.2调试的设置(RAM调试)对于ARM来说调试程序有两种方式,1.将程序下载到RAM里仿真.2.下载到FLASH里仿真.下面我们首先说一下在RAM里放着的编译器设置及调试代理软件的使用方法.首先,安装ADS12(555,没钱啊有钱就搞ULINK了在MDK在仿真了),然后去网上随便down一个,LEDTEST的44B0(我用的是44b0的开发板)例程来.然在从网上下载个,H-JTAG或是BANYAN,ARM7都行这些软件叫做调试代理软件,有他们我们就可以用廉价的WIGGLER或是JTAG(244的)简单仿真器,来实现一些调试的绝大部分功能了.1.打开LEDTEST工程文件.然后在Target->Target Settings->linker 项目选择 ARM linker。

Target->Target Settings->postlinker 项目选择 ARM formELF2.在linker->ARM linker->simple image选项中的 RO base 中填写0xc008000 RW base 不填。

(注意:这项要根据你的开发板实际填写,我的44B0 SDRAM 挂在了bank6上,而bank6的起始地址是0x0c000000,所以我可以添0xc000000以后的地址,但不要太靠后了保证的的程序能放的下,注意不要超出她的范围,44b0 bank6地址最大为0xe000000)linker->ARM linker->option选项的 image entry point里面填写镜像进入地址,这里也添0xc008000.linker->ARM linker->layout选项的place at beginning of image 中填写镜像加载前须处理的文件(该文件一般最后都会有这条语句“bl Main”跳到主程序处),这里一般填写初始化文件,如INIT的,我的44bo为44binit.S则填写44binit.o文件后面的区域名添init因为该文件里一般不止一起区域我的就还有个ramdata的Area这里的Area是ARM伪指令,关于伪指令部分可查阅我的另一篇文章.linker->ARM fromELG->output format 是文件输出格式,是烧写FLASH用的二进制文件或是HEX因为我们是在RAM里仿真所有可不填.output file name 也是同样.3.运行仿真代理软件,运行检测CPU,检测目标板,(【注意】一般要将并口设置成EEP模式,如果是笔记本的并口可能不支持该模式,则也可以选择ECP模式(我在我的IBMT43上是可以的),然后还要在设备管理器的并口设置里面,设置成允许使用分配该并口的任何中断,如果你设置禁止使用中断,调试代理是检测不到你的片子的)能检测出型号的就表示连接正确.然后运行AXD开始设置AXD,AXD设置比较简单,在configureinterface->general->target connection选项中选ATTACH在configure target 里面选择驱动类型,前面运行的调试代理就是在这里选择的,一般如果用ARM7的调试代理就设置第一项,第二项是软件仿真,如果用其他代理则点ADD,选择调试代理的DLL文件,一般在安装后的文件目录里都能找到,完成后点configure 看看有没有跳出代理的窗口,好完成。

ADS 软件调试问题

ADS 软件调试问题

ADS 软件调试问题状况一:刚学习使用ADS软件,在CODE WARRIOR FOR ARM使用的过程中,发现有些*.MCP文件无法通过双击打开。

原来是该软件对中文路径不太支持,但是我们还是可以通过拖拽,和通过CODE WARRIOR FOR ARM的菜单 FILE--OPEN--这两种方式打开。

状况二:另一个问题就是在CODE WARRIOR FOR ARM中编译通过后,我们点击工具栏上的调试按钮,虽然可以运行AXD调试软件,但是经常会提示'c:/documents and settings/****/default-1-2-0-0.ses' could not be loaded必须从新配置AXD调试软件,在option--configure target中选择ADP(硬件调试)或ARMUL(软件仿真),然后关闭AXD软件,再点击CODE WARRIOR FOR ARM工具栏上的调试按钮,才可以正常启动AXD并调试刚才编译的项目。

比较麻烦。

通过比较c:/documents and settings/****/default-1-2-0-0.ses调试前后的变化,发现问题就出在这里,该文件是一个初始配置文件,调试目标文件之后,该文件就带上了调试目标文件的路径等多余信息,所以,AXD无法识别,自然就出现了'c:/documents and settings/****/default-1-2-0-0.ses' could not be loaded的提示。

我们只要在配置完成之后,把该文件的属性该为只读,那么就不会在调试的过程中被修改了,以后也就不会出错了。

调试程序是出现“default-1-2-0-0.ses”文件无法加载的问题。

解决方法有以下两种。

第一种,打开AXD->options->configure target->H-JTAG.DLL(这个是JTAG 的文件) ,再点击一下右边的configure,点击OK->OK。

ADS ARMulator程序调试过程

ADS ARMulator程序调试过程

一.打开ADS开发环境开始/所有程序/ARM Developer Suite v1.2/CodeWarrior for ARM Developer Suite二.创建工程1.创建工程Example1.mcpFile/New,打开新建对话框;选择Project页/ ARM Executable Image项;单击Location:下的Set…按钮;选择工程保存位置;输入工程名称:Example1;选中Create Folder;单击保存;回到New对话框,单击确定。

项目创建后的ADS窗口:2.设置工程参数打开参数设置对话框:Edit/DebugRel Setting;Target Settings项的设置如图(注意Architecture or Processor 下处理器类型为Xscale,根据具体平台而定)Linker中的Option页设置如图:3.在工程中创建程序文件Example1.sFile/New,打开新建对话框;选择File页,Text File项;在File name:下输入文件名:Example1.s(注:Arm汇编语言程序扩展名为s);选中Add to Project,文件添加到项目中;选中项目生成目标:Debug;DebugRel;Release单击确定.创建程序文件后,ADS窗口:4.编辑程序文件Example1.s在Example1.s窗口中输入程序校对并保存;三.编译程序并链接生成目标文件1.选择菜单Project/Compile进行编译;如果程序存在错误,将出现错误提示。

根据错误提示修改程序.2. 选择菜单Project/Make链接并生成目标文件四、调试程序选择菜单Project/Debug进入AXD调试开发环境Option/Configure Target…在Choose Target窗口中,按照如图选择调试环境单击Configure按钮进行调试参数设置:(注意处理器类型选择)2.加载映像文件选择菜单File/Load image…;按照如图选择映像文件3.运行程序如图。

AXD 调试问题

AXD 调试问题

ADS(AXD) 调试之我见以前用ADS(AXD) 进行ARM调试时遇到不少莫名其妙的问题,一会可以一会又不成,昨天跑的好好的,今就跑掉,当时感觉就是ADS这个工具不好用。

最近有接触了一下ADS(AXD)调试,觉得其实是以前不太会用,没adptor他的性情。

总结一下吧:1. AXD调试没有什么特别的,他的工作原理是将编译好的运行时映像download到ARM相应地址中去,然后捕获arm 的PC 强制其到ADS中entry point 所设置的映像入口地址上,然后你一点击run,pc就从这个入口地址取指,后面该咋执行就咋执行去了。

实际代码的硬件运行环境就是ARM芯片的运行环境。

首先要明确一点的是ADS(AXD) 在线debug时要将编译好的运行时代码download到ARM 的相应地址上去,这里这个download的地址,就是arm上存储部件的地址,必须是RAM型的存储特性才可以被AXD进行download,如果这个地址域被映射成是Flash存储器,AXD 是download不了的,虽然AXD不报错,但可以通过在AXD下用dissambly 查看一下,如果是flash则看不到正确的指令。

2.正确download之后就是执行程序了,一般外扩SDRAM要有对它时序的配置,这里用AXD调试注意一点当用外部SDRAM进行download程序时,比如说刚复位过的ARM,extern SDRAM这时还没有对他进行时序配置,这时用AXDdownload到SDRAM的话可能会有问题,(AXD是通过jtag口在通过sdram把code放到sdram上去的,如果不在axd加载code前实现配置好sdram时序就无法保证加载的正确性,和运行时的正确性,)运行会产生什么异常指令之类的怪现象。

sothat ,定要给AXD提供一个已经配置好时序确实可用的SDRAM 这样才能保证download。

3. 正确进行AXD download 后,接下来就是执行代码了, 这里也有要注意的事情,就是,代码里不要有再次对SDRAM进行时序配置的指令出现,这就好比,程序已经在SDRAM 里运行了,然后在运行的过程中又对SDRAM进行了配置,这会出现什么异常之类的怪现象的。

ADS开发环境及AXD调试工具的使用

ADS开发环境及AXD调试工具的使用

ADS开发工具及AXD调试工具的使用一、ADS开发工具的使用1、ADS1.2的安装:ADS1.2 /SET UP,之后选择CRACK/LICENSE.DAT2、将LPC2300的工程模板《ARM Executable Image for LPC2300》拷到ADS1.2的安装目录下,即:C:/Program File/ARM/ADSv1_2/Stationery3、建立工程文件1)打开CodeWarrior for ARM Developer Suite v1.22)点击File New…1)ARM Executable Image:用于由ARM指令的代码生成一个ELF格式的可执行映像文件2)ARM Executable Image for LPC2300:LPC230的工程模板3)ARM Object Library:用于由ARM指令代码生成的一个armar格式的目标文件库4)Empty Project:用于创建一个不包含任何库和源文件的工程5)Makefile Importer Wizard:用于将Visual C的nmake或GNU make文件转入到CodeWarrior IDE工程文件6)Thumb ARM Interworking Image:用于由ARM指令和Thumb指令的混合代码生成的一个可执行的ELF格式的映像文件7)Thumb Executable Image:用于由Thumb指令创建一个可执行的ELF格式的映像文件8)Thumb Object Library:用于由Thumb指令代码生成的一个armar格式的目标文件库3)如上图所示,选择ARM Executable Image for LPC2300的工程模板,在Project name下填写要建立的工程名称,如LPC2388,在Location下选择保存的路径,点击确定,即可生成LPC2388.mcp的工程,如下图所示4)生成的工程有三个生成目标,如上图所示,各部分应用说明如下注意:选用RelInFlash目标时,将会对LPC2388芯片进行加密,加密的芯片只能使用ISP进行芯片全局擦除后,才能恢复JTAG调试及ISP读/写操作.模板是针对LPC2366/68/78设计的,如果使用LPO2388芯片,使用DebugInFlash 目标时,需将mem_c.scf中将STACKS 0x40008000 UNINIT ;for LPC2366/68/78更改为STACKS 0x40010000 UNINIT(FLASH空间不同)。

基于ADS的ARM调试有关问题总结

基于ADS的ARM调试有关问题总结
re:
1:请使用EasyJTAG V1.06的版本;
2:在JTAG配置中选中“当需要的时候擦除”。
4.
在AXD中提示error 0x40001e00! FLASH Sector 0 write failed!
re:
1. 使用EasyJTAG写外部FLASH要注意,需使用16位总线方式,需要使用SST39VF106芯片.
3. 检查并口模式设置,并口上不要接其它硬件(如软件狗)。
12.
错误显示:RDI Warning 00148: Can't set point.
re:
原因是仿真器在ROM中设置的断点数是有限的,且单步运行时内部还要占用断点。
解决方案:1.清除所有断点。
2.使用“Option->Config Processor”打开“Processor Properties-ARM7TDMI”窗口,点击Clear ALL即可。
6.
错误显示:No disassembly could be read at the requested address.
re:
1.有可能被加密了,请使用ISP软件(FlashMagic),看看能否对Flash进行擦除。
2.也可能芯片被烧坏。
7.
错误显示:RDI Severe Error 00602: Can't halt target and make it enter DEBUG state.
请查数据手册!
mem_a.scf __RelInFlash
mem_b.scf __DebugInRam
mem_c.scf __DebugInFlash
15.

ARM+ADS+课程实验

ARM+ADS+课程实验

开发调试步骤1.安装 H-Jtag 软件,安装完成后,进行设置。

a. 运行h-jtag server设置JTAG 端口在 H-JTAG 主界面的菜单里点Setting->Jtag Settings,作如下图所示设置,点OK 返回主界面。

设置初始化脚本在 H-JTAG 的主界面,点Script->Init Script,跳出Init Script 窗口,点该窗口下面的Load 按钮,找到并选择打开FriendlyARM2440.his 文件,这时,Init Script 窗口会被载入的脚本填充,如图,注意不要点选“Enable Auto Init”,点OK 退回H-JTAG 主界面:检测目标器件使用开发板附带的 JTAG 小板连接开发板的JTAG 接口,并接上打开电源。

点主菜单Operations->Detect Target,或者点工具栏相应的图标也可以,这时就可以看到已经检测到目标器件了。

提示:如果没有设置初始化脚本,也可以检测到CPU,但无法进行下面的单步调试。

b. 运行h-flasher注意:执行以下步骤之前,要确保开发板选择从Nor Flash 启动,切记!在H-Flasher 窗口菜单中选择“Load”,出现打开文件选择窗口,选择H-Flasher_mini2440.hfc 文件。

点 H-Flasher 左侧导航栏的“4 Programming”,出现如图界面:点 H-Flasher 左侧导航栏的“4 Programming”,出现如图界面:点一下“Check”按钮,H-Flasher 将会探测到开发板所用的Nor Flash 所用的型号为SST39VF1601点Type 下拉列表,选择“Plain Binary Format”,如图:2.编译和链接配置a. 编译环境设置在进行编译和链接之前,首先需要对生成的目标进行配置,点Edit 菜单,选择“DebugRel Setting…”b. 为HJTAG配置AXD DEBUGGER点菜单Options->Confiuguer Target…,出现如下窗口:在该窗口中点击 Add 按钮,跳出选择文件对话框,找到H-JTAG 安装目录,选择并打开里面的H-JTAG.dll 文件,如图:此时会在 Choose Target 窗口中多了一项H-JTAG,如图,点OK 返回AXD Debugger主界面:实验一:LED灯与蜂鸣器实验目的:依次点亮LED1,延时,熄灭,点亮LED2,延时,熄灭,点亮LED3,延时,熄灭,点亮LED4,延时,熄灭,打开蜂鸣器,延时,关闭。

ARM开发软件ADS教程

ARM开发软件ADS教程

ARM开发软件ADS教程(中文)ADS(ARM Developer Suite)是ARM公司推出ARM集成开发环境,操作简单方便,获得广大开发人员的青睐。

下面使用ADS v1.2做一个实例教程,帮助大家学会使用ADS编写程序和仿真调试。

(使用汇编语言)首先:下载ADS v1.2版本(英文版)并安装好ADS。

安装好ADS之后可以看到开始菜单---所有程序---ARM Developer Suite v1.2程序组下面开始新建一个工程第一步:单击“开始“>>所有程序>>ARM Developer Suite v1.2 >>选择CodeWarrior for ARM Developer Suite 打开codewarrior 界面(如下图所示),再选择File >> New .新建一个工程第二步:在工程向导中选择Project 选项卡,选择ARM Executable Image 并输入工程名称为first选择工程文件保存目录等(如下图所示)第三步:选择Targets选项卡再双击DebugRel 进入配置对话框第四步:在配置对话框中选择ARM Linker 在RW base 中输入0x10000单击确定第五步:建立好一个工程项目之后,接下来是新建一个源程序,单击File >> New 选择File选项卡,在File name中输入文件名test.s选择Add to Project在Targets选项中选择Debug、DebugRel、Release这三个选项然后单击确定第六步:编写程序在test.s中输入如下程序AREA MYPRO,CODE,READONLYENTRYMOV R1,#20MOV R2,#30CMP R1,R2 ;比较R1与R2BLT HERE ;如果R1小于R2则跳转到HERE(其中HERE是标号)MOV R3,#0HERE MOV R3,#1END本程序是比较R1,R2的大小,如果R1小于R2则给R3赋1。

第ADS开发环境和ARM汇编语言

第ADS开发环境和ARM汇编语言
ADS中包含有3个调试器: (1) AXD(ARM eXtended Debugger):ARM扩展调试器; (2) armsd(ARM Symbolic Debugger):ARM符号调试器; (3) Debug target
AXD可以在Windows 和UNIX下,进行程序的调试。 它为用C,C++,和汇编语言编写的源代码提供了一个全 面的Windows 和UNIX 环境。
无需对armlib和cpplib这两个库路径分开指明,链接器会 自动从用户所指明的库路径中找出这两个子目录。
7
3.1.3GUI开发环境(Code Warrior和AXD)
CodeWarrior for ARM是一套完整的集成开发工具,充分 发挥了ARM RISC 的优势, 使产品开发人员能够很好的应 用尖端的片上系统技术. 该工具是专为基于ARM RISC的 处理器而设计的, 它可加速并简化嵌入式开发过程中的每 一个环节,使得开发人员只需通过一个集成软件开发环境 就能研制出ARM产品,在整个开发周期中,开发人员无需 离开CodeWarrior开发环境, 因此节省了在操做工具上花的 时间,使得开发人员有更多的精力投入到代码编写上来,
助记符
指令功能描述
SWI
软件中断指令
SWP
交换指令
TEQ
相等测试指令
TST
位测试指令
27
ARM微处理器指令的条件域
指令的条件域
当处理器工作在ARM状态时,几乎所有的指令均根据CPSR 中条件码的状态和指令的条件域有条件的执行。当指令的 执行条件满足时,指令被执行,否则指令被忽略。
每一条ARM指令包含4位的条件码,位于指令的最高4位 [31:28]。条件码共有16种,每种条件码可用两个字符表 示,这两个字符可以添加在指令助记符的后面和指令同时 使用。例如,跳转指令B可以加上后缀EQ变为BEQ表示“相 等则跳转”,即当CPSR中的Z标志置位时发生跳转。

ADS对于ARM7的烧录方法笔记

ADS对于ARM7的烧录方法笔记

通过H-JTAG烧录ARM7程序,一开始遇到了很多问题,H-JTAG的转USB口PC机居然认成了打印端口,以至于开H-JTAG根本就无反应。

后来又换成直接用并口连接,可是H-JTAG中依然没有检测出CPU型号。

网上查了之后才知道,要打开H-JTAG的Settings->USB/LPT Selection选项,如图:使用并口就要选择LPT形式,这样再点击Detect Target就出现ARM7的CPU型号了。

而烧写写好的程序也费了我很多精力,从直接用H-FLASH烧写KEIL4编译生成的.bin 文件开始,又烧写ADS1.2所生成的.bin文件,开发板一直都是白屏一块。

经过朋友帮忙明白原来还要经过很多配置。

先要在H-JTAG的Flasher选项下勾选Auto Download选项,打开ADS的工程,在工程查看栏中选择DebugInFLASH,点击make进行工程的编译,编译正确后选择Debug开启AXD 调试程序。

对AXD的配置有如下:打开Options->Configure Target选项,如图:选择Add按钮,找到H-JTAG的安装路径,将DLLS目录下的H-JTAG.dll文件添加进来。

如果点击Debug的时候有窗口提示:说明目标板为连接好或未上电源。

另一种情况是存在中文路径,需要重新打开AXD的Options->Configure Target选项,选择H-JTAG.dll的选项后点击OK,关闭AXD重新开启。

在进行AXD烧写之前需要在启动H-Flasher,选择芯片后配置如下:在Programming窗口:点击Check按钮读取到CPU型号后才可以开始AXD的步骤。

这些步骤相对与KEIL4下的调试复杂一些,H-JTAG的使用与J-LINK的使用相比也是更为不方便,但基本原理都一样。

ADS调试ARM程序

ADS调试ARM程序

ADS调试ARM程序详解本文出自:jerry’s blog /space.php?uid=25906157转载请注明出处,谢谢。

一,实验前的准备工作1,安装ADS 1.2,注意选择全部安装2,安装H-JTAG软件,官网有下载3,设置并口:进BIOS中设置并口为ECP模式4,连接硬件:将J-TAG小板一端接入计算机并口,另一端接在开发板的J-TAG接口上,然后打开开发板的电源二,配置J-TAG打开H-TAG,在Scrip->Init Scriip中弹出对话框,点load,加载*.his文件(这个文件一般开发板光盘上会带有),加载成功后,点Detect Target会检测到开发板所使用CPU核的型号,如下图:三,配置CodeWarrior在程序里打开ARM Developer Suite->CodeWarrior for ARM Develop Suite打开后,点File->New,新建一个工程,取名为:test313。

确定后如下图所示:右键如上图所示的位置,Add Files,添加你事先写好的源代码,本例中添加的是test1.S。

在编译和链接之前,要对生成的目标进行配置,点Edit,选择”DebugRel Setting……”,如下图:在Target Setting中选择Post-linker为ARM fromELF,在ARM Assembler中选择Architecture or Processor为ARM920T(这个是根据H-JTAG检测出来的类型,即你的ARM核来决定的。

)如下图:在ARM C Compiler中选择为ARM920T在ARM C++ Compiler中选择为ARM920T如果要用到Thumb指令,下面的两个也要设置成ARM920T接下来,设置RO Base,即只读代码(程序)的基地址,如下图:在ARM fromELF中设置Output file name为test1.bin,如下图:配置完成,点击“Make”,如图:如果无错,在\DebutRel中可生成test1.bin。

ADS实验调试方法

ADS实验调试方法

图 9 : Execute 下拉列表命令 下面我们分别执行各个命令: Go :让系统运行,执行结果如图 10 所示:
图 10:运行 Go
Stop:停止系统的运行,如图 11 所示。
图 11:运行 Stop 当运行 Stop 命令后,光标就会停在运行到的地方。 Step In:进入函数体内执行。如图 12 所示,表示还没有进入之前,图 13 表示进入后的 运行情况。
图 3 :ARM Link 的 Options 设置 Options 中的 Image entry point 表示映像的入口点 (地址) , boot.o(boot) 表示系统从目标
文件 boot.o 中 booLayout 设置 在 Layout 中, Place at beginning of image 下的 Object/symbol 表示目标文件,Section 表 示目标文件中的代码段。这与 Options 中的 Place at beginning of image 相同。 2、执行 ProjectMake ,也可以直接用快捷键 F7 进行编译、连接生成映像文件。如图 5 所示,执行后,会出现编译、连接后的结果,如图 6 所示。
图 30 :中断调试 2、执行 Go,让系统运行起来,之后再停止下来,我们可以看到程序进入等待中断 的状态。如图 31 所示:
图 31 :进入等待中断状态 3、在中断服务子程序里面设置断点,如图 32 所示:
图 32 :设置断点 4 、再执行 Go,让系统运行起来,当通过按键产生中断后,系统就会跳到中断服务子程 序里面执行,并停止在断点处。如图 33 所示:
Toggle Breakpiont:设置断点,如图 20 所示,设置了断点,图 21 表示运行 Go 后的运 行情况。

ADS下简单ARM汇编程序实验

ADS下简单ARM汇编程序实验

实验一ADS下简单ARM汇编程序实验实验目的:1、熟悉ADS1.2下进行汇编语言程序设计的基本流程;2、熟悉在ADS中创建工程及编写、编译和运行汇编语言程序的方法;3、熟悉AXD中各种调试功能。

实验环境:1、硬件:PC机。

2、软件ADS1.2。

实验内容:1、在ADS中新建工程,并设置开发环境。

2、在Code Warrior 环境中编辑、编译和链接汇编语言程序,并生成可执行文件。

3、在AXD中调试汇编程序;4、使用命令行界面编辑、编译和链接汇编程序。

实验过程:本实验要求在ADS环境下,编写一个汇编程序,计算S=1+2+3……+n的累加值。

把累加结果S存入到存储器的指定位置;在AXD中调试该程序,使用ARMulator模拟目标机。

1、新建工程。

打开Code Warrior,选择File->New(project)选项,使用ARM Executable Image模版新建一个工程。

2、设置编译和链接选项。

由于我们使用的是模拟机,设置汇编语言编译器的模拟处理器架构为Xscale;在ARM Linker 中,选择output选项卡并选择Linktype为Simple类型,确认RO Base为0x8000,修改RW Base 为0x9000,如下图所示。

3、为当前工程添加源程序文件。

ARM汇编程序源文件后缀名为S大小写均可。

确保添加入当前工程复选框选上。

4、编辑源程序代码。

参考程序add.s :;armadd源程序N EQU 7 ;累加次数;定义名为Adding的代码段AREA Adding,CODE,READONLYENTRYMOV R0,#0MOV R1,#1REPEAT ADD R0,R0,R1ADD R1,R1,#1CMP R1,#NBLE REPEATLDR R2,=RESULTSTR R0,[R2]HERE B HERE定义名为Dataspace的数据段AREA Dataspace,DATA,READWRITERESULT DCD 0END5、编译汇编源代码文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ADS调试ARM程序详解
本文出自:jerry’s blog /space.php?uid=25906157转载请注明出处,谢谢。

一,实验前的准备工作
1,安装ADS 1.2,注意选择全部安装
2,安装H-JTAG软件,官网有下载
3,设置并口:进BIOS中设置并口为ECP模式
4,连接硬件:将J-TAG小板一端接入计算机并口,另一端接在开发板的J-TAG接口上,然后打开开发板的电源
二,配置J-TAG
打开H-TAG,在Scrip->Init Scriip中弹出对话框,点load,加载*.his文件(这个文件
一般开发板光盘上会带有),加载成功后,点Detect Target会检测到开发板所使用
CPU核的型号,如下图:
三,配置CodeWarrior
在程序里打开ARM Developer Suite->CodeWarrior for ARM Develop Suite
打开后,点File->New,新建一个工程,取名为:test313。

确定后如下图所示:
右键如上图所示的位置,Add Files,添加你事先写好的源代码,本例中添加的是test1.S。

在编译和链接之前,要对生成的目标进行配置,点Edit,选择”DebugRel Setting……”,如下图:
在Target Setting中选择Post-linker为ARM fromELF,
在ARM Assembler中选择Architecture or Processor为ARM920T(这个是根据H-JTAG检测出来的类型,即你的ARM核来决定的。

)
如下图:
在ARM C Compiler中选择为ARM920T
在ARM C++ Compiler中选择为ARM920T
如果要用到Thumb指令,下面的两个也要设置成ARM920T
接下来,设置RO Base,即只读代码(程序)的基地址,如下图:
在ARM fromELF中设置Output file name为test1.bin,如下图:
配置完成,点击“Make”,如图:
如果无错,在\DebutRel中可生成test1.bin。

四,配置AXD
在程序里打开ARM Developer Suite—>AXD Debugger,在Options->Configure Target….弹出对话框后添加H-JTAG.dll文件(这个文件是在H-TAG这个软件detect你的ARM核后生成的),如下图,完成后关闭AXD。

五,调试程序
点击CodeWarrior中的Debug按钮,AXD被自动启动,PC指向汇编程序入口处。

VC++6.0,至此,ADS调试ARM程序全部完成。

相关文档
最新文档