ADS实例教程.pdf

上传人:wj 文档编号:3437210 上传时间:2023-05-05 格式:PDF 页数:58 大小:3.48MB
下载 相关 举报
ADS实例教程.pdf_第1页
第1页 / 共58页
ADS实例教程.pdf_第2页
第2页 / 共58页
ADS实例教程.pdf_第3页
第3页 / 共58页
ADS实例教程.pdf_第4页
第4页 / 共58页
ADS实例教程.pdf_第5页
第5页 / 共58页
ADS实例教程.pdf_第6页
第6页 / 共58页
ADS实例教程.pdf_第7页
第7页 / 共58页
ADS实例教程.pdf_第8页
第8页 / 共58页
ADS实例教程.pdf_第9页
第9页 / 共58页
ADS实例教程.pdf_第10页
第10页 / 共58页
ADS实例教程.pdf_第11页
第11页 / 共58页
ADS实例教程.pdf_第12页
第12页 / 共58页
ADS实例教程.pdf_第13页
第13页 / 共58页
ADS实例教程.pdf_第14页
第14页 / 共58页
ADS实例教程.pdf_第15页
第15页 / 共58页
ADS实例教程.pdf_第16页
第16页 / 共58页
ADS实例教程.pdf_第17页
第17页 / 共58页
ADS实例教程.pdf_第18页
第18页 / 共58页
ADS实例教程.pdf_第19页
第19页 / 共58页
ADS实例教程.pdf_第20页
第20页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ADS实例教程.pdf

《ADS实例教程.pdf》由会员分享,可在线阅读,更多相关《ADS实例教程.pdf(58页珍藏版)》请在冰点文库上搜索。

ADS实例教程.pdf

HelloWorld!

入门范例入门范例By下面以一个通过44B0的UART0输出字符串“HelloWorld!

”的小程序为例简单讲解一下ADS的初步使用。

本范例的阅读对象是初学者,并假设初学者已经安装ADS1.2(ARMDeveloperSuite)软件。

首先通过“开始”-“程序”-“ARMDeveloperSuiteV1.2”-“CodewarriorforARMDeveloperSuite”打开Codewarrior,Codewarrior是Metrowerks公司为ARM公司所开发的IDE。

图1,新建工程ADS为用户提供了7个模板,分别是:

ARMExecutableImage:

用于由ARM指令的代码生成一个ELF格式的可执行映象文件;ARMObjectLibrary:

用于由ARM指令的代码生成一个armar格式的目标文件库;EmptyProject:

用于创建一个不包含任何库或者源文件的工程;MakefileImporterWizard:

用于将VC的nmake或者GNUmake文件转入到CodeWarriorIDE工程文件;ThumbARMExecutableImage:

用于由ARM指令和Thumb指令的混合代码生成一个可执行的ELF格式的映象文件;ThumbExecutableimage:

用于由Thumb指令创建一个可执行的ELF格式的映象文件;ThumbObjectLibrary:

用于由Thumb指令的代码生成一个armar格式的目标http:

/电子发烧友http:

/电子技术论坛文件库。

一般情况下均选择“ARMExecutabelImage”,然后在“Projectname:

”栏输入工程名称,在“Location:

”栏指定路径,本例子的工程名称为“Hello”,点击确定后“Hello”工程建立。

图2,设置工程路径和工程名工程建立以后将生成一个空的工程管理窗口,如下图所示:

图3,工程管理窗口接下来就是向工程内添加和建立目标文件了,由于44B0学习评估板具有较多的资源,故其启动文件也较为复杂,所以一般都是直接打包使用,因此在添加启动文件之前请先将“44B0EVB”文件夹复制到“Hello”工程目录下,然后通过http:

/电子发烧友http:

/电子技术论坛工程管理窗口进行启动文件的添加,如下图所示:

图4,建立Group先通过点击右键选择“CreateGroup”,建立一个“44B0X”文件夹,然后再右键选择“AddFiles”来添加启动文件,如下图所示:

http:

/电子发烧友http:

/电子技术论坛图5,添加启动文件图6,添加文件到Target在添加文件的过程中你可能已经发现了CodeWarriorIDE为用户建立了三个Target,分别是“DebugRel”、“Realse”、“Debug”,这三个Target分别表示三种调试方式。

DebugRel表示在生成目标的时候会为每一个源文件生成调试信息;Debug表示为每一个源文件生成最完全的调试信息;Release表示不生成任何调试信息。

一般默认选择“DebugRel”。

同时从图6可以发现每次添加文件的时候都会询问添加到哪个“Target”,一般默认三个都添加,点击确定。

