1、ADS1.2应用,实物图,实物说明图,ADS模板,由ARM指令的代码生成一个ELF 格式的可执行映象文件,由ARM指令的代码生成一个armar 格式的目标文件库,创建一个不包含任何库或者源文件的工程,将VC的nmake或GNUmake文件转入到Code Warrior IDE 工程文件,由ARM和Thumb的指令混合代码生成一可执行的ELF格式的映象文件,由Thumb指令创建一个可执行的ELF格式的映象文件,由Thumb指令的代码生成一个armar格式的目标,创建工程,一般情况下选择第一项,然后在“Project name:” 栏输入工程名称,在“Location:”栏指定路径,例如 工程名称
2、为“Hello”,点击确定后工程建立。,工程管理窗口,工程建立以后将生成一个空的工程管理窗口,如下 图所示:,点击此项添加或新建源文件,鼠标右击此区域进行文件的添加,添加文件到Target,在添加文件的过程中CodeWarrior IDE 为用户建立 了三个Target:DebugRel、Realse、Debug。这三个Target 分别表示三种调试方式。 DebugRel:在生成目标的时候为每一个源文件生成调试信息。 Debug:为每一个源文件生成最完全的调试信息。 Release :不生成任何调试信息。一般默认选择“DebugRel”。,配置生成目标,单击此图标或ALT+F7进行设置,De
3、bug Setting,改为ARM920T,ARM LINKER设置,0X30000000是开发板SDRAM的真实地址,0X31000000是系统可读写内存的地址,二者之间是只读区域,存放程序的代码段,之后是程序的数据段。,RO表示只读,RW表示读写,RO栏默认是0x8000,需要根据实际硬件进行更改,一般为FLASH 地址,RO也可以设置在SDRAM 中,启动代码中包含COPY 的部分,会将代码移动到SDRAM中运行。,Options选项,Image entry point表示映象文件的入口地址,文件路径必须是纯西文的。,Layout选项,Layout选项在连接方 式位simple时有效,
4、是输入段在映像文件 中的位置。,该项用于指定将某 输入段放置在它所 运行时域的开头。,Object/Symbol中指定目标文件的名称init.s,在 Section中指定输入段的名称init,确定源文件中的init 输入段位指定的输入段。,ARM from ELF设置,Output file name,参照上图进行输出文件名称和路径的设置,须带 上扩展名.bin 或者.hex。当工程文件是从别处copy 过来的时候请记得对该路径进行重新设置,不然将出现 警告提示。到此为止已经完成基本设置,接下来可以进行编译 和链接。,Remove Object Code操作,如果工程文件 是从别处copy过来
5、 的,在编译之前还要 Remove Object C- ode。该选项在“Pr- oject”菜单下面。,如果红圈内的.c 文件前面没有勾图标,表示该工程已 经编译链接通过,如果需要重新编译则需要先进行“Rem ove Object Code”操作以去除一些和路径、目标文件等 有关联的信息。,AXD调试流程,AXD(ARM eXtended Debugger)是ADS 软件中 独立于CodeWarrior IDE 的图形软件,打开AXD 软 件,默认是打开的目标是ARMulator。这个也是调试 时最常用的一种调试工具,即软件仿真。要使用AXD 必须首先要生成包含有调试信息的程 序,即*.ax
6、f 文件,该类文件包含有调试信息的可执行 ELF 格式的映像文件。,在AXD中打开调试文件,有两种方法打开AXF文件:在make 完成后通过 “Project”-“Debug”或者F7 进入AXD;还可以通过 “开始”-“程序”-“ARM Developer Suite”-“AXD”打 开AXD,然后再在菜单“File”中选择“Load image” 选项,打开Load Image 对话框,找到要装载的.axf 映 像文件,点击“打开”按钮,就把映像文件装载到目标内 存中了。,在所打开的映像文件中会有一个蓝色的箭 头指示当前执行的位置。,在菜单Execute 中选Go,将全速运行代码; 选St
7、ep项或F10进行单步的代 码调试,窗口 中蓝色箭头会 发生相应的移动。选择Toggle Breakpoint或F9,会在光标所处出现一个实心圆点,即断点。,注意事项,选择调试目标,进入AXD 后通过Option-Configure Target选 择调试目标。由于当前采用“ARMulator”进行软件仿 真,故选择ARMUL,如下图所示:,查看存储器内容,在程序运行前,可以先查看两个宏变量IOPMOD 和 IOPDATA 的当前值。方法是:从Processor Views 菜 单中选择“Memory”选项。,因为I/O 模式控制寄存器和I/O 数据控制寄存器都是32位的控制寄存器,所以从0x
8、3ff5000 开始的连续四个地址空间存放的是I/O 模式控制寄存器的值,I/O 数据控制寄存器的内容是从地址0x3FF5008 开始的连续四个地址空间存放的内容。IODATA 中的初始值为0x E7FF0010,因为用的是小端模式,所以读数据的时候注意高地址中存放的是高字节,低地址存放的是低字节。,设置断点,将光标定位在欲 设置断点语句处,按 F9在此处设置断点, 按F5 键程序将运行 到断点处,想查看某 个函数是如何运行的, 可在Execute 菜单 中选择Step In选项, 或按F8 键,进入到 子函数内部进行单步 程序的调试。,查看变量,在函数的内部,如果希望查看某个变量的值,可以
9、在Processor Views 菜单中选择“Watch”,会出现如下图 所示的watch窗口,然后用鼠标选中变量右击,在快捷菜 单中选中“Add to watch”,这样变量添加到watch窗口 的Tab1中。程序运行过程中可看到变量的值在不断变化。,Codewarrior使用小技巧,有时双击打开工程文件时,会出现下图这样的错误提示:,说明该工程文件的路径包含了中文,不能双击打开。只能通过“file” “open”来打开。最好不要将工程放在中文路径下。,利用codewarrior快速查找,CodeWarrior是一个优秀的集成开发环境,在Co- deWarrior里查找函数原型,查找包含文件非常方便。,