Presentation is loading. Please wait.

Presentation is loading. Please wait.

第二章ADS1.2开发环境创建与简介.

Similar presentations


Presentation on theme: "第二章ADS1.2开发环境创建与简介."— Presentation transcript:

1 第二章ADS1.2开发环境创建与简介

2 主要内容 2.1 ADS1.2开发环境创建 2.2 ADS集成开发环境的使用 2.3 用AXD进行代码仿真、调试
2.4 ARM C语言程序的基本规则和系统初始化程序

3 2.1.1 ADS1.2概述 上一章我们讲过,做为嵌入式控制器的单片机,由于受其本身资源限制,其应用程序都不能在其本身上开发。开发其应用程序,还需要一台通用计算机,我们也称这台通用计算机为“宿主机”,在“宿主机”上要安装有集成开发环境。 ADS是ARM集成开发环境,它主要包括编译器、链接器、调试器、C和C++库等,是ARM公司推出的新一代ARM集成开发工具。最新版本是ADS1.2,该版本支持包括Windows和Linux在内的多种操作环境。ADS1.2的组成如下:

4 1. 编译器 ADS提供多种编译器,以支持ARM和Thumb(在ARM体系中数据和指令采用16位字长)指令的编译,主要有:
· armcc:是ARM C编译器。 · tcc:是Thumb C编译器。 · armcpp:是ARM C++编译器。 · tcpp:是Thumb C++编译器。 · arm asm:是ARM和Thumb的汇编语言编译器。

5 2. 链接器 armlink是ARM链接器。该命令既可以将编译得到的一个或多个目标文件和相关的一个或多个库文件进行链接,生成一个可执行文件,也可以将多个目标文件链接成一个目标文件,以供进一步的链接。

6 3.符号调试器 armsd是ARM和Thumb的符号调试器,能进行源码级程序调试。用户可以在用C或汇编语言写的代码中进行单步调试、设置断点、查看变量值和内存单元的内容。

7 4. fromELF(elf 全称 Executable and Linking Format)
将ELF格式的文件转换为各种格式的输出文件,包括BIN(二进制)格式映像文件、Motorola32位S格式映像文件、Intel32位格式映像文件和Verilog十六进制文件。FromELF命令也能够为输入映像文件产生文本信息,例如代码和数据长度。

8 5. armar armar是ARM库函数生成器,它将一系列ELF格式的目标文件以库函数的形式集合在一起。用户可以把一个库传递给一个链接器以代替几个ELF文件。

9 6. CodeWarrior CodeWarrior集成开发环境(IDE)为管理和开发项目提供了简单多样化的图形用户界面,用户可以使用ADS的CodeWarriorIDE为ARM和Thumb处理器开发用C、C++或者ARM汇编语言编写的程序代码。今后我们要经常使用CodeWarrior集成开发环境(IDE)来开发我们的C语言程序。

10 7. 调试器 ADS中含有3个调试器,即AXD、Armsd和ADW/ADU。
在ARM体系中,可以选择多种调试方式,如Multi-ICE(Multi-processor In-Circuit Emulator)、ARMulator或Angel。 Multi-ICE是一个独立的产品,是ARM公司自己的JTAG在线仿真器,不是由ADS提供的。 · ARMulator是一个ARM指令集仿真器,集成在ARM的调试器AXD中,提供对ARM处理器的指令集的仿真,为ARM和Thumb提供精确的模拟。用户可以在硬件尚未做好的情况下开发程序代码,利用模拟器方式调试。 · Angel是ARM公司常驻在目标机Flash中的监控程序,只需通过RS-232C串口与PC主机相连,就可以对基于ARM架构处理器的目标机进行监控器方式的调试。

11 8. C和C++库 ADS提供ANSI C库函数和C++库函数,支持被编译的C和C++代码。用户可以把C库中的与目标相关的函数作为自己应用程序中的一部分,重新进行代码的实现。这就为用户带来了极大的方便。

12 2.1.2 ADS1.2的安装

