ImageVerifierCode 换一换
格式:PDF , 页数:58 ,大小:3.48MB ,
资源ID:3437210      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3437210.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ADS实例教程.pdf)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

ADS实例教程.pdf

1、Hello World!入门范例入门范例 By 下面以一个通过 44B0 的 UART0 输出字符串“Hello World!”的小程序为例简单讲解一下 ADS 的初步使用。本范例的阅读对象是初学者,并假设初学者已经安装 ADS1.2(ARM Developer Suite)软件。首先通过“开始”-“程序”-“ARM Developer Suite V1.2”-“Codewarrior for ARM Developer Suite”打开 Codewarrior,Codewarrior 是 Metrowerks 公司为ARM 公司所开发的 IDE。图 1,新建工程 ADS 为用户提供了 7 个

2、模板,分别是:ARM Executable Image:用于由 ARM 指令的代码生成一个 ELF 格式的可执行映象文件;ARM Object Library:用于由 ARM 指令的代码生成一个 armar 格式的目标文件库;Empty Project:用于创建一个不包含任何库或者源文件的工程;Makefile Importer Wizard:用于将 VC 的 nmake 或者 GNU make 文件转入到Code Warrior IDE 工程文件;Thumb ARM Executable Image:用于由 ARM 指令和 Thumb 指令的混合代码生成一个可执行的 ELF 格式的映象文件;

3、Thumb Executable image:用于由 Thumb 指令创建一个可执行的 ELF 格式的映象文件;Thumb Object Library:用于由 Thumb 指令的代码生成一个 armar 格式的目标http:/ 电子发烧友 http:/ 电子技术论坛文件库。一般情况下均选择“ARM Executabel Image”,然后在“Project name:”栏输入工程名称,在“Location:”栏指定路径,本例子的工程名称为“Hello”,点击确定后“Hello”工程建立。图 2,设置工程路径和工程名 工程建立以后将生成一个空的工程管理窗口,如下图所示:图 3,工程管理窗口 接

4、下来就是向工程内添加和建立目标文件了,由于 44B0 学习评估板具有较多的资源,故其启动文件也较为复杂,所以一般都是直接打包使用,因此在添加启动文件之前请先将“44B0EVB”文件夹复制到“Hello”工程目录下,然后通过http:/ 电子发烧友 http:/ 电子技术论坛工程管理窗口进行启动文件的添加,如下图所示:图 4,建立 Group 先通过点击右键选择“Create Group”,建立一个“44B0X”文件夹,然后再右键选择“Add Files”来添加启动文件,如下图所示:http:/ 电子发烧友 http:/ 电子技术论坛 图 5,添加启动文件 图 6,添加文件到 Target 在添

5、加文件的过程中你可能已经发现了 CodeWarrior IDE 为用户建立了三个Target,分别是“DebugRel”、“Realse”、“Debug”,这三个 Target 分别表示三种调试方式。DebugRel 表示在生成目标的时候会为每一个源文件生成调试信息;Debug 表示为每一个源文件生成最完全的调试信息;Release 表示不生成任何调试信息。一般默认选择“DebugRel”。同时从图 6 可以发现每次添加文件的时候都会询问添加到哪个“Target”,一般默认三个都添加,点击确定。添加成功后会有一个如图 7 的提示:http:/ 电子发烧友 http:/ 电子技术论坛 图 7,P

6、roject Messages 接下来建立一个 main.c 文件,可以通过“NEW”-“FILE”来建立,如下图:图 8,建立文件 http:/ 电子发烧友 http:/ 电子技术论坛 图 8 中已经把“Add to Project”前面的勾勾上了,所以 main.c 直接加入到了工程中,不然请在 main.c 建立后重新右键选择添加文件到工程。最终的结果如下图所示:图 9,工程建立完毕 工程建立完毕之后暂时还不能进行编译和链接,还需要进行一些配置。http:/ 电子发烧友 http:/ 电子技术论坛 图 10,工程配置 可以通过“Edit”-“DebugRel Settings”或者“AL

7、T+F7”或者点击图 10中红色小圈内的快捷图标来进入“DebugRel Settings”。如下图所示:图 11,“DebugRel Settings”http:/ 电子发烧友 http:/ 电子技术论坛“DebugRel Settings”里面包含了很多设置信息,在此只说明几个和本范例相关的配置信息,如果想了解其他相关信息请参见“ADS 文档”内的相关资料。图 12,“Target Settings”“Target Settings”里面有一处必须设置,即“Post-Linker”,“Post-Linker”用于对输出文件进行操作,由于本范例是需要最终写入到硬件中并运行的,所以必须进行设置

