ADS1

ARM ADS集成开发环境的使用

8.1.2.2库路径结构库路径是在ADS软件安装路径的lib目录下的两个子目录。假设,ADS软件安装在e:\arm\adsv1_2目录,则在e:\arm\adsv1_2\lib目录下的两个子目录armlib和cpplib是ARM的库所在的路径。
armlib
这个子目录包含了ARM 库,浮点代数运算库,数学库等各类库函数。与这些库相应的头文件在e:\arm\adsv1_2\include目录中。
cpplib
这个子目录包含了Rogue Wave C++库和C++支持函数库。Rogue Wave C++库和C++支持函数库合在一起被称为ARM C++库。与这些库相应的头文件安装在e:\arm\adsv1_2\include目录下。
环境变量ARMLIB必须被设置成指向库路径。另外一种指定ARM C和ARM C++库路径的方法是,在链接的时候使用操作选项-libpath directory(directory代表库所在的路径),来指明要装载的库的路径。
无需对armlib和cpplib这两个库路径分开指明,链接器会自动从用户所指明的库路径中找出这两个子目录。
这里需要让读者特别注意的以下几点:
1.ARM C库函数是以二进制格式提供的;2.ARM 库函数禁止修改。如果读者想对库函数创建新的实现的话,可以把这个新的函数编译成目标文件,然后在链接的时候把它包含进来。这样在链接的时候,使用的是新的函数实现而不是原来的库函数。3.通常情况下,为了创建依赖于目标的应用程序,在ANSI C库中只有很少的几个函数需要实现重建。4.Rogue Wave Standard C++函数库的源代码不是免费发布的,可以从Rogue Wave Software Inc.,或ARM公司通过支付许可证费用来获得源文件。8.1.3GUI开发环境(Code Warrior和AXD)8.1.3.1 CodeWarrior集成开发环境CodeWarrior for ARM是一套完整的集成开发工具,充分发挥了ARM RISC 的优势, 使产品开发人员能够很好的应用尖端的片上系统技术. 该工具是专为基于ARM RISC的处理器而设计的, 它可加速并简化嵌入式开发过程中的每一个环节,使得开发人员只需通过一个集成软件开发环境就能研制出ARM产品,在整个开发周期中,开发人员无需离开CodeWarrior开发环境, 因此节省了在操做工具上花的时间,使得开发人员有更多的精力投入到代码编写上来,
CodeWarrior集成开发环境(IDE)为管理和开发项目提供了简单多样化的图形用户界面。用户可以使用ADS的CodeWarrior IDE为ARM和Thumb处理器开发用C,C++,或ARM汇编语言的程序代码。通过提供下面的功能,CodeWarrior IDE缩短了用户开发项目代码的周期。
1.全面的项目管理功能;2.子函数的代码导航功能,使得用户迅速找到程序中的子函数。可以在CodeWarrior IDE为ARM配置在8.1.1中介绍的各种命令工具,实现对工程代码的编译,汇编和链接。
在CodeWarrior IDE中所涉及到的target有两种不同的语义。
目标系统(Target system)
是特指代码要运行的环境,是基于ARM的硬件。比如,要为ARM开发板上编写要运行在它上面的程序,这个开发板就是目标系统。
生成目标(Build target)
是指用于生成特定的目标文件的选项设置(包括汇编选项,编译选项,链接选项以及链接后的处理选项)和所用的文件的集合。
CodeWarrior IDE 能够让用户将源代码文件,库文件还有其他相关的文件以及配置设置等放在一个工程中。每个工程可以创建和管理生成目标设置的多个配置。例如,要编译一个包含调试信息的生成目标和一个基于ARM7TDMI的硬件优化生成目标,生成目标可以在同一个工程中共享文件,同时使用各自的设置。
CodeWarrior IDE为用户提供下面的功能:
源代码编辑器,它集成在CodeWarrior IDE的浏览器中,能够根据语法格式,使用不同的颜色显示代码;
源代码浏览器,它保存了在源码中定义的所有符号,能够使用户在源码中快速方便的跳转;
查找和替换功能,用户可以在多个文件中,利用字符串通配符,进行字符串的搜索和替换;
文件比较功能,可以使用户比较路径中的不同文本文件的内容。
ADS的CodeWarrior IDE是基于Metrowerks CodeWarrior IDE 4.2版本的。它经过适当的裁剪以支持ADS工具链。
针对ARM的配置面板为用户提供了在CodeWarrior IDE集成环境下配置各种ARM开发工具的能力,这样用户可以不用在命令控制台下就能够使用在8.1.1和将在8.1.4中介绍的各种命令。
以ARM为目标平台的工程创建向导,可以使用户以此为基础,快速创建ARM和Thumb工程。
尽管大多数的ARM工具链已经集成在CodeWarrior IDE,但是仍有许多功能在该集成环境中没有实现,这些功能大多数是和调试相关的,因为ARM的调试器没有集成到CodeWarrior IDE中。
由于ARM调试器(AXD)没有集成在CodeWarrior IDE中,这就意味着,用户不能在CodeWarrior IDE中进行断点调试和查看变量。
对于熟悉CodeWarrior IDE的用户会发现,有许多的功能已经从CodeWarrior IDE For ARM中移走,比如快速应用程序开发模板等。
在CodeWarrior IDE For ARM中有很多的菜单或子菜单是不能使用的。下面介绍一下这些不能使用的选项。
1.View菜单下不能使用的菜单选项有:Processes,Expressions,Global Variable,Breakpoints,Registers。
2.Project菜单不能使用的菜单选项:Precompile子菜单。因为ARM编译器不支持预编译的头文件。
3.Debug菜单该菜单中没有一个子菜单是可以使用的。
4.Browser菜单中不能使用的菜单选项:New Property,New Method和New Event Set。
5.Help menu中不能用于ADS的菜单选项有:CodeWarrior Help,Index,Search和Online Manuals。
有关CodeWarrior IDE中一些常用菜单的使用,将在后面的举例中具体说明的,在此,不在赘述。
8.1.3.2ADS调试器调试器本身是一个软件,用户通过这个软件使用debug agent可以对包含有调试信息的,正在运行的可执行代码进行比如变量的查看,断点的控制等调试操作。
ADS中包含有3个调试器:
AXD(ARM eXtended Debugger):ARM扩展调试器;
armsd(ARM Symbolic Debugger):ARM符号调试器;
与老版本兼容的Windows或Unix下的ARM调试工具,ADW/ADU(Application Debugger Windows/Unix)。
下面对在调试映像文件中所涉及到的一些术语做一个简单的介绍。
Debug target
在软件开发的最初阶段,可能还没有具体的硬件设备。如果要测试所开发的软件是否达到了预期的效果,这可以由软件仿真来完成。即使调试器和要测试的软件运行在同一台PC上,也可以把目标当作一个独立的硬件来看待。
当然,也可以搭建一个PCB板,这个板上可以包含一个或多个处理器,在这个板上可以运行和调试应用软件。
只有当通过硬件或者是软件仿真所得到的结果达到了预期的效果,才算是完成了应用程序的编写工作。
调试器能够发送以下指令:
1.装载映像文件到目标内存;2.启动或停止程序的执行;3.显示内存,寄存器或变量的值;4.允许用户改变存储的变量值。Debug agent
Debug agent执行调试器发出的命令动作,比如:设置断点,从存储器中读数据,把数据写到存储器等。
Debug agent既不是被调试的程序,也不是调试器。在ARM体系中,它有这几种方式:Multi-ICE(Multi-processor in-circuit emulator),ARMulator和Angel。其中Multi-ICE是一个独立的产品,是ARM公司自己的JTAG在线仿真器,不是由ADS提供的。
AXD可以在Windows 和UNIX下,进行程序的调试。它为用C,C++,和汇编语言编写的源代码提供了一个全面的Windows 和UNIX 环境。
在后面的章节中,会结合具体实例为读者介绍如何使用AXD调试器。
8.1.4实用程序ADS提供以下的实用工具来配合前面介绍的命令行开发工具的使用
fromELF
这是ARM映像文件转换工具。该命令将ELF格式的文件作为输入文件,将该格式转换为各种输出格式的文件,包括plain binary(BIN格式映像文件), Motorola 32-bit S-record format(Motorola 32位S格式映像文件), Intel Hex 32 format(Intel 32位格式映像文件),和 Verilog-like hex format(Verilog 16进制文件)。FromELF命令也能够为输入映像文件产生文本信息,例如代码和数据长度。
armar
ARM库函数生成器将一系列ELF格式的目标文件以库函数的形式集合在一起,用户可以把一个库传递给一个链接器以代替几个ELF文件。
Flash downloader
用于把二进制映像文件下载到ARM开发板上的Flash存储器的工具
8.1.5支持的软件ADS为用户提供下面的软件,使用户可以在软件仿真的环境下或者在基于ARM的硬件环境调试用户应用程序。
ARMulator
这是一个ARM指令集仿真器,集成在ARM的调试器AXD中,它提供对ARM处理器的指令集的仿真,为ARM和Thumb提供精确的模拟。用户可以在硬件尚未做好的情况下,开发程序代码。
8.2使用ADS创建工程本节通过一个具体实例,为读者介绍如何使用该集成开发环境,利用CodeWarrior提供的建立工程的模板建立自己的工程,并学会如何进行编译链接,生成包含调试信息的映像文件和可以直接烧写的Flash中的.bin格式的二进制可执行文件。






原文地址:https://www.cnblogs.com/feisky/p/1586446.html