13 ADS全称为ARM Developer Suite,是ARM公司推出的新的一代ARM集成开发工具。现在ADS的最新版本是1
ADS全称为ARM Developer Suite,是ARM公司推出的新的一代ARM集成开发工具。现在ADS的最新版本是1.2,该版本支持包括Windows和Linux在内的多种操作系统。 在ADS1.2的安装盘中运行setup.exe,安装ARM Developer Suite v1.2。出现图2-1对话框和图2-2对话框,同意产权协义,选省缺安装路径(F:\ARM\vADS1.2)和典型安装模式(Typiflcation),按Next进入下一步,均按Next,开始安装,如图2-3示。

14

15

16 安装结束,安装许可文件(Install License),这一步可按安装向导进行,单击“下一步”按钮,会出现如图2-4和图2-5所示的对话框。
在图2-5对话框中的选浏览(Browser)查许可文件,在Program Files\ARM\ADSV1_2\license\中选license.dat文件并打开,单击“下一步”按钮,如图2-6,即可完成ADS1.2的安装。 最后,程序还要注册,注册文件在Program Files\ARM\ADSV1_2文件夹中,单击注册文件,即完成程序注册,如图2-7所示。

17

18 图2-6 选许可文件

19 图2-7程序注册

20 安装成功并注册后,CodeWarrior集成开发环境(IDE)就可以使用了。为了方便,我们在桌面上创建一个快捷键,在C:\Program File\ARM\ADSv1-2\Bin文件夹中有一个快捷键图标,如图2-8所示,将其发送到桌面。 图2-8 IDE快捷键图标 图2-8 IDE快捷键图标

21 打开计算机,双击IDE快捷键图标,就可进入CodeWarrior集成开发环境,然后打开了一个例子项目. \Examples\cpp\bmw
打开计算机,双击IDE快捷键图标,就可进入CodeWarrior集成开发环境,然后打开了一个例子项目.\Examples\cpp\bmw.mcp。如图2-9所示。 图2-9 CodeWarrior集成开发环境

22 2.2 ADS集成开发环境的使用 和MCS-51单片机的开发环境KeilC一样,ADS对用户的程序进行项目管理,一个ADS项目中可以包括汇编语言程序、C/C++语言程序、C语言头文件、库文件等等,这些文件还可以以文件夹的形式加入项目,本节介绍ADS集成开发环境的使用。

23 2.2.1建立一个新工程 图2-10 建立一个新工程

24 运行ADS1.2集成开发环境(CodeWarrior for ARM Developer Suite),点击File|New,在New对话框中,选择Project栏,其中共有7项,ARM Executable Image是ARM的通用模板。选中它即可生成ARM的执行文件,如图2-10所示。 在Project name栏中输入项目的名称,以及在Location中输入其存放的位置,按确定保存项目。系统会在项目名称后面自动加上ADS项目后缀.mcp后保存。

25 2.2.2 开发环境设置 1. 在新建的工程中,选择Debug版本,如图2-11,使用Edit|Debug Settings菜单对Debug版本进行参数设置。 图2-11选择Debug版本

26 2. 在图2-12中,点击Debug Setting 按钮,弹出2-13图,选中Target Setting

27 在Post-linker栏中选中ARM fromELF项。按OK确定。
图2-13选Target Setting 在Post-linker栏中选中ARM fromELF项。按OK确定。

28 图2-14选要编译的CPU类型 3. 在如图2-14中,点击ARM Assembler ,在Architecture or Processer 栏中选ARM920T。这是项目选择的CPU类型。

29 4.在如图2-15中,点击ARM C Compliler ,在Architecture or Processer栏中也选ARM920T。这是C语言要编译的CPU核。

30 5. 在如图2-16中,点击ARM linker ,在outpur栏中设定程序的代码段地址,以及数据使用的地址。图中的RO Base栏中填写程序代码存放的起始地址,RW Base栏中填写程序数据存放的起始地址。RW Base地址要是SDRAM的地址。

31 图2-16填写程序代码存放的起始地址

32 在options栏中,如图2-17,Image entry point要填写程序代码的入口地址
图2-17填写程序代码的入口地址

33 在Layout栏中,如图2-18,在Place at beginning of image框内,需要填写项目的入口程序的目标文件名
图2-18填写项目的入口

34 6. 在如图2-19中,这是设置要下载到flash中的二进制文件。
图2-19设置输出文件名

