资源描述:
《arm9嵌入式系统设计-基于S3C2410与LINUX课件(参考书) 第4章 ARM系统硬件设计基础.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章ARM系统硬件设计基础主要内容1324ADS1.2集成开发环境简介基于ARM的汇编语言程序设计基于ARM的硬件启动程序基于ARM的C语言与汇编语言混合编程5印制电路板制作简介4.1ADS1.2集成开发环境简介ADS的英文全称为ARMDeveloperSuite,是ARM公司推出的新一代ARM集成开发工具。ADS由六个部分组成,分别是:代码生成工具集成开发环境调试器指令集模拟器ARM开发包ARM应用库4.1.1ADS1.2集成开发环境下工程的创建使用ADS创建工程的步骤:新建工程“File
2、New…”设置目标及其参数“Edit
3、DebugSett
4、ings…”向工程中添加文件“Project
5、AddFiles”4.1.2ADS1.2集成开发环境下进行仿真和调试的方法在Codewarrior中,如果工程编译成功,将产生一个后缀为.axf的映像文件,接下来就可以使用AXDDebugger进行调试。常用调试按钮主要内容1324ADS1.2集成开发环境简介基于ARM的汇编语言程序设计基于ARM的硬件启动程序基于ARM的C语言与汇编语言混合编程5印制电路板制作简介4.2.1ARM汇编器支持的伪指令伪指令是ARM汇编语言程序中的一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,它们
6、所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序做各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成了。ARM汇编器支持的伪指令包括:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。分类指令举例符号定义伪指令GBLA/GBLL/GBLS/LCLA/LCLL/LCLS/SETA/SETL/SETS/RLISTGBLATest1;定义一个名为Test1的全局数值字变量数据定义伪指令DCB/DCW/DCD/DCFD/DCFS/DCQ/SPACE/MAP/FIELDstrDCB“Thisisa
7、test”;分配起始地址为str的一段连续字节存储单元存放字符串汇编控制伪指令IF/ELSE/ENDIF/WHILE/WEND/IFTest=TRUE;如果条件成立指令序列1;执行指令序列1ELSE;否则执行指令序列2指令序列2ENDIF宏指令MACRO/MEND/MEXITMACROSeg指令序列MEND;定义一个名为Seg的宏指令其他伪指令AREA/ALIGN/CODE16/CODE32/ENTRY/END/EQU/EXPORT/GLOBAL/IMPORT/EXTERN/GET/INCLUDE/INCBINAREAInit,CODE,READON
8、LY,ALIGN=3;定义了一个代码段,段名为Init,属性为只读,并指定其后的指令为8(23)字节对齐。ARM汇编器支持的常见伪指令4.2.2基于ARM的汇编语言语句格式ARM汇编语言的语句格式[标号][指令或伪指令][;注释]标号是代表地址的符号,必须在一行的顶格书写,其后不能添加冒号“:”,而所有指令均不能顶格书写。ARM汇编语言对标识符的大小写敏感,书写标号及指令时字母大小写要一致。在ARM汇编语言中,ARM指令、伪指令、寄存器名等可以全部大写或者全部小写,但不能大小写混合使用。为了使源文件易读,可以将一条长的指令通过使用反斜杠字符“”将其
9、分成几行书写。每行从第一个分号开始到本行结束为注释内容,所有的注释内容均被汇编起忽略。4.2.3ARM汇编语言程序的基本结构在ARM汇编语言程序中,以程序段为单位来组织代码。段是相对独立的指令或数据序列,具有特定的名称。段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时所需的数据。可执行映像文件通常由以下几部分构成:一个或多个代码段,代码段为只读属性。零个或多个包含初始化数据的数据段,数据段的属性为可读写。零个或多个不包含初始化数据的数据段,数据段的属性为可读写。一个含有子程序调用的代码段的例子AREAInit,CODE,READ
10、ONLYENTRYLDRR0,=0x3FF5000LDRR1,0x0fSTRR1,[R0]LDRR0,=0x3F50008LDRR1,0x1STRR1,[R0]BLPROC;子程序调用…PROC;子程序开始…MOVPC,LR;从子程序返回…END一个数据段的例子AREADataArea,DATA,NOINIT,ALIGN=2DISPBUFSPACE200RCVBUFSPACE200…其中DATA为数据段的标识。4.2.4基于ARM的汇编语言程序举例举例:连续发送128个ASCII字符的汇编语言的例子…;呼叫子程序UARTbUARTUART;子程序开始
11、ldrr0,=GPHCON;设置GPIO(RxD0,TxD0引脚)ldrr1,=0x2afaaastrr1,