添加成功后会有一个如图7的提示:

http:

/电子发烧友http:

/电子技术论坛图7,ProjectMessages接下来建立一个main.c文件,可以通过“NEW”-“FILE”来建立,如下图:

图8,建立文件http:

/电子发烧友http:

/电子技术论坛图8中已经把“AddtoProject”前面的勾勾上了,所以main.c直接加入到了工程中,不然请在main.c建立后重新右键选择添加文件到工程。

最终的结果如下图所示:

图9,工程建立完毕工程建立完毕之后暂时还不能进行编译和链接,还需要进行一些配置。

http:

/电子发烧友http:

/电子技术论坛图10,工程配置可以通过“Edit”-“DebugRelSettings”或者“ALT+F7”或者点击图10中红色小圈内的快捷图标来进入“DebugRelSettings”。

如下图所示:

图11,“DebugRelSettings”http:

/电子发烧友http:

/电子技术论坛“DebugRelSettings”里面包含了很多设置信息,在此只说明几个和本范例相关的配置信息,如果想了解其他相关信息请参见“ADS文档”内的相关资料。

图12,“TargetSettings”“TargetSettings”里面有一处必须设置,即“Post-Linker”,“Post-Linker”用于对输出文件进行操作,由于本范例是需要最终写入到硬件中并运行的,所以必须进行设置(如果纯粹只需要进行软件仿真则此处可以不进行设置)。

这里选择“ARMfromELF”,表示编译后生成映象文件(Image)后再调用FromELF命令进行格式转换,以转换成.bin或者.hex等可以直接烧写到目标芯片执行的文件。

然后是“LanguageSettings”选项,本范例使用了“ARMAssembler”和“ARMCCompiler”所以请确保在这两个选项内的“Target”子选项内为“ARM7TDMI”(44B0为ARM7TDMI),如下图所示:

http:

/电子发烧友http:

/电子技术论坛图13,“LanguageSettings”设置完了“LanguageSettings”后接下来就是“Linker”选项了,在该选项里面有和硬件紧密相关的设置,首先进入“ARMLinker”子选项,在该子选项内需要设置入口地址(entry)、RO地址、RW地址。

首先设置R0/RW地址,RO表示ReadOnly,RW表示ReadWrite,RO栏默认是0x8000,需要根据实际硬件进行更改,一般为FLASH地址,RO也可以设置在SDRAM中,启动代码中包含COPY的部分,会将代码移动到SDRAM中运行,这对44B0特别适合,因为SDRAM很大,而且对速度的提升也很明显。

entrypoint必须同RO一致,以提供连接器定位信息本44B0板的FLASH地址即为0x00000000;RW栏默认为空,一般为SDRAM地址,本44B0板的地址即为0x0C000000(RO也可以设置在SDRAM中但entrypoint必须同RO一致)。

http:

/电子发烧友http:

/电子技术论坛图14,“ARMLinker”-“Output”图15,“ARMLinker”-“Options”在“ARMLinker”-“Options”内还需要设置一个“Imageentrypoint”,表示映象文件的入口地址。

设置完“Imageentrypoint”后继续在“Layout”里面设置代码中的哪一段置于IMAGE的起始位置:

http:

/电子发烧友http:

/电子技术论坛图中vector.oSelfBoot的意思就是将vector.o置于IMAGE的起始位置,必须设置!

图16,“ARMLinker”-“Layout”在“Linker”选项下还有一个子选项需要进行设置,即“ARMfromELF”,在“Target”的“Post-Linker”设置成“FromELF”后在这里需要进一步进行设置。

http:

/电子发烧友http:

/电子技术论坛图17,“Linker”-“ARMfromELF”-“Outputformat”参照图17进行输出文件格式的设置,一般设置成“Plainbinary”或者“Intel32bithex”。

图18,“Linker”-“ARMfromELF”-“Outputfilename”参照图18进行输出文件名称和路径的设置,请带上扩展名.bin或者.hex。

当工程文件是从别处copy过来的时候请记得对该路径进行重新设置,不然将出现警告提示。

到此为止已经完成基本设置,接下来可以进行编译和链接。

如果你的工程文件是从别处copy过来的则在编译之前还有一件事情需要做,即“RemoveObjectCode”,在选项在“Project”菜单下面,如图19所示,如果红圈内的.c文件前面没有勾的图标的话表示该工程已经编译链接通过,如果需要重新编译则需要先进行“RemoveObjectCode”操作以去除一些和路径、目标文件等有关联的信息。