8、(如果纯粹只需要进行软件仿真则此处可以不进行设置)。这里选择“ARM fromELF”,表示编译后生成映象文件(Image)后再调用 FromELF 命令进行格式转换,以转换成.bin或者.hex等可以直接烧写到目标芯片执行的文件。然后是“Language Settings”选项,本范例使用了“ARM Assembler”和“ARM C Compiler”所以请确保在这两个选项内的“Target”子选项内为“ARM7TDMI”(44B0 为 ARM7TDMI),如下图所示:http:/ 电子发烧友 http:/ 电子技术论坛 图 13,“Language Settings”设置完了“Langu

9、age Settings”后接下来就是“Linker”选项了,在该选项里面有和硬件紧密相关的设置,首先进入“ARM Linker”子选项,在该子选项内需要设置入口地址(entry)、RO 地址、RW 地址。首先设置 R0/RW 地址,RO 表示 Read Only,RW 表示 Read Write,RO 栏默认是 0 x8000,需要根据实际硬件进行更改,一般为 FLASH 地址,RO 也可以设置在SDRAM中,启动代码中包含COPY的部分,会将代码移动到SDRAM中运行,这对 44B0 特别适合,因为 SDRAM 很大,而且对速度的提升也很明显。entry point必须同 RO 一致,以提

10、供连接器定位信息 本44B0板的FLASH地址即为0 x00000000;RW栏默认为空,一般为SDRAM地址,本 44B0 板的地址即为 0 x0C000000(RO 也可以设置在 SDRAM 中但 entry point 必须同 RO 一致)。http:/ 电子发烧友 http:/ 电子技术论坛 图 14,“ARM Linker”-“Output”图 15,“ARM Linker”-“Options”在“ARM Linker”-“Options”内还需要设置一个“Image entry point”,表示映象文件的入口地址。设置完“Image entry point”后继续在“Layout

11、”里面设置代码中的哪一段置于 IMAGE 的起始位置:http:/ 电子发烧友 http:/ 电子技术论坛图中 vector.o SelfBoot 的意思就是将 vector.o 置于 IMAGE 的起始位置,必须设置!图 16,“ARM Linker”-“Layout”在“Linker”选项下还有一个子选项需要进行设置,即“ARM fromELF”,在“Target”的“Post-Linker”设置成“FromELF”后在这里需要进一步进行设置。http:/ 电子发烧友 http:/ 电子技术论坛图 17,“Linker”-“ARM fromELF”-“Output format”参照图 1

12、7 进行输出文件格式的设置,一般设置成“Plain binary”或者“Intel 32 bit hex”。图 18,“Linker”-“ARM fromELF”-“Output file name”参照图 18 进行输出文件名称和路径的设置,请带上扩展名.bin 或者.hex。当工程文件是从别处 copy 过来的时候请记得对该路径进行重新设置,不然将出现警告提示。到此为止已经完成基本设置,接下来可以进行编译和链接。如果你的工程文件是从别处 copy 过来的则在编译之前还有一件事情需要做,即“Remove Object Code”,在选项在“Project”菜单下面,如图 19 所示,如果红圈

13、内的.c 文件前面没有勾的图标的话表示该工程已经编译链接通过,如果需要重新编译则需要先进行“Remove Object Code”操作以去除一些和路径、目标文件等有关联的信息。“Remove Object Code”操作后如图 20 所示,请对比图 19 和 20。http:/ 电子发烧友 http:/ 电子技术论坛 图 19,“Remove Object Code”图 20,需要编译的文件前有勾状图标 然后“Project”-“Make”或者 F7,如果一切设置正确则出现如下提示:http:/ 电子发烧友 http:/ 电子技术论坛 图 21,MAKE 结果 如果有错误和警告请一一改正,直至

