-99火爆理 svi.mcp -回x DebugRel 习涵必下目 Files Link Order Targets File Code Data Add Files... Create Group 0files 图1.5添加源文件到工程中 为工程添加源码常用的方法有两种,既可以使用入图1.5所示方法,也可以在“Project” 菜单项中,选择“Add Files..”,这两种方法都会打开文件浏览框,用户可以把已经存在的 文件添加到工程中来。当选中要添加的文件时,会出现一个对话框,如图1.6所示,询问用 户把文件添加到何类目标中,在这里,我们选择DebugRel目标。这里我们添加了swi.h,aswi.s c_swi.s和main.c文件。 在建立好一个工程时,默认的target是DebugRel,还有另外两个可用的target,分别为 Realse和Debug,这三个target的含义分别为: DebugRel:使用该目标,在生成目标的时候,会为每一个源文件生成调试信息: Debug:使用该目标为每一个源文件生成最完整的调试信息: Release:.使用该目标不会生成任何调试信息
图 1.5 添加源文件到工程中 为工程添加源码常用的方法有两种,既可以使用入图 1.5 所示方法,也可以在“Project” 菜单项中,选择“Add Files…”,这两种方法都会打开文件浏览框,用户可以把已经存在的 文件添加到工程中来。当选中要添加的文件时,会出现一个对话框,如图 1.6 所示,询问用 户把文件添加到何类目标中,在这里,我们选择DebugRel目标。这里我们添加了swi.h,a_swi.s c_swi.s 和 main.c 文件。 在建立好一个工程时,默认的 target 是 DebugRel,还有另外两个可用的 target,分别为 Realse 和 Debug,这三个 target 的含义分别为: DebugRel:使用该目标,在生成目标的时候,会为每一个源文件生成调试信息; Debug:使用该目标为每一个源文件生成最完整的调试信息; Release:使用该目标不会生成任何调试信息
-9*爆:理 Add Files Add files to targets: Targets DebugRel ■Release Debug OK Cancel 图1.6选择生成日标类型 到目前为止,一个完整的名为S的项目工程已经建立,下面该对工程进行编译和链接 工作。 1.3.2.2编译和链接项目工程 在编译swi项目之前,先进行设置,点击Edit菜单,选择“DebugRel Settings..”,或 者按At+F7快捷键,显示如图1.7对话框。 世Debug&e1 Settings 3 X Target Settings Panels Target Settings 日Target -Target Settings Target Name:DebugRel Access Paths Build Extras Linker:ARM Linker -Runtime Settings Pre-linker:None …File Mappings -Source Trees Post-linker:None ARM Target Output Directory: 日Language Settings Choose -ARM Assembler (Project} -ARM C Compiler Clear ARM C++Compiler -Thumb C Compile Save project entries using relative paths LThumb C++Co.. 日Linker ARM Linker ARM fromELF 日Editor Factory Settings Revert Import Panel... Export Panel. OK Cancel Apply 图1.7 DebugRel设置对话框 图1.7的最左边部分是目标设置面板,它包括如下几个大的设置对象: >Target设置选项 Target Settings:包括Target Name,Linker,Pre--linker和Post--linker等设置
图 1.6 选择生成目标类型 到目前为止,一个完整的名为 swi 的项目工程已经建立,下面该对工程进行编译和链接 工作。 1.3.2.2 编译和链接项目工程 在编译 swi 项目之前,先进行设置,点击 Edit 菜单,选择“DebugRel Settings…”,或 者按 Alt + F7 快捷键,显示如图 1.7 对话框。 图 1.7 DebugRel 设置对话框 图 1.7 的最左边部分是目标设置面板,它包括如下几个大的设置对象: Ø Target 设置选项 Target Settings:包括 Target Name,Linker,Pre-linker 和 Post-linker 等设置
Access Paths:主要是用于项目的路径设置。 Build Extras:主要用于Build附加的选项设置。 Runtime Settings:包括一般设置、环境设置等。 File Mappings: 包含映射信息,文件类型,编辑语言等。 Source Trees:包含源代码树结构信息,以及路径选择等。 ARM Target:定义输出image文件名和类型等。 Language Settings设置选项 ARM Assembler:对ARM汇编语言的支持选项设置。 ARM C Compiler:对C语言的支持选项设置。 ARMC++Compiler:对C++语言的支持选项设置。 Thumb C Compiler::对Thumb C语言的支持选项设置。 Thumb C+Compiler:对Thumb C+语言的支持选项设置。 >Linker设置选项 ARM Linker:对输出的链接类型、RO、RW Base地址设置等选项。 ARM fromELF:定义输出文件格式以及路径等。 >Edit设置选项 Custom Keywords::对客户化关键字高亮颜色的设置。 Debugger设置选项 Other Executables:制定其他的可执行文件来调试当调试该目标板时。 Debugger Settings:对调试器的一些基本设置。 ARM Debugger::选择调试时调试器(AXD,Armsd和其他等)的选择。 ARM Runner:选择运行时的调试器(AXD,Armsd和其他等)的选择。 Miscellaneous设置选项 ARM Features:设置一些受限制的特性。 接下来点击Code Warrior IDE的菜单Project下的make菜单,就可以对swi工程进行编 译和链接了。整个编译链接之后生成如图1.8所示: Errors Tarnings 与回x @o △o 国13 Errors and warnings for wi.mcp 鱼△ Image component sizes Code RO Data RW Data ZI Data Debug 772 60 4 0 4744 Object Totals 9408 312 0 300 4320 Library Totals 国 =============================================================================== 顶 Code RO Data RW Data ZI Data Debug 10180 372 4 300 9064 Grand Totals 国 四D Total Ro Size(Code RO Data) 10552(10.30kB) Total RU Size(RW Data ZI Data) 304(0.30kB) Total ROM Size(Code RO Data RW Data) 10556(10.31kB) ============================================================================ 图1.8编译和链接的之后
Access Paths:主要是用于项目的路径设置。 Build Extras:主要用于 Build 附加的选项设置。 Runtime Settings:包括一般设置、环境设置等。 File Mappings:包含映射信息,文件类型,编辑语言等。 Source Trees:包含源代码树结构信息,以及路径选择等。 ARM Target:定义输出 image 文件名和类型等。 Ø Language Settings 设置选项 ARM Assembler:对 ARM 汇编语言的支持选项设置。 ARM C Compiler:对 C 语言的支持选项设置。 ARM C++ Compiler:对 C++语言的支持选项设置。 Thumb C Compiler:对 Thumb C 语言的支持选项设置。 Thumb C++ Compiler:对 Thumb C++语言的支持选项设置。 Ø Linker 设置选项 ARM Linker:对输出的链接类型、RO、RW Base 地址设置等选项。 ARM fromELF:定义输出文件格式以及路径等。 Ø Edit 设置选项 Custom Keywords:对客户化关键字高亮颜色的设置。 Ø Debugger 设置选项 Other Executables:制定其他的可执行文件来调试当调试该目标板时。 Debugger Settings:对调试器的一些基本设置。 ARM Debugger:选择调试时调试器(AXD,Armsd 和其他等)的选择。 ARM Runner:选择运行时的调试器(AXD,Armsd 和其他等)的选择。 Ø Miscellaneous 设置选项 ARM Features:设置一些受限制的特性。 接下来点击 CodeWarrior IDE 的菜单 Project 下的 make 菜单,就可以对 swi 工程进行编 译和链接了。整个编译链接之后生成如图 1.8 所示: 图 1.8 编译和链接的之后
火龙果·整理 在工程swi所在的目录下,会生成一个名为:工程名data的目录,即swi data的目录, 在这个目录下不同类别的目标对应不同的目录。在本例中由于我们使用的是DebugRe目标, 所以生成的最终文件都应该在该目录下。进入到DebugRel目录中去,读者会看到make后 生成的映像文件和二进制文件,映像文件用于调试,二进制文件可以烧写到目标板的lash 中运行。关于Code Warrior IDE的具体使用请参考ADS软件的在线帮助文件。 1.3.3使用AXD IDE AXD是ADS软件中独立于CodeWarrior IDE的图形软件,打开AXD软件,默认是打 开的目标是ARMulator。ARMulator也是调试的时候最常用的一种调试工具,本节主要是结 合ARMulator介绍在AXD中进行代码调试的方法和过程,使读者对AX①的调试有初步的 了解。要使用AXD必须首先要生成包含有调试信息的程序,在上节中,己经生成的swi,axf 文件就是含有调试信息的可执行ELF格式的映像文件。这一节还是以swⅵ工程为例讲述AXD 调试工具的基本用法。 1.3.3.1打开调试文件 在菜单File中选择“Load image.”选项,打开Load Image对话框,找到要装载的.axf 映像文件,点击“打开”按钮,就把映像文件装载到目标内存中了。在所打开的映像文件中 会有一个蓝色的箭头指示当前执行的位置。如图19所示: 到× d51te净tt月18时m指n41st材w 图x 图图3回s回图T回国E四恒s四四时刊个石因82 uderined 4 11.E13-pc) c0.(ELL.E13-po :0.,:13-ne) o0tt9 .(ElLE-ol 500350 【0gw0g11900 al]done t4,t4,11 ; APM7DMI-Cmool F女g 图1.9打开swi调试文件 此外,在菜单File中还有一个“Load Debug Symbols.”选项,该选项是用来调式那些 调试器不能访问调试符号的情况,比如调试装载在ROM中的image。通常“Load image
在工程 swi 所在的目录下,会生成一个名为:工程名_data 的目录,即 swi_data 的目录, 在这个目录下不同类别的目标对应不同的目录。在本例中由于我们使用的是 DebugRe 目标, 所以生成的最终文件都应该在该目录下。进入到 DebugRel 目录中去,读者会看到 make 后 生成的映像文件和二进制文件,映像文件用于调试,二进制文件可以烧写到目标板的 Flash 中运行。关于 Code Warrior IDE 的具体使用请参考 ADS 软件的在线帮助文件。 1.3.3 使用 AXD IDE AXD 是 ADS 软件中独立于 CodeWarrior IDE 的图形软件,打开 AXD 软件,默认是打 开的目标是 ARMulator。ARMulator 也是调试的时候最常用的一种调试工具,本节主要是结 合 ARMulator 介绍在 AXD 中进行代码调试的方法和过程,使读者对 AXD 的调试有初步的 了解。要使用 AXD 必须首先要生成包含有调试信息的程序,在上节中,已经生成的 swi.axf 文件就是含有调试信息的可执行ELF格式的映像文件。这一节还是以swi工程为例讲述AXD 调试工具的基本用法。 1.3.3.1 打开调试文件 在菜单 File 中选择“Load image…”选项,打开 Load Image 对话框,找到要装载的.axf 映像文件,点击“打开”按钮,就把映像文件装载到目标内存中了。在所打开的映像文件中 会有一个蓝色的箭头指示当前执行的位置。如图 1.9 所示: 图 1.9 打开 swi 调试文件 此外,在菜单 File 中还有一个“Load Debug Symbols.…”选项,该选项是用来调式那些 调试器不能访问调试符号的情况,比如调试装载在 ROM 中的 image。通常“Load image…
火龙果·整理 选项用来调试装载在RAM中的代码。 在菜单Execute中选择“Go”,将运行代码。要想进行单步的代码调试,在Execute菜 单中选择“Stp”选项,或用F10即可以单步执行代码,窗口中蓝色箭头会发生相应的移动。 1.3.3.2设置断点 有时候,用户可能希望程序在执行到某处时,查看一些所关心的变量值,此时可以通过 设置断点达到此要求。将光标移动到要进行断点设置的代码处,在Execute菜单中,选择 “Toggle Breakpoint”或按F9,就会在光标所在行的起始位置出现一个红色实心圆点,表明 该处为已设为断点。假设本例中给62行代码设置断点,首先将光标移至62行,然后按F9 或点击“Toggle Breakpoint'”按钮,此时如图1.l0所示: G-CtC】 ④1乡ee小t性1F有15w作mu41sdw1 人x 四g到T四回a回吸四到E回a园a回回可利0P因8e TOOE EAAG E ( 彩 int resultl,tesuley Inatsi:Handlet(luntigned】wr对nhsL,zmwe: ptt("reult1pl-(2,4)a”,t1p(2,4) print过("eul2。xleiplz9(3g6),sa,e12-iplg.5o(,)n ptintt("odtaLtiplz_two(2,4.3.0 adin,nod_amitiply_tot 2.4.3,)) 道(3a。,3.a): 3:行 RH710VI-Coo r行ge 图1.10设置断点 1.3.3.3查看寄存器内容 查看寄存器的值在实际嵌入式开发调试中经常使用,使用方法:从Processor Views菜 单中选择“Memory”选项,如图L.l1所示。在Memory Start address选择框中,用户可以根 据要查看的存储器的地址输入起始地址,在下面的表格中会列出连续的64个地址。从图1.11 中可以看出地址为Ox0的存储器中的初始值为OxE7FFO010,注意因为用的是little-endian* (注2),所以读数据的时候注意高地址中存放的是高字节,低地址存放的是低字节。 *注2:Big-endian和Little-endian是用来表述一组有序的字节数存放在计算机内存中时的顺序的术语。 Big-endian是将高位字节(序列中最重要的值)先存放在低地址处的顺序,而Little-endian是将低位字
选项用来调试装载在 RAM 中的代码。 在菜单 Execute 中选择“Go”,将运行代码。要想进行单步的代码调试,在 Execute 菜 单中选择“Step”选项,或用 F10 即可以单步执行代码,窗口中蓝色箭头会发生相应的移动。 1.3.3.2 设置断点 有时候,用户可能希望程序在执行到某处时,查看一些所关心的变量值,此时可以通过 设置断点达到此要求。将光标移动到要进行断点设置的代码处,在 Execute 菜单中,选择 “Toggle Breakpoint”或按 F9,就会在光标所在行的起始位置出现一个红色实心圆点,表明 该处为已设为断点。假设本例中给 62 行代码设置断点,首先将光标移至 62 行,然后按 F9 或点击“Toggle Breakpoint”按钮,此时如图 1.10 所示: 图 1.10 设置断点 1.3.3.3 查看寄存器内容 查看寄存器的值在实际嵌入式开发调试中经常使用,使用方法:从 Processor Views 菜 单中选择“Memory”选项,如图 1.11 所示。在 Memory Start address 选择框中,用户可以根 据要查看的存储器的地址输入起始地址,在下面的表格中会列出连续的 64 个地址。从图 1.11 中可以看出地址为 0x0 的存储器中的初始值为 0x E7FF0010,注意因为用的是 little-endian* (注 2),所以读数据的时候注意高地址中存放的是高字节,低地址存放的是低字节。 *注 2:Big-endian 和 Little-endian 是用来表述一组有序的字节数存放在计算机内存中时的顺序的术语。 Big-endian 是将高位字节(序列中最重要的值)先存放在低地址处的顺序,而 Little-endian 是将低位字