“RemoveObjectCode”操作后如图20所示,请对比图19和20。

http:

/电子发烧友http:

/电子技术论坛图19,“RemoveObjectCode”图20,需要编译的文件前有勾状图标然后“Project”-“Make”或者F7,如果一切设置正确则出现如下提示:

http:

/电子发烧友http:

/电子技术论坛图21,MAKE结果如果有错误和警告请一一改正,直至编译通过。

最终生成可执行文件hello.bin/hello.hex(因具体设置而异)和调试文件hello.axf(映象文件)。

其中可执行文件的路径由用户在“LINKER”-“ARMfromELF”中的设置所决定;而调试文件(映象文件)“hello.axf“则默认生成在“.HelloHello_DataDebugRel”下。

Hello.bin/hello.hex可以通过工具软件直接烧入目标芯片运行,hello.axf可以通过ADS里面集成的AXD调试工具进行调试,可以软件仿真或者外部通过第三方JTAG调试工具进行调试。

下面简单讲解一下用AXD进行代码调试的流程:

AXD(ARMeXtendedDebugger)是ADS软件中独立于CodeWarriorIDE的图形软件,打开AXD软件,默认是打开的目标是ARMulator。

这个也是调试的时候最常用的一种调试工具,即软件仿真,下面内容主要是结合ARMulator介绍在AXD中进行代码调试的方法和过程,使读者对AXD的调试有初步的了解,在介绍完ARMulator之后将会在后文继续简单讲解如何通过JTAG开发工具进行硬件仿真。

要使用AXD必须首先要生成包含有调试信息的程序,在前面的hello工程中,已经生成的hello.axf就是包含有调试信息的可执行ELF格式的映像文件。

1.在AXD中打开调试文件可以有两种方法打开AXF文件,一是在make完成后通过“Project”-“Debug”或者F7进入AXD,另外也可以通过“开始”-“程序”-“ARMDeveloperSuite”http:

/电子发烧友http:

/电子技术论坛-“AXD”打开AXD,然后再在菜单“File”中选择“Loadimage”选项,打开LoadImage对话框,找到要装载的.axf映像文件,点击“打开”按钮,就把映像文件装载到目标内存中了。

在所打开的映像文件中会有一个蓝色的箭头指示当前执行的位置。

对于本例,打开映像文件后,如图22所示:

图22在axd下打开映像文件在菜单Execute中选择“Go”,将全速运行代码。

要想进行单步的代码调试,在Execute菜单中选择“Step”选项,或用F10即可以单步执行代码,窗口中蓝色箭头会发生相应的移动。

有时候,用户可能希望程序在执行到某处时,查看一些所关心的变量值,此时可以通过断点设置达到此要求。

将光标移动到要进行断点设置的代码处,在Execute菜单中,选择“ToggleBreakpoint”或按F9,就会在光标所在位置出现一个实心圆点,表明该处为断点。

还可以在AXD中查看寄存器值,变量值,某个内存单元的数值等等。

下面就结合本章中的例子,介绍在AXD中调试过程。

注意:

在打开AXD的时候可能会出现如下的错误,请按照下文指示进行处理。

图23,Warninghttp:

/电子发烧友http:

/电子技术论坛点击确定,出现另一对话框:

图24,Loadsessionfile点击“取消”进入AXD。

图25,ConfigureTarget进入AXD后通过“Option”-“ConfigureTarget”选择调试目标。

由于当前采用“ARMulator”进行软件仿真,故选择ARMUL,如下图所示:

http:

/电子发烧友http:

/电子技术论坛图26,选择ARMUL图27,点击OK,进入图27所示状态。

http:

/电子发烧友http:

/电子技术论坛图28,LoadImage然后LoadImage,在hello工程下面的“DebugRel”文件夹内找到hello.axf文件,然后调入。

另外在使用JTAG调试的时候还可能出现弹出FatalAXDError窗口,如下图所示,此时可以点击“Connectmode.”,然后选择“ATTACH.”项确定,再点击“Restart”。

接下来就可以使用【File】-【LoadImage.】加载调试文件,进行JTAG调试。

图29,FatalAXDError2.查看存储器内容在程序运行前,可以先查看两个宏变量IOPMOD和IOPDATA的当前值。

方法是:

从ProcessorViews菜单中选择“Memory”选项,如图30所示。

http:

/电子发烧友http:

/电子技术论坛图30查看存储器内容在MemoryStartaddress选择框中,用户可以根据要查看的存储器的地址输入起始地址,在下面的表格中会列出连续的64个地址。