14、编译通过。最终生成可执行文件 hello.bin/hello.hex(因具体设置而异)和调试文件hello.axf(映象文件)。其中可执行文件的路径由用户在“LINKER”-“ARM fromELF”中的设置所决定;而调试文件(映象文件)“hello.axf“则默认生成在“.HelloHello_DataDebugRel”下。Hello.bin/hello.hex 可以通过工具软件直接烧入目标芯片运行,hello.axf 可以通过 ADS 里面集成的 AXD 调试工具进行调试,可以软件仿真或者外部通过第三方 JTAG 调试工具进行调试。下面简单讲解一下用 AXD 进行代码调试的流程:AXD(A

15、RM eXtended Debugger)是 ADS 软件中独立于 CodeWarrior IDE 的图形软件,打开 AXD 软件,默认是打开的目标是 ARMulator。这个也是调试的时候最常用的一种调试工具,即软件仿真,下面内容主要是结合 ARMulator 介绍在 AXD 中进行代码调试的方法和过程,使读者对 AXD 的调试有初步的了解,在介绍完ARMulator之后将会在后文继续简单讲解如何通过JTAG开发工具进行硬件仿真。要使用 AXD 必须首先要生成包含有调试信息的程序,在前面的 hello 工程中,已经生成的 hello.axf 就是包含有调试信息的可执行 ELF 格式的映像文件

16、。1.在 AXD 中打开调试文件 可以有两种方法打开AXF文件,一是在make完成后通过“Project”-“Debug”或者 F7 进入 AXD,另外也可以通过“开始”-“程序”-“ARM Developer Suite”http:/ 电子发烧友 http:/ 电子技术论坛-“AXD”打开 AXD,然后再在菜单“File”中选择“Load image”选项,打开 Load Image 对话框,找到要装载的.axf 映像文件,点击“打开”按钮,就把映像文件装载到目标内存中了。在所打开的映像文件中会有一个蓝色的箭头指示当前执行的位置。对于本例,打开映像文件后,如图 22 所示:图 22 在 ax

17、d 下打开映像文件 在菜单 Execute 中选择“Go”,将全速运行代码。要想进行单步的代码调试,在 Execute 菜单中选择“Step”选项,或用 F10 即可以单步执行代码,窗口中蓝色箭头会发生相应的移动。有时候,用户可能希望程序在执行到某处时,查看一些所关心的变量值,此时可以通过断点设置达到此要求。将光标移动到要进行断点设置的代码处,在Execute 菜单中,选择“Toggle Breakpoint”或按 F9,就会在光标所在位置出现一个实心圆点,表明该处为断点。还可以在 AXD 中查看寄存器值,变量值,某个内存单元的数值等等。下面就结合本章中的例子,介绍在 AXD 中调试过程。注意

18、:在打开 AXD 的时候可能会出现如下的错误,请按照下文指示进行处理。图 23,Warning http:/ 电子发烧友 http:/ 电子技术论坛点击确定,出现另一对话框:图 24,Load session file 点击“取消”进入 AXD。图 25,Configure Target 进入 AXD 后通过“Option”-“Configure Target”选择调试目标。由于当前采用“ARMulator”进行软件仿真,故选择 ARMUL,如下图所示:http:/ 电子发烧友 http:/ 电子技术论坛 图 26,选择 ARMUL 图 27,点击 OK,进入图 27 所示状态。http:/

19、电子发烧友 http:/ 电子技术论坛 图 28,Load Image 然后 Load Image,在 hello 工程下面的“DebugRel”文件夹内找到 hello.axf文件,然后调入。另外在使用 JTAG 调试的时候还可能出现弹出 Fatal AXD Error 窗口,如下图所示,此时可以点击“Connect mode.”,然后选择“ATTACH.”项确定,再点击“Restart”。接下来就可以使用【File】-【Load Image.】加载调试文件,进行 JTAG 调试。图 29,Fatal AXD Error 2.查看存储器内容 在程序运行前,可以先查看两个宏变量 IOPMOD

20、和 IOPDATA 的当前值。方法是:从 Processor Views 菜单中选择“Memory”选项,如图 30 所示。http:/ 电子发烧友 http:/ 电子技术论坛 图 30 查看存储器内容 在 Memory Start address 选择框中,用户可以根据要查看的存储器的地址输入起始地址,在下面的表格中会列出连续的 64 个地址。因为 I/O 模式控制寄存器和 I/O 数据控制寄存器都是 32 位的控制寄存器,所以从 0 x3ff5000 开始的连续四个地址空间存放的是 I/O 模式控制寄存器的值,从图 8.11 可以读出该控制寄存器的值开始为 0 xE7FF0010,I/O