35 7. 到此,在ADS1.2中的基本设置已经完成,可以将该新建的空的项目文件作为模板保存起来。首先,要将该项目工程文件改一个合适的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2软件安装的目录下新建一个合适的模板目录名,如,S3C2410 ARM Executable Image,再将刚刚设置完的S3c2410 ARM.mcp项目文件存放到该目录下即可。这样,就能在图2-19中看到该模板。

36 8. 新建项目工程后,就可以执行菜单Project|Add Files把和工程有关的文件加入,ADS1
8. 新建项目工程后,就可以执行菜单Project|Add Files把和工程有关的文件加入,ADS1.2不能自动进行文件分类,用户必须通过Project|Create Group来创建文件夹,然后把加入的文件选中,移入文件夹。或者鼠标放在文件填加区,右键点击,如图2-20 图2-20工程所有相关的文件加入项目

37 先选Add Files,加入文件,再选Create Group,创建文件夹,然后把文件移入文件夹内。读者可根据自己习惯,更改Edit|Preference窗口内文本编辑的颜色、字体大小、形状、变量、函数的颜色等等设置。如图2-21。 对不同的编辑内容选不同的颜色,可以达到阅读和调试方便的效果。

38 图2-21更改文本编辑的颜色

39 2.2.3 其他开发环境介绍 IAR(瑞典爱亚软件技术咨询公司) Embedded Workbench for ARM 是IAR Systems 公司为ARM 微处理器开发的一个集成开发环境,下面简称IAR EWARM。比较其他的ARM 开发环境,IAR EWARM 具有入门容易、使用方便和代码紧凑等特点。

40 2.3 用AXD进行代码仿真、调试 项目建立并加入相应文件后,“目标机”和“宿主机”通过叫JTAG的仿真器进行连接,然后用AXD进行代码仿真、调试。本节介绍用AXD进行代码仿真、调试的方法和步骤。

41 2.3.1 AXD简介 项目建立并加入相应文件后,以项目为单位进行编译。在Code Warrior IDE开发环境中双击Make, 如图2-22所示 图2-22 Make界面

42 在同一界面双击Debug键,如图2-23所示进入AXD,AXD界面如图2-24所示。

43 图2-24 AXD界面

44 1. 在AXD中打开调试文件 选择File∣Load image命令,打开Load image对话框,找到要装入的.axf映像文件,单击“打开”按钮,就可以把映像文件装载到目标内存中,如图2-25所示。

45 选择AXD的Processor Views∣Memory命令或按Ctrl +M键后,查看或修改存储器中的值,如图2-26所示。
2.查看存储器、寄存器、变量内容 选择AXD的Processor Views∣Memory命令或按Ctrl +M键后,查看或修改存储器中的值,如图2-26所示。 图2-26 查看或修改存储器中的值

46 3. 查看或修改存储器地址在 Memory Start address文本框图上,用户可以根据要查看或修改的存储器地址输入起始地址,在下面的表格中会列出连续的64个地址。因为I/O模式控制寄存器和I/O数据控制寄存器都是32位的控制寄存器,所以从0x 开始的连续4个地址空间存放的是I/O模式控制寄存器的值,从图中可以读出该控制寄存器的值,数据控制寄存器的内容,注意因为用的是小端模式,所以读数据时注意高地址中存放的高字节,低地址存放的是低字节。

47 4. 断点设置、查看 在程序调试时经常设置断点,即在程序的某处设置断点,当程序执行到断点处即可停 下,这时开发人员可通过前面的方法查看寄存器、存储器或变量的值,以判定程序是否正常。设置断点的方法是将光标移到需设置断点处,使用快捷键F9在此处设置断点。

48 2.3.2 JTAG概述 在使用AXD对项目进行调试时,整个软件调试工作都是在“宿主机”上进行的,但程序的运行是在“目标”机上实现的。“宿主机”和“目标”之间通过计算机并口使用一种叫JTAG的仿真器相连接,实现信息的上传和下载。

49 2.3.3 Nor和Nand Flash的区别和使用 程序调试结束,要将其可执行文件烧写(或称固化)到目标机中某种Flash中运行。Flash也叫非易失快闪存储器。 Nor和Nand是现在市场上两种主要的非易失闪存技术。Intel公司于1988年首先开发出Nor Flash技术。