因为I/O模式控制寄存器和I/O数据控制寄存器都是32位的控制寄存器,所以从0x3ff5000开始的连续四个地址空间存放的是I/O模式控制寄存器的值,从图8.11可以读出该控制寄存器的值开始为0xE7FF0010,I/O数据控制寄存器的内容是从地址0x3FF5008开始的连续四个地址空间存放的内容。

从图23中可以看出IODATA中的初始值为0xE7FF0010,注意因为用的是小端模式,所以读数据的时候注意高地址中存放的是高字节,低地址存放的是低字节。

现在对程序进行单步调试,当程序运行到for循环处时,可以再一次查看这两个寄存器中的内容,此时存储器的内容如图31所示:

图31单步运行后的存储器内容从图中可以看出运行完两个赋值语句后,两个寄存器的内容的确发生了变化,在地址0x3FF5000作为起始地址的连续四个存储单元中,可以读出I/O模式控制寄存器的内容为0xFFFFFFFF,在地址0x3FF5008开始的连续的四个存储单元中,可以读出I/O数据控制寄存器的内容为0x00000001。

3.设置断点可以在for循环体的“Delay(500000);”语句处设置断点,将光标定位在该语句处,使用快捷键F9在此处设置断点,按F5键,程序将运行到断点处,如果读者想查看子函数Delay是如何运行的,可以在Execute菜单中选择“StepIn”选项,或按下F8键,进入到子函数内部进行单步程序的调试。

如图32所示。

4.查看变量值在Delay函数的内部,如果用户希望查看某个变量的值,比如查看变量i的http:

/电子发烧友http:

/电子技术论坛值,可以在ProcessorViews菜单中选择“Watch”,会出现如图32所示的watch窗口,然后用鼠标选中变量i,点击鼠标邮件,在快捷菜单中选中“Addtowatch”,如图32所示,这样变量i默认是添加到watch窗口的Tab1中。

程序运行过程中,用户可以看到变量i的值在不断的图32设置断点图33查看变量http:

/电子发烧友http:

/电子技术论坛图34改变变量的格式变化。

默认显示变量数值是以十六进制格式显示的,如果用户对这种显示格式不习惯的话,可以通过在watch窗口点击鼠标右键,在弹出的快捷菜单中选择“Format”选项,如图34所示,用户可以选择所查看的变量显示数据的格式。

如果用户想从Delay函数中跳出到主函数中去,最简单的方法就是将光标定位到你想跳转到的主函数处,在Execute菜单中选择“RuntoCursor”选项,则程序会从Delay函数中跳转到光标所在位置。

“ARMulator”仿真一般是在不具备硬件条件的情况下进行软件仿真,多用于学习状态,并不能完全反映实际硬件运行状态。

接下来简单讲解用JTAG工具进行硬件调试的流程。

很多公司都有支持ADS的JTAG调试工具,象ARM公司,IAR公司,周立功公司等等,但是一般大公司的这些JTAG工具都是性能强大但是价格昂贵,其实也可以通过一些第三方的免费或者评估软件配合简易的JTAG小板进行调试开发,这其中流传的最广的可以算BANYANII软件和Wiggler板了。

首先需要安装BANYANII软件,并在调试前先运行它,具体安装和使用请参见BANYANII的用户手册。

安装完Banyan后,在:

开始程序-Banyan中打开Daemon,(即任务栏右下脚那只爬虫),出现如下所示图35:

http:

/电子发烧友http:

/电子技术论坛图35,启动BANYAN启动BANYAN并将目标板通过WigglerJTAG板连接到计算机的并口后首先需要通过BANYAN来检测目标是否连接正确。

虽然图示出现ARM7TDMI字样,但是该提示未必表示真正找到了44B0X板,并检测到44B0X,首先需要进行硬件设置,请点击HardwareSetting菜单,出现如下页面:

图36,HardwareSetuphttp:

/电子发烧友http:

/电子技术论坛BANYAN支持Wiggler和Predefined两种简易JTAG调试工具,由于我们使用的是兼容的简易WigglerJTAG调试工具,故需在InterfaceDevice里面设置成“Wiggler”,一般默认情况即为“Wiggler”,如果设置不正确将不能找到目标芯片44B0X。

请切记完成该步骤!

在完成硬件设置后即可检测JTAG工具能否连上目标板上的44B0X了,请点击Detect菜单选项,如果连接正确将真正检测ARM7TDMI核,如果连接错误将出现错误提示,如下图37:

图37,错误提示如果出现此错误提示请仔细检查电路连接和电源情况,直至按下“Detect”后出现图35的信息为止。