21、数据控制寄存器的内容是从地址 0 x3FF5008 开始的连续四个地址空间存放的内容。从图 23 中可以看出 IODATA 中的初始值为0 x E7FF0010,注意因为用的是小端模式,所以读数据的时候注意高地址中存放的是高字节,低地址存放的是低字节。现在对程序进行单步调试,当程序运行到 for 循环处时,可以再一次查看这两个寄存器中的内容,此时存储器的内容如图 31 所示:图 31 单步运行后的存储器内容 从图中可以看出运行完两个赋值语句后,两个寄存器的内容的确发生了变化,在地址 0 x3FF5000 作为起始地址的连续四个存储单元中,可以读出 I/O 模式控制寄存器的内容为 0 xFFFF

22、FFFF,在地址 0 x3FF5008 开始的连续的四个存储单元中,可以读出 I/O 数据控制寄存器的内容为 0 x00000001。3.设置断点 可以在 for 循环体的“Delay(500000);”语句处设置断点,将光标定位在该语句处,使用快捷键 F9 在此处设置断点,按 F5 键,程序将运行到断点处,如果读者想查看子函数 Delay 是如何运行的,可以在 Execute 菜单中选择“Step In”选项,或按下 F8 键,进入到子函数内部进行单步程序的调试。如图 32 所示。4.查看变量值 在 Delay 函数的内部,如果用户希望查看某个变量的值,比如查看变量 i 的http:/ 电子

23、发烧友 http:/ 电子技术论坛值,可以在 Processor Views 菜单中选择“Watch”,会出现如图 32 所示的 watch窗口,然后用鼠标选中变量 i,点击鼠标邮件,在快捷菜单中选中“Add to watch”,如图 32 所示,这样变量 i 默认是添加到 watch 窗口的 Tab1 中。程序运行过程中,用户可以看到变量 i 的值在不断的 图 32 设置断点 图 33 查看变量 http:/ 电子发烧友 http:/ 电子技术论坛 图 34 改变变量的格式 变化。默认显示变量数值是以十六进制格式显示的,如果用户对这种显示格式不习惯的话,可以通过在 watch 窗口点击鼠标右

24、键,在弹出的快捷菜单中选择“Format”选项,如图 34 所示,用户可以选择所查看的变量显示数据的格式。如果用户想从 Delay 函数中跳出到主函数中去,最简单的方法就是将光标定位到你想跳转到的主函数处,在 Execute 菜单中选择“Run to Cursor”选项,则程序会从 Delay 函数中跳转到光标所在位置。“ARMulator”仿真一般是在不具备硬件条件的情况下进行软件仿真,多用于学习状态,并不能完全反映实际硬件运行状态。接下来简单讲解用 JTAG 工具进行硬件调试的流程。很多公司都有支持 ADS 的 JTAG 调试工具,象 ARM 公司,IAR 公司,周立功公司等等,但是一般大

25、公司的这些 JTAG 工具都是性能强大但是价格昂贵,其实也可以通过一些第三方的免费或者评估软件配合简易的 JTAG 小板进行调试开发,这其中流传的最广的可以算 BANYAN II 软件和 Wiggler 板了。首先需要安装 BANYAN II 软件,并在调试前先运行它,具体安装和使用请参见 BANYAN II 的用户手册。安装完Banyan 后,在:开始程序-Banyan 中打开Daemon,(即 任务栏右下脚那只爬虫),出现如下所示图35:http:/ 电子发烧友 http:/ 电子技术论坛 图 35,启动 BANYAN 启动BANYAN并将目标板通过Wiggler JTAG板连接到计算机的

26、并口后首先需要通过 BANYAN 来检测目标是否连接正确。虽然图示出现ARM7TDMI 字样,但是该提示未必表示真正找到了44B0X 板,并检测到44B0X,首先需要进行硬件设置,请点击Hardware Setting 菜单,出 现如下页面:图36,Hardware Setup http:/ 电子发烧友 http:/ 电子技术论坛BANYAN支持Wiggler和Predefined两种简易JTAG调试工具,由于我们使用的是兼容的简易Wiggler JTAG调试工具,故需在Interface Device里面设置成“Wiggler”,一般默认情况即为“Wiggler”,如果设置不正确将不能找到目

27、标芯片44B0X。请切记完成该步骤!在完成硬件设置后即可检测JTAG 工具能否连上目标板上的44B0X 了,请点 击Detect 菜单选项,如果连接正确将真正检测ARM7TDMI 核,如果连接错误将出 现错误提示,如下图37:图37,错误提示 如果出现此错误提示请仔细检查电路连接和电源情况,直至按下“Detect”后出现图35的信息为止。接下来就可以在AXD软件里面通过“Option”-“Configure Target”设置“Target Enviroments”,如下图所示:http:/ 电子发烧友 http:/ 电子技术论坛图38,选择Target为BANYAN 接下来的流程就和使用“A

