




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章 集成开发环境Embest IDE9.1 Embest IDE概述9.1.1 Embest IDE开发环境Embest IDE(Embest Integrated Development Environment)是由深圳英蓓特信息技术有限公司开发,应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一整套完备的面向嵌入式系统的开发和调试工具。其开发软件Embest IDE for ARM是集成了编辑器、编译器、调试器、工程管理器(project manager)于一体的高度集成的窗口环境,用户可以在Embest IDE集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应用程序。硬件由仿真器和开发板构成。Embest IDE采用主机目标机交叉开发模型,主机和目标机之间通过调试设备(Embest Emulator/PowerICE for ARM JTAG仿真器)相连接,目标板单独通电,即可构成一个完整地硬件调试开发环境。它将在Embest IDE for ARM下生成的可执行文件,下载到目标机(可以是RAM空间,也可以是FLASH/ROM空间),即可实现对应用程序的调试、分析,开发模型示意图如图9.1所示。图9.1 Embest IDE开发模型示意图Embest IDE for ARM可以运行于Windows XP/NT/95/98(带有Serivice Pack 3)/2000下,其主要特性如下:l 支持ARM7、ARM9系列,支持软件升级;l 支持开发语言:C和汇编语言;l 界面友好,使用方便;l 图形化的工程管理与设置,图形化的编译链接选项的定制;l 源码编辑器支持标准的文本编辑功能,支持语法分色显示(syntax-color),包含功能强大的Hex文件编辑器;l Embest IDE使用优秀的自由软件GNU的GCC编译链接器,并且经过优化和严格测试;同时兼容ARM SDT编译工具套件;l 源码级调试提供了图形和命令行两种调试方式,可进行断点设置、单步执行、异常处理,可查看修改内存、寄存器、变量等,可查看函数栈,支持源程序、反汇编程序的交叉显示等;l 丰富的例程:提供atmel、samsung、cirrus logic、oki等多家公司的arm处理器的调试示例和使用说明。9.1.2 Embest IDE安装执行安装光盘中的Setup.exe,按提示进行下去即可。注意在Embest IDE的安装路径中,不得含有空格字符,以保证GNU交叉编译器的正常运行。如果安装的是Professional版本,在使用之前还需要进行用户注册。注册过程分为二步:一、生成注册信息文件;二、提交注册信息文件,获得运行许可文件。1生成注册信息文件运行EmbestIDE.exe程序文件或者运行位于Embest IDE安装目录下Licenses目录里的Key.exe文件,详细填写相关信息后点击”Generate Key.dat”按钮,将在Licenses目录里生成Key.dat文件。程序界面如图9.2所示:图9.2 注册信息文件生成对话框2获取运行许可文件将生成的Key.dat通过Email发送到,或者打印后传真到(+86公司许可管理员会尽快通过电子邮件或传真返回”licenses.dat”文件给用户,此文件为运行许可文件,将此文件拷贝到Licenses目录里,即可完成用户注册过程。9.1.3 Embest IDE主框架窗口标题栏菜单栏工具栏工作区客户区输出栏状态栏Embest IDE集成开发环境主界面见图9.3。图9.3 Embest IDE主界面图Embest IDE集成开发环境的主框架窗口由标题栏、菜单栏、工具栏、工作区、 客户区、输出窗口和状态栏等组成。标题栏用于显示当前打开的文件名。工作区用于显示当前打开工程的有关信息,包括工程的文件组成等内容。工作区使用工程管理的办法,使组成应用程序的所有文件形成一个有机的整体。一个工作区可以管理多个工程,工程之间相互独立,但共用一个工作区的设置环境。客户区用于C、汇编等源文件的编辑,在客户区可以同时打开多个编辑窗口。输出窗口包含多个标签:Build标签、Debug标签、Command标签、Find in Files 1标签、Find in Files 2标签,用于输出编译信息、调试信息、命令行输入输出和一些查询结果信息等。状态栏用于显示关于菜单栏、工具栏等的简单说明信息以及文本编辑器中当前光标所在的行列号等。在进行工程调试时,还可以根据需要打开寄存器窗口、函数栈窗口、变量窗口、存储器窗口、数据观察窗口等。下面将分别介绍Embest IDE的编辑器、工程管理器、编译/汇编/链接器以及调试器。9.2 Embest IDE编辑器Embest IDE编辑器是一个标准的文本编辑器,支持语法分色显示,同时也是调试时的源代码执行跟踪窗口。Embest IDE编辑器包含Hex文件编辑器,凡是不能以文本方式打开的文件都可以通过Hex文件编辑器打开,以Hex方式阅读、修改、保存。打开文件时选择.hex、.bin文件类型,Hex文件的编辑界面如图9.4所示,用户可以直接在左边的Hex区域或右边的ASCII区域编辑修改,编辑器会自动识别ASCII字符并在右边显示。同时支持ASCII字符串和HEX码的前后查找,可通过右击菜单选择进行。图 9.4 Hex文件编辑界面另外Embest IDE编辑器具有源程序函数列表功能,当用户在编辑窗口打开C或C+源文件时,源文件函数列表窗可以动态显示当前源文件包含的函数。通过点击菜单Tools Options,在弹出对话框中选择Extra Function Prototype,则在工作区窗口中可以看到源文件函数列表窗Func窗口,双击函数名可以快速定位函数在源程序中的位置,如图9.5所示。通过右击菜单可以选择函数的显示形式:显示函数详细信息、仅显示函数名、不显示函数返回类型或者不显示函数调用参数等。图9.5 源程序函数动态列表窗口9.3工程管理工程是用户组织一个应用的所有源文件、设置编译链接选项、生成可调试下载文件和最终的目标Bin文件的一个基本结构。在Embest IDE for ARM中,工程置于工作区(workspace)的管理之下,工作区中的各工程之间互相独立,但共用一个工作区的设置环境。当用户新建一个工程时,可以选择是为该工程新建一个工作区还是将该工程加入当前工作区。各工程均可配置不同的处理器和仿真器,用户可在各工程间进行无缝切换。通过菜单项View Workspace(快捷键:Alt+0)可以选择显示或隐蔽工作区窗口。9.3.1 工程管理的操作通过File菜单下的相应选项,可以新建、打开、保存或关闭一个工作区;通过Project菜单中的Set Active Project或Add to Project可以设置当前工作工程或为当前工程添加文件夹或文件。1 创建工程(1) 点击菜单项File New Workspace,系统弹出图9.6所示的对话框。图9.6 创建一个新工程(2) 在Project name框中输入新建工程名,Location框中输入该工程要保存的目录路径。(3) 点击OK按钮,将创建一个新工程,并同时创建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程。创建工程时,在该工程保存的目录下将生成两个文件,文件的主文件名为工程名,扩展名分别为.ews和.pjf。其中,.ews为工作区文件,保存本工程所属的工作区信息,此信息包含该工作区下所有的工程。.pjf为工程文件,保存用户所建工程的有关信息。注意不要手工编辑这两个文件。在工作区窗口中,利用右键菜单中的“Add New Project to Workspace”可以创建新的工程。2 打开工程点击菜单项File Open Workspace,在弹出的工作区对话框中选择要打开的工程所在目录路径及工程文件名(或对应的工作区文件名),点击打开按钮,即可打开该工程。打开工程的同时会打开对应的工作区。另外菜单项File Recent Workspaces列出了最近打开过的4个工作区。Embest IDE除了可以打开其自身产生的软件工程外,还可以打开ARM SDT/ADS软件生成的工程文件。方法如下:点击菜单项File Open Workspace,在弹出的工作区对话框中选择打开文件类型为ARM SDT Project或ARM ADS Project,SDT的软件工程文件后缀名为.apj,ADS的软件工程文件后缀名为.mcp。选择要打开的SDT工程文件或ADS工程文件,按打开按钮,即可打开该工程。在打开SDT或ADS工程的同时集成环境会自动生成对应该工程的Embest IDE工作区和工程文件。 3 工作区操作工作区提供了一个对工作区中的工程和工程中的文件进行显示和管理的窗口。工作区包含多级目录,一级目录显示当前工作区名和包含的工程数;二级目录显示各工程名;三级目录为工程包含的源文件分组名或源文件,为方便管理,将工程中的源文件按类型分成多个组(Group),最基本的组有Project Source Files和Project Header Files,组是一个逻辑概念,并不实际对应一个目录,它是为了更清晰地管理源文件;四级目录为工程包含的源文件。工作区中每一级目录都对应不同的右键操作菜单。第一级目录的右键菜单为工作区右键菜单,如图9.7所示。第一级目录第二级目录第三级目录第四级目录图9.7 工作区右键菜单该菜单对应的操作分别为:创建新工程、插入工程、切换工作区窗口显示方式、隐藏工作区窗口和显示工作区属性对话框。第二级目录的右键菜单为工程右键菜单,分别对应:编译链接工程、在工程中创建新文件组、增加文件、将工程设置为活动工程、工程设置管理、切换工作区窗口显示方式、隐藏工作区窗口和显示工程属性对话框操作。注意:一个工作区中可以存在几个同时打开的工程,但只有一个工程处于活动状态,其图标为加亮彩色显示,只能对活动状态的工程进行调试。图9.7所示的工作区中的2个工程中,asm1_a为活动工程。第三级目录的右键菜单为文件组右键菜单,分别对应:向该文件组中增加一个文件、切换工作区窗口显示方式、隐藏工作区窗口和显示文件夹属性对话框操作。第四级目录的右键菜单为文件操作右键菜单,分别对应:打开、编译文件、切换工作区窗口显示方式、隐藏工作区窗口和显示文件属性对话框操作。通过工作区中各级右键菜单,用户可以方便地管理工作区中的工程和工程中的文件。若要进行删除操作,只需选取要删除的对象(工程、文件组、文件等),按Del键即可。通过点击菜单项File Save Workspace或者File Close Workspace,可以保存或关闭工作区。注意对工作区或工程的保存,是保存相关文件管理信息,而不是保存工程中某一个具体文件;关闭工作区窗口时,仅仅是隐藏工作区窗口的显示,而没有关闭工作区和已打开的工程。9.3.2 工程配置1 处理器配置选择菜单项Project Settings或快捷键Alt+F7,弹出工程设置对话框。选择Processor设置对话框,如图9.8,可对处理器、字节存储方式以及编译工具的选择进行配置。处理器系列及成员处理器模块:不同的处理器模块支持不同的处理器系列存储区字节排列方式处理器制造商及型号编译工具图9.8 处理器配置对话框2 仿真器配置在工程设置对话框中,选择Remote设置对话框,如图9.9,可进行仿真器的连接配置。选择仿真器下载调试速度通讯类型通讯口图9.9 仿真器的连接配置其中远程连接设备(Remote device)选项选择合适的仿真调试设备。当使用Embest Emulator for ARM仿真器时,若调试ARM7系列处理器则设置成“jtagarm7”,若调试ARM9系列处理器,则设置成“jtagarm9”;当使用Embest PowerICE for ARM仿真器时,则根据所调试的处理器相应的选择“PowerICEARM7”或“PowerICEARM9”;当使用Embest IDE软件仿真器调试ARM7系列处理器则该处设置成“simarm7”;当使用EasyICE仿真器调试ARM7系列处理器时设置成“EasyICEArm7”。如果使用的集成开发环境为Education版本,则只有simarm7 和EasyICEArm7两个选项。同时信息框中将显示相应的仿真器信息。下载调试速度(Speed)只有在所选仿真器支持调试下载速度选择时有效。可选工作速度为全速(Full Speed)、高速(High Speed)、中速(Medium Speed)、低速(Low Speed)。通讯类型(Communication type)和通讯口(Parallel Port)的设置根据实际仿真器与PC机的连接方式选择。9.4 编译、汇编和链接Embest IDE for ARM支持的编译、汇编和链接模块(Build Tools)包括GNU Tools for ARM和ARM Build Tools,即可以兼容GCC编译器和ADS编译器,如图9.10所示。当选择不同编译器时,其对应的编译、汇编和链接选项对话框将有所不同。图9.10 编译、汇编和链接器选择9.4.1 GNU Tools for ARM选项GNU Tools for ARM编译选项是一种专门针对ARM处理器的GCC交叉编译器设置。GNU Tools for ARM是自由软件,主要包括C编译器、C+编译器、适用嵌入式系统的标准C/C+库、汇编器、链接定位器以及其它工具软件。当选择GNU Tools for ARM编译器时,Embest IDE根据工程中源文件扩展名,自动调用相应的GCC编译器或ASM汇编器,编译源文件。其中GCC编译器输出的ELF格式的目标文件扩展名为*.o,GCC链接器输出的ELF格式的调试文件扩展名为*.elf。1 编译器选项设置GNU Tools for ARM编译器的Compiler属性页如图9.11所示,该属性页中的命令行开关选项用于C编译器和C+编译器,用户的所有设置显示在Compile Options的编辑框中,用户可以手工输入、修改开关选项。图9.11 工程编译Compiler属性页改变Category下拉窗口,可分别设置GNU Tools for ARM编译器的各类选项,其中:General 选项族:指明头文件搜索路径、目标文件生成位置、预编译宏的定义。图9.11设置下的目标文件位于工程所在目录下的debug文件夹中。Warning Options 选项族:主要设置何种情况下出现警告。Debug/Optimisation选项族:主要进行debug和优化选项的设置。Target Specific Options选项族:主要设置生成目标代码的指令形式,诸如:ARM指令集的目标代码、THUMB指令集的目标代码、是否支持两种指令之间的函数调用、存储数据采用大端模式还是小端模式,采用硬件还是软件浮点指令,是否遵守26位的APCS、使用APCS标准构造堆栈、特定ARM处理器的指定等。如图9.12所示,此选项在交互工作时需要注意设置。Code Generation Options选项族:各种编译选项的设置。图9.12 工程编译Target Specific Options选项族设置页2 汇编器选项设置GNU Tools for ARM编译器的Assembler属性页如图9.13所示,用户的所有设置显示在Assemble Options的编辑框中,用户可以手工输入、修改开关选项。 图9.13工程汇编Assembler属性页改变Category下拉窗口,可分别设置GNU Tools for ARM汇编器的各类选项。包括:General 选项族、Warning Options 选项族、Code Generation Options选项族、Target Specific Options选项族等。3 链接器选项设置GNU Tools for ARM链接器的Linker属性页如图9.14所示,用户的所有设置显示在Link Options的编辑框中。改变Category下拉窗口,分别设置GNU Tools for ARM链接器的各类选项。图9.14 工程链接Linker属性页General 选项族:设置生成可执行的目标文件或库文件、链接定位信息描述脚本、设置生成目标文件的名称,缺省为工程名称加上扩展名.elf(可执行文件)或.lib(库文件), 当前工程文件(pjf文件)所在位置被默认为是当前路径。Image Entry Options 选项族:设置可执行程序的入口点。可以从Select entry file选项下的列表框中,选择一个目标文件,作为链接命令的入口文件;当Image entry point参数被设置的情况下,可不必设置该选项;另外可执行程序的入口点也可以通过直接在Link Options的编辑框中输入-e来设置。Code Generation Options选项族:包括重定位的目标文件的生成、链接优化、共享库的链接、详细信息的输出、何时警告、链接时是否忽略目标文件中的符号信息或调试信息等。Include Object and Library Modules 选项族:设置链接当前工程所需的库文件。Add Library Searching Path 选项族:设置库文件搜索路径。注意:GNU Tools for ARM编译器的所有开关选项设置,库文件说明,请参见编程参考手册或相关技术文档。9.4.2 ARM Build Tools选项ARM Build Tools选项支持ARM公司的编译链接工具,目前Embest IDE 兼容SDT 2.51版本支持的编译器,该版本编译链接工具包括ARM C/C+编译器(简称ARMCC)、ARM汇编器(简称ARMASM)和ARM链接器(简称ARMLINK)。编译器输出的ELF格式的目标文件扩展名为*.o。新建工程在首次选定ARM Build Tools时,系统提供缺省设置。当选择ARM Build Tools编译器时,其对应的编译、汇编和链接选项对话框与GNU Tools for ARM选择下的编译、汇编和链接选项对话框有所不同。具体可参照Embest IDE for ARM集成开发环境的帮助文档,在此不作赘述。9.4.3 工程文件夹的编译设置在一个工程中,有时可能需要为不同源文件提供不同编译开关选项的要求。例如,工程的部分源文件可能要编译成ARM指令集的目标文件;而其它文件需要编译成THUMB指令集的目标文件。在Project Settings对话框中,当选中工程时,右侧的编译器或汇编器的属性如前述,是对工程进行设置;如果选择工程树中的文件夹,则可以对各工程文件夹进行设置。图9.15 工程文件夹编译设置如图9.15所示,在Project Setting窗口中,选中Project Source Files文件夹,同时选中General属性页中的Always use custom compile options按钮,则compiler属性页将被加载,编译器将使用Compiler属性页中的设置编译Project Source Files文件夹中的C/C+源文件;而汇编器,仍然使用工程的汇编器中的设置汇编Project Source Files文件夹中的汇编源文件。若选中Always use custom assemble option项,Assembler属性页将被加载,汇编器将使用文件夹指定Assembler属性页中的设置汇编Project Source Files文件夹中的汇编源文件。点击Reset按钮,选中文件夹相应的编译器或汇编器的开关选项全部设置为与工程编译或汇编的开关选项相同。9.4.4 工程编译、汇编和链接完成编译器、汇编器和链接器的相关设置后,就可以对工程进行编译链接。通过主窗口Build菜单项或Build工具条按钮,可以编译相应的文件或工程,同时将在Build输出子窗口中输出有关信息,如图9.16所示。如果在编译链接过程中,出现错误,编译链接操作立刻终止,并在Build窗口中提示错误,如果是语法错误,用户可以通过鼠标左键双击错误提示行,来定位引起错误的源文件行。图9.16工程编译、汇编和链接9.5 工程调试Embest IDE调试器综合了图形调试和命令行调试的各种优点,提供丰富的调试手段,支持汇编和源程序级调试、多窗口显示,支持断点、条件断点和Watchpoint功能,支持所有级别的寄存器显示和修改,提供处理器的外围寄存器显示和修改,支持按字节、半字或字长度及十六进制和ASCII符号模式显示存储器内容,支持全局、局部变量显示和修改及表达式计算,当存储器、变量及寄存器值改变时,对应内容以不同颜色显示,支持程序运行函数栈信息显示。调试器图形界面如图9.17所示。变量窗口函数栈窗口寄存器窗口输出窗口存储器窗口数据观察窗口工程管理窗口源程序窗口调试工具条图9.17 调试器图形界面9.5.1 调试设置打开project setting对话框窗的debug调试属性页,如图9.18所示。在category栏有三个选项:调试常规(General)信息配置页、下载(Download)信息配置页和内存映像(Memory Map)配置页。图9.18为常规调试属性配置页。图9.18 常规调试属性配置页符号文件栏(Symbol file)用于输入待调试的符号文件名字及其目录。符号文件在工程编译、汇编、连接后生成,符号文件中含有调试信息内容,常见的有elf格式、coff格式,提供调试所需要调试信息。本文件空缺时,用户只能进行汇编级调试。系统连接目标后的行为(Action after connected)有三种方式可以选择:无任何行为(None)、连接目标后自动下载设定的下载文件、连结目标后自动执行一命令脚本文件,辅助完成自动化调试。图9.19为下载信息配置页界面。用于设置下载到目标系统上的可执行文件,文件格式可以是elf格式或者是binary格式,系统会自动将elf格式文件转换为binary格式后下载;以及确定下载文件在目标系统上的起始存储地址,程序执行起始点,文件下载后目标系统需要自动运行到的符号处。同时设置文件下载时是否自动校验下载是否正确。程序执行起始点有三种选择方式:(1)不关注,表示系统在完成下载后不会修改PC值;(2)下载地址可选项,表示系统在完成下载后会自动将PC值设置到程序下载的起始地址;(3)程序入口点可选项,表示系统在完成下载后会自动将PC值设置到程序运行入口地址。下载校验下载文件栏程序执行起始点下载文件地址执行至符号输入栏图9.19 下载信息属性配置页图9.20为内存映像文件配置页界面。通过使用内存映像文件(Use map file)可以在调试过程中依据内存映像文件内设定的内存范围和属性来控制内存读写。图9.20 内存映像文件配置页页9.5.2 调试如果选择的仿真器为模拟仿真器armsim7,在工程项目编译链接成功后,正确设置了调试选项,就可以开始软件调试了。否则在开始调试之前,还需要连接仿真器并下载程序。1 仿真器的连接和程序下载首先按8.1小节所述,完成硬件级别的连接。点击Debug菜单,选择Remote Connect,如图9.21,进行仿真器和目标系统的连接。图9.21 Remote Connect菜单若连接不成功,会在输出窗口的Debug页面显示提示信息,需要检查电源和仿真器的连接是否正确。若连接正确,调试菜单中的Download选项会由无效变为有效。如果在调试选项中的General选项页中设置了自动下载选项,Debugger会自动进行程序的下载,否则,执行Download命令,Debugger下载目标文件到目标系统指定的存储位置,同时在状态条上显示下载进度。下载成功后,状态条会以底色为蓝色显示“Download Completed”信息。否则状态条以底色为红色显示 “error:verify error,download Failed”信息。2 断点此后即可进行程序的运行调试。调试器可以控制目标程序的运行、停止和复位,并反汇编正在调试的二进制代码,反汇编窗口支持右键菜单。同时可根据需要设置断点来控制程序的运行,辅助程序的调试。断点的设置和取消可通过debug菜单命令,也可以直接使用工具条中的断点命令。另外通过Debug下的“Breakpoint”,可以弹出断点列表对话框,如图9.22所示,从而进行断点信息和状态的查询及修改。删除断点修改断点查看断点对应的源文件图9.22 断点列表对话框3 寄存器窗口Embest IDE提供可视化的寄存器窗、存储区窗、数据观察窗、变量窗、函数栈窗等调试信息窗来帮助用户调试目标程序,下面依次作一介绍。通过菜单viewdebug windowsregister,可以打开寄存器窗口,见图9.17。寄存器窗用于显示和修改目标系统中处理器内核寄存器及其外围接口寄存器值。寄存器名称和数目依赖于目标系统处理器类型,当调试不同目标系统的时候,显示的内容会不一样。选择register标签,显示处理器内核寄存器寄存器。显示按照寄存器组方式,每组寄存器都可以分别设置不同的显示格式:十进制、十六进制或者二进制显示,并可自动刷新或者根据需要由用户手动刷新显示。点击某一个寄存器,该寄存器的名字和值会显示在寄存器窗上部的输入栏中,在输入栏可以改变该寄存器的值,修改后的寄存器值以红色显示。在寄存器窗点击鼠标右键,会弹出寄存器窗菜单,用以更新寄存器值、改变寄存器显示格式或扩展寄存器组等操作。选择periphral标签,显示目标处理器外围寄存器窗口,如图9.23。可在该窗口对外围寄存器的内容进行查看和修改、刷新、设置显示格式等操作。当鼠标停在寄存器的上方时,屏幕提示当前鼠标指向的寄存器的描述可读属性的寄存器只可写属性的寄存器修改后的寄存器以红色显示图9.23 外围寄存器窗口注意,使用右键菜单的Auto Refresh设置时,调试的速度会受到一定的影响。建议有选择地使用Auto Refresh功能,可只设置部分组自动刷新。点击寄存器后选择右键菜单的Properties命令,或者在寄存器上双击鼠标左键可以打开寄存器细节对话框,如图9.24所示。细节对话框向用户提供了有关外围寄存器的详细信息,包括内容、地址、位域的具体意义等;用户可以通过直接输入十六进制、二进制值修改外围寄存器值,也可以修改选择的寄存器域。图9.24 外围寄存器细节对话框4 存储区窗口通过菜单viewdebug windowsmemory,可以打开存储区窗口,见图9.17。存储区窗口用于显示和修改目标系统中存储区的内容。存储区窗显示从输入的起始地址开始存储的存储区内容,显示长度根据存储区窗大小而自动匹配。存储区内容可以按照字节、半字或字长度显示,并同时以十六进制数和对应的ASCII字符显示存储区内容,变化的数据会以红色区别显示。IDE 同时提供了两个内存显示窗口Memory1窗和Memory2窗(功能同Memory1窗)。同样,存储区窗点支持右键菜单。5 数据观察窗口通过菜单viewdebug windowswatch,可以打开数据观察窗口,见图9.17。数据观察窗口用于显示用户想要观察的变量或表达式值,用户可以随时增加或删除观察数据。观察数据值可以按照十进制或者十六进制格式显示。观察数据值会跟随用户的每一步操作而自动重新计算和显示。数据观察窗有两个页面:“Watch 1”和“Watch 2”,每个页面可以单独输入不同的数据。观察数据名会跟随工程自动存储,当下一次打开同一个工程的时候,会自动调入原先存在的观察数据名。数据观察窗点支持右键菜单,从而完成增加、删除数据、设置数据显示格式、观察数据属性等操作。6 变量窗口通过菜单viewdebug windowsvariable,可以打开变量窗口,见图9.17。变量窗用于显示全局以及局部变量信息,并可修改变量值。变量窗有两个页面:“Global”和“Local”,分别用于显示全局变量和函数局部变量。变量值可以按照十进制或者十六进制格式显示。变量值以及局部变量名会跟随用户的每一步操作而自动重新计算和显示。当变量窗中变量值有变化的时候,变量窗会变红显示这些数据值。变量窗口支持右键菜单操作。7 函数栈窗口通过菜单viewdebug windowscall stack,可以打开函数栈窗口,见图9.17。函数栈窗用于显示函数运行调用关系,函数参数值可以按照十六进制或者十进制格式显示。最后调用的函数(即当前运行函数)在窗口最上部的第一行,按照调用关系依次往下排列,起始函数在窗口末的最后一行。双击函数栈窗的某一函数所在行,源文件窗会显示出该函数调用函数栈中上一函数返回后将要执行的下一句代码,并在该源代码行前面放置一蓝色向右箭头标志,函数栈窗同时会高亮显示该函数栈函数信息行。8 反汇编窗口通过菜单viewdebug windowsdisassembly,可以打开反汇编窗口,用于显示反汇编二进制代码后得到的汇编级代码,可以混合源代码显示,也可以混合二进制代码显示。反汇编窗可以设置和清除汇编级别断点,并可按照ARM或THUMB格式的反汇编二进制代码。9.5.3 Embest IDE附带工具介绍在Embest IDE的主菜单中,有一个tools菜单项,其中包含了Embest提供的各种工具,现简单介绍如下。1 Elf to BinElf to Bin工具是二进制格式可执行指令文件生成工具,使用该工具将IDE编译生成的调试信息.elf文件转换为程序固化时所需的二进制格式可执行指令文件。使用时,只需选择Tools菜单下的Elf to Bin,即可在当前工程目录下的Debug子目录中生成一个与.elf文件同名的.bin文件。2 Disassemble allDisassemble all是反汇编工具,可以将调试信息文件.elf转换为包含源文件和调试符号的反汇编文件。只需执行Tools菜单下的Disassemble all即可在当前工程目录下的Debug子目录生成一个文件名为objdump的反汇编文件。3 Symbol tableSymbol table是调试符号文件生成工具,使用该工具可以生成对应工程调试信息.elf文件的符号表,该符号表主要记录各个函数符号的入口地址。只需执行Tools菜单下的Symbol table,即可在当前工程目录下的Debug子目录生成一个文件名为objdump的调试符号文件。注意此调试符号文件与Disassemble all生成的objdump反汇编文件内容不同。4 Flash ProgammerFlash Programmer工具将用户最终生成的二进制可执行指令文件固化到用户电路板的FLASH芯片中,支持使用ARM系列处理器开发的嵌入式系统中FLASH芯片的编程,特别适合选择贴片FLASH的用户。其使用界面同大多数的编程器类似,详细介绍请参看Embest Online Flash Programmer用户手册。5 Register EditorRegister Editor工具可以为Embest IDE增加任意一款处理器的外围寄存器记录,需要执行的操作包括或部分包括:添加处理器核名称、添加处理器生产厂商名称、增加处理器及其属性、增加寄存器组及其属性、增加寄存器及其属性、增加寄存器域及其属性。打开后界面如图9.25所示:图9.25 Register Editor主界面界面的左边分了多级目录,通过edit菜单命令,可以方便的为特定的目录添加子项。图9.25中的New Core及其下面的各级目录就是通过此方式建立的,其中各子项的名称可以通过右键菜单更改。点击最低级项目,可以对添加处理器的外围寄存器进行设置或修改。9.6 GNU编译环境下程序的编写9.6.1 移植SDT的汇编程序在Embest IDE环境下集成的编译器是自由软件GNU编译器,我们前面介绍的程序示例均为ARM ADS/SDT编译环境下的汇编程序,它与GNU编译环境下汇编程序的编写稍有不同。将ADS/SDT环境下的的汇编代码移植为GNU支持的汇编代码方法如下:(1)注释行以“#”代替“;”,指令后的注释以“”标注。例如:MOV R1,R0R0值入R1(2)伪操作符替换:SDT下的伪操作符GNU下的伪操作符INCLUDE.includeTCLK2 EQU PB25.equ ECLK2 , PB25EXPORT.globalIMPORT.externDCD.longIF:DEF:.ifdefELSE.elseENDIF.endif:OR:|:SHLRN.reqGBLA.global或.globlBUSWIDTH SETA 16.equ BUSWIDTH, 16MACRO.macroMEND.endmEND.endAREA Word,CODE,READONLY.textAREA Block, DATA, READWRITE.dataCODE32.arm或 .code 32CODE16.thumb或 .code 16LTORG.ltorg%.fillEntryEntry:(3)不能用&来表示16进制数,而应使用前缀0x。例如:ldr pc, pc, #&18应改为:ldr pc, pc, #0x18下面以第5章中介绍ARM语言程序结构的例子为例,介绍GNU编译环境下程序的编写。例9.1:ADS/SDT编译环境下的ARM程序。AREA ARMex, CODE, READONLYENTRY ;程序入口start MOV r0, #10 MOV r1, #3ADD r0, r0, r1 stop MOV r0, #0x18LDR r1, =0x20026 SWI 0x123456 END 改为GNU程序如下:.global _start.text_start:MOV r0, #10 程序入口MOV r1, #3ADD r0, r0, r1 stop: MOV r0, #0x18LDR r1, =0x20026 SWI 0x123456 .end 其中_start为程序默认的入口点,在未使用链接脚本文件时,程序默认的执行起始地址为0x8000。注意程序的执行地址与下载地址不同,在软仿真时(即工程配置时使用SimArm7仿真器选项),下载地址可以任意设置,但是程序的执行始终是从0x8000开始。为方便大家在Embest IDE环境下的调试,后面介绍的汇编程序多数为GUN环境下的汇编程序。9.6.2 链接脚本文件在系统级别的嵌入式开发中需要使用链接定位文件,该文件描述代码链接定位的有关信息,链接器必须使用该文件对整个系统的代码做正确的定位,该文件称为链接脚本文件(linker scripts file *.ld)。编写连接脚本,首先要对目标文件的格式有一定了解。GNU编译器生成的目标文件缺省为elf格式。elf文件由若干段(section)组成,通常包含:.text(正文段)包含程序的指令代码;.data(数据段)包含固定的数据,如常量、字符串;.bss(未初始化数据段)包含未初始化的变量、数组等。链接器的任务就是将多个目标文件的.text、.data和.bss等段连接在一起,而链接脚本文件是告诉链接器从什么地址开始放置这些段。根据程序的需要,链接脚本文件可以有所不同,例如对于上例中的汇编程序可以使用如下的命令脚本文件test_ram.ld:SECTIONS. = 0x40000000;/*赋当前地址为0x40000000*/.text : *(.text) /*代码段,标识从0x40000000开始放置程序代码*/.rodata : *(.rodata) /*只读数据段,存放程序中静态全局变量等固定值*/*只读数据段位于代码段后*/.data : *(.data) /*数据段, 存放程序中已初始化的全局变量*/.bss : *(.bss) /*包含未初始化的全局可用数据, 如未初始化全局变量*/则对于例9.1中的GNU程序,在工程配置窗口中,选择GNU Tools for ARM,并且在Linker属性页中的Linker script file文本框中加入test_ram.ld链接脚本文件,如图9.26所示。配置完成后,在进行编译、连接,则程序的下载执行将参照链接脚本文件的设置。链接脚本文件图9.26 链接脚本文件的配置使用链接脚本文件时需要注意,如果工程配置选择使用的仿真器不是软仿真,例如选择EasyICEArm7仿真器选项,要注意程序的下载地址一定要与实际使用开发板的物理地址一致,否则会出现程序执行错误或下载不成功的现象。上例中,我们将程序下载到0x40000000地址处,其中0x40000000正好是LPC2200芯片RAM的起始地址。通常在调试时,我们将程序下载到系统的RAM中以方便调试,在调试成功后,再将程序固化到系统的FLASH中。对于一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年秋新北师大版数学一年级上册教学课件 第一单元 生活中的数 第7课时 快乐的午餐
- 水质实验室基础知识培训课件
- 新型储能项目安全生产方案
- 聚酰亚胺薄膜生产线项目运营管理手册
- 施工现场卫生管理方案
- 化工产业园危险化学品应急响应方案
- 一、机械能(第2课时) -苏科版九年级《物理》上册考点练习
- 影视艺术特性74课件
- 水电消防知识培训课件
- 2025版建筑工程设计与施工一体化论文集合同
- 甲状腺功能亢进症课件
- 锂离子电池正极材料研究进展
- 二手房屋买卖物品交接清单
- 技师论文 变频器的维修与保养
- 非标自动化设备项目进度表
- 诊断学教学胸部查体
- 桥梁安全事故案例警示
- SB/T 10460-2008商用电开水器
- GB/T 9124.1-2019钢制管法兰第1部分:PN系列
- GA 1800.2-2021电力系统治安反恐防范要求第2部分:火力发电企业
- 欣旺集团种禽养殖管理制度手册
评论
0/150
提交评论