50 单元尺寸nand 是 nor的一半, 1~16MB nor 8~128MB nand 3. 接口差别
1. 性能比较 读 nor nand 写、擦除 nand nor 2. 容量和成本 单元尺寸nand 是 nor的一半, 1~16MB nor 8~128MB nand 3. 接口差别 Nor 带有SRAM接口,有足够的地址引角建起 Nand使用复杂i/O端口来串行存取数据

51 2.3.4 烧写Flash 上节讲到,程序调试结束,要将其可执行文件烧写(或称固化)到目标机中Flash运行,这个过程要通过一个转门的下载软件来进行,该软件有多款,它们的安装和使用请参考具体设备。

52 2.3.5 程序的运行 程序固化到FLASH中后,运行前往往将其复制到SDRAM中去,这样可以提高运行速度,作者在工作中,编写了一段将程序从FLASH中复制到SDRAM中去的C语言模块,实践证据可用,可供参考,其中ARM9init(void)程序略。

53 主程序 // #include "def.h" #include "2410addr.h" #include "2410lib.h" #define ARM_ADDR 0X ; // 定义SDRAM地址 void (*run)(void ); //定义函数指针 void ARM9init(void); //系统初始化程序 void CopyFromFlashToRAM(U32 * FlashAddr,U32 *ArmAddr,U32 ul); void copy(void); void main(void) { run=(void(*)(void)) ARM_ADDR; ARM9init(); copy(); run(); }

54 // // 复制程序 // CopyFromFlashToRAM(U32 * pulFlashAddr,U32 *pulArmAddr,U32 ul) { U32 *pulSource=pulFlashAddr; U32 *pulDest=pulArmAddr; U32 i; ul/=4;

55 for(i=0;i<ul;i++) { *pulDest++=*pulSource++; } // // 调复制程序 // copy(void) U32*p1; U32*p2; P1=(U32 * )0x ; P2=(U32 * )0x ; CopyFromFlashToRAM(p1,p2,0x20000);

56 2.4 ARM C语言程序的基本规则和系统初始化程序
我们使用C语言来开发嵌入式项目,ARM C语言程序的基本规则和普通C语言程序有一定区别,本节介绍ARM C语言程序的基本规则同时,还讲解了系统初始化程序的编写。 系统初始化程序的编写和项目调试的仿真器设置是初学者遇到的比较困难问题,本节介绍初学者如何绕过这些困难,顺利完成开发工作。

57 2.4.1 ARM使用C语言编程基本规则 在应用系统的程序设计中,若所有的编程任务均由汇编语言来完成,其工作量巨大,并且不易移植。由于ARM的程序执行速度较高,存储器的存储速度和存储量也很高,因此,C语言的特点得以充分发挥,使得应用程序的开发时间大为缩短,代码的移植十分方便,程序的重复使用率提高,程序架构清晰易懂,管理较为容易等等。因此,C语言的在ARM编程中具有重要地位。

58 .在子程序编写时,必须遵守相应的ATPCS规 . 堆栈的使用要遵守相应的ATPCS规则; . 在汇编编译器中使用atpcs选项。
汇编语言的子程序应满足下面3个条件: .在子程序编写时,必须遵守相应的ATPCS规 . 堆栈的使用要遵守相应的ATPCS规则; . 在汇编编译器中使用atpcs选项。 ATPCS即ARM-THUMB procedure call standard(ARM-Thumb过程调用标准)的简称。 PCS规定了应用程序的函数可以如何分开地写,分开地编译,最后将它们连接在一起,所以它实际上定义了一套有关过程(函数)调用者与被调用者之间的协议。

59 基本的ATPCS规定,详情请见相关PDF文档,简单说明就是:

60 2.4.2 初始化程序和开发环境设置 系统的基本初始化内容一般包括: . 分配中断向量表 . 初始化存储器系统 . 初始化各工作模式的堆栈
. 分配中断向量表 . 初始化存储器系统 . 初始化各工作模式的堆栈 . 初始化有特殊要求的硬件模块 . 初始化用户程序的执行环境 . 切换处理器的工作模式


Download ppt "第二章ADS1.2开发环境创建与简介."

Similar presentations


Ads by Google