28、RMulator”相差无几了,不过使用试用版本的BANYAN有不少功能限制,具体内容请参照BANYAN软件的用户手册。最近网上还有一个叫XJTAG的调试代理软件也具备BANYAN的功能,而且是免费的,如果有兴趣可以下载安装并评估。安装和配置过程简要如下:点击进行安装,点击两次NEX后即可完成安装。安装完成后通过点击快捷图标XJTAG BETA.lnk或者“开始”-“程序”-“XJTAG BETA 0.2”-“XJTAG BETA”运行,该软件类似BANYAN,需要在ADS调用XJTAG的“XDI.DLL”之前先行开启代理软件“XJTAG.exe”。界面如下图39:图39,XJTAG代理软件 对

29、于本44B0板无须另行设置,默认设置即可正确运行,如有需要可以通过“Settings”菜单进行“JTAG Settings”、“Port Settings”、“Target Settings”进行设置。其中“JTAG Settings”用于设置JTAG类型,如下图,对于本44B0板应选择Wiggler JTAG、另外“Port Settings”用于设置采用并口1还是2,一般都是1,“Target Settings”用于设置目标芯片的内核,当前XJTAG支持ARM7和ARM9,可以直接选择或者设置成AUTO。http:/ 电子发烧友 http:/ 电子技术论坛 图40,JTAG Setting

30、s 另外“Options”可以对复位进行选择,对于本44B0板默认即可,该选项应和实际硬件(JTAG板)相结合进行设置。图41,Options XJTAG在启动的时候即会通过默认配置对目标芯片进行搜索,如果连接正确应该出现如图39所示。如果连接不上则会出现如图42的错误提示,请检查电源和连接然后重新“Detect”直至出现图39的提示。http:/ 电子发烧友 http:/ 电子技术论坛 图42,Error 检测到目标芯片后即可以在ADS里面进行调试了,只需要在AXD的“Option”-“Configure Target”里面设置成“XDI”即可。如下图所示,XDI即对应XJTAG。图43,C

31、hoose Target 设置完成即可和BANYAN一样进行调试,不过XJTAG没有BANYAN的爬虫直观,在调试过程中不会有其他提示,而BANYAN软件在调试过程中右下角任务栏上的爬虫会闪烁,表示有数据传输。http:/ 电子发烧友 http:/ 电子技术论坛 另外还有一个支持ARM7 ARM9 的Wiggler&SDT Jtag Cable 的RDI接口驱动crdi.dll(Ver2.0 beta4 2005-5-4),也可以在通过ADS设置然后配合Wiggler进行JTAG调试。该驱动无须安装,下载后解压,然后在AXD的“Choose Target”菜单下选择“Add”,然后将目录指向该

32、驱动所在位置即可,如图:图44,添加“Target”添加完成后选择“JTAG”,然后点击“Configure”进行配置,出现下图所示内容:图55,RDI Setting http:/ 电子发烧友 http:/ 电子技术论坛第一栏为“Debug Config”,可以对复位、下载、初始化、大小端等进行设置。第二栏为“Chipset Initialization”,可以选择或者修改或者自行新建适合自己的目标芯片的SFR列表,当前支持的目标芯片有85个之多,可以选择目标芯片任何参照现有的CFG文件进行修改以适合自己的系统。图56,Chipset Initialization 如果配置正确点击确定后AX

33、D应该会提示找到目标芯片,如下图:图57,找到44B0 AXD提示找到Wiggler JTAG Cable,并发现代码为“0 x1F0F0F0F”,此代码http:/ 电子发烧友 http:/ 电子技术论坛即为44B0的ID。由于我们使用的都是简易的Wiggler JTAG工具配合一些免费或者试用版本的第三方软件,而这些工具一般都有Flash下载的限制,不能直接在AXD里面完成代码的下载,而需要另外的第三方软件来实现可执行文件(一般为BIN或HEX文件)的下载,感谢这几年如火如荼的ARM推广运动,使得我们有不少免费的或者有功能限制的FLASH 烧写软件可以使用。下面简单介绍几种比较常见的工具。首先是最为常见但是也是性能最差的免费软件FLUTED.EXE,FLUTED是一个基于命令行的程序,可以在2KXP的命令提示符下进行操作,其参数如下:Flash Programming Tool via

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

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