接下来就可以在AXD软件里面通过“Option”-“ConfigureTarget”设置“TargetEnviroments”,如下图所示:

http:

/电子发烧友http:

/电子技术论坛图38,选择Target为BANYAN接下来的流程就和使用“ARMulator”相差无几了,不过使用试用版本的BANYAN有不少功能限制,具体内容请参照BANYAN软件的用户手册。

最近网上还有一个叫XJTAG的调试代理软件也具备BANYAN的功能,而且是免费的,如果有兴趣可以下载安装并评估。

安装和配置过程简要如下:

点击进行安装,点击两次NEX后即可完成安装。

安装完成后通过点击快捷图标XJTAGBETA.lnk或者“开始”-“程序”-“XJTAGBETA0.2”-“XJTAGBETA”运行,该软件类似BANYAN,需要在ADS调用XJTAG的“XDI.DLL”之前先行开启代理软件“XJTAG.exe”。

界面如下图39:

图39,XJTAG代理软件对于本44B0板无须另行设置,默认设置即可正确运行,如有需要可以通过“Settings”菜单进行“JTAGSettings”、“PortSettings”、“TargetSettings”进行设置。

其中“JTAGSettings”用于设置JTAG类型,如下图,对于本44B0板应选择WigglerJTAG、另外“PortSettings”用于设置采用并口1还是2,一般都是1,“TargetSettings”用于设置目标芯片的内核,当前XJTAG支持ARM7和ARM9,可以直接选择或者设置成AUTO。

http:

/电子发烧友http:

/电子技术论坛图40,JTAGSettings另外“Options”可以对复位进行选择,对于本44B0板默认即可,该选项应和实际硬件(JTAG板)相结合进行设置。

图41,OptionsXJTAG在启动的时候即会通过默认配置对目标芯片进行搜索,如果连接正确应该出现如图39所示。

如果连接不上则会出现如图42的错误提示,请检查电源和连接然后重新“Detect”直至出现图39的提示。

http:

/电子发烧友http:

/电子技术论坛图42,Error检测到目标芯片后即可以在ADS里面进行调试了,只需要在AXD的“Option”-“ConfigureTarget”里面设置成“XDI”即可。

如下图所示,XDI即对应XJTAG。

图43,ChooseTarget设置完成即可和BANYAN一样进行调试,不过XJTAG没有BANYAN的爬虫直观,在调试过程中不会有其他提示,而BANYAN软件在调试过程中右下角任务栏上的爬虫会闪烁,表示有数据传输。

http:

/电子发烧友http:

/电子技术论坛另外还有一个支持ARM7ARM9的Wiggler&SDTJtagCable的RDI接口驱动crdi.dll(Ver2.0beta42005-5-4),也可以在通过ADS设置然后配合Wiggler进行JTAG调试。

该驱动无须安装,下载后解压,然后在AXD的“ChooseTarget”菜单下选择“Add”,然后将目录指向该驱动所在位置即可,如图:

图44,添加“Target”添加完成后选择“JTAG”,然后点击“Configure”进行配置,出现下图所示内容:

图55,RDISettinghttp:

/电子发烧友http:

/电子技术论坛第一栏为“DebugConfig”,可以对复位、下载、初始化、大小端等进行设置。

第二栏为“ChipsetInitialization”,可以选择或者修改或者自行新建适合自己的目标芯片的SFR列表,当前支持的目标芯片有85个之多,可以选择目标芯片任何参照现有的CFG文件进行修改以适合自己的系统。

图56,ChipsetInitialization如果配置正确点击确定后AXD应该会提示找到目标芯片,如下图:

图57,找到44B0AXD提示找到WigglerJTAGCable,并发现代码为“0x1F0F0F0F”,此代码http:

/电子发烧友http:

/电子技术论坛即为44B0的ID。

由于我们使用的都是简易的WigglerJTAG工具配合一些免费或者试用版本的第三方软件,而这些工具一般都有Flash下载的限制,不能直接在AXD里面完成代码的下载,而需要另外的第三方软件来实现可执行文件(一般为BIN或HEX文件)的下载,感谢这几年如火如荼的ARM推广运动,使得我们有不少免费的或者有功能限制的FLASH烧写软件可以使用。

下面简单介绍几种比较常见的工具。

首先是最为常见但是也是性能最差的免费软件FLUTED.EXE,FLUTED是一个基于命令行的程序,可以在2KXP的命令提示符下进行操作,其参数如下:

FlashProgrammingToolvia

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2