ARM系统硬件设计基础课件.pptx
《ARM系统硬件设计基础课件.pptx》由会员分享,可在线阅读,更多相关《ARM系统硬件设计基础课件.pptx(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础主要内容ADS 1.2集成开发环境简介集成开发环境简介 基于基于ARM的汇编语言程序设计的汇编语言程序设计基于基于ARM的硬件启动程序的硬件启动程序基于基于ARM的的C语言与汇编语言混合编程语言与汇编语言混合编程印制电路板制作简介印制电路板制作简介RVDS 2.2 集成开发环境简介集成开发环境简介 2第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础 4.1 ADS 1.2集成开发环境简介 ADS ADS的英文全称为的英文全称为 ARM Developer SuiteARM Developer Suite,是是ARMARM
2、公司公司推出的新一代推出的新一代ARMARM集成开发工具。集成开发工具。 ADS ADS由六个部分组成,分别是:由六个部分组成,分别是:代码生成工具代码生成工具集成开发环境集成开发环境调试器调试器指令集模拟器指令集模拟器ARMARM开发包开发包ARMARM应用库应用库3第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础 4.1.1 ADS 1.2集成开发环境下工程的创建使用使用ADSADS创建工程的步骤创建工程的步骤 :新建工程新建工程 “File|NewFile|New” 设置目标及其参数设置目标及其参数 “Edit|Debug SettingsEdit|Debug Setting
3、s” 向工程中添加文件向工程中添加文件 “Project|Add FilesProject|Add Files” 4第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础4.1.2 ADS1.2集成开发环境下进行仿真和调试的方法集成开发环境下进行仿真和调试的方法在在CodewarriorCodewarrior中,如果中,如果工程编译成功,将产生工程编译成功,将产生一个后缀为一个后缀为. .axfaxf的映像文的映像文件,接下来就可以使用件,接下来就可以使用AXD DebuggerAXD Debugger进行调试。进行调试。 常用调试按钮常用调试按钮 5第第4 4章章 ARMARM系统硬件
4、设计基础系统硬件设计基础主要内容ADS 1.2集成开发环境简介集成开发环境简介 基于基于ARM的汇编语言程序设计的汇编语言程序设计基于基于ARM的硬件启动程序的硬件启动程序基于基于ARM的的C语言与汇编语言混合编程语言与汇编语言混合编程印制电路板制作简介印制电路板制作简介RVDS 2.2 集成开发环境简介集成开发环境简介 6第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础RVDS 2.2 集成开发环境简介集成开发环境简介 RealView Development Suite(RVDS)是)是ARM公司继公司继SDT与与ADS1.2之后主推的新一代开发工具。之后主推的新一代开发工具。
5、 RVDS集成的集成的RVCT是业内公认的能够支持所有是业内公认的能够支持所有ARM处处理器,并提供最好的执行性能的编译器;理器,并提供最好的执行性能的编译器;RVD是是ARM系统调试方案的核心部分,支持含嵌入式操作系统的单系统调试方案的核心部分,支持含嵌入式操作系统的单核和多核处理器软件开发,可以同时提供相关联的系统核和多核处理器软件开发,可以同时提供相关联的系统级模型构建功能和应用级软件开发功能,为不同用户提级模型构建功能和应用级软件开发功能,为不同用户提供最为合适的调试功效。目前全球基于供最为合适的调试功效。目前全球基于ARM处理器的处理器的40亿个产品设备中,大部分的软件开发是基于亿个
6、产品设备中,大部分的软件开发是基于RealView开开发工具。安全、可靠和高性能地设计产品的最好选择就发工具。安全、可靠和高性能地设计产品的最好选择就是购买是购买ARM RealView开发工具。开发工具。 RVDS向下兼容以前的版本(向下兼容以前的版本(ADS v1.2.1、1.1、1.0.1)。)。7第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础8第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础9第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础主要内容ADS 1.2集成开发环境简介集成开发环境简介 基于基于ARM的汇编语言程序设计的汇编语言程序设计基于
7、基于ARM的硬件启动程序的硬件启动程序基于基于ARM的的C语言与汇编语言混合编程语言与汇编语言混合编程印制电路板制作简介印制电路板制作简介RVDS 2.2 集成开发环境简介集成开发环境简介 10第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础 4.3.1 ARM汇编器支持的伪指令 伪指令是伪指令是ARMARM汇编语言程序中的一些特殊指令助记符,这汇编语言程序中的一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,些助记符与指令系统的助记符不同,没有相对应的操作码,它们所完成的操作称为伪操作。它们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序做各
8、种准备工伪指令在源程序中的作用是为完成汇编程序做各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成了。伪指令的使命就完成了。ARMARM汇编器支持的伪指令包括:符号定义伪指令、数据定汇编器支持的伪指令包括:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。义伪指令、汇编控制伪指令、宏指令以及其他伪指令。 11第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础分类分类指令指令举例举例符号定义符号定义伪指令伪指令GBLA/GBLL/GBLS/LCLA/LCLL/LCLS/SETA/SET
9、L/SETS/RLISTGBLA Test1;定义一个名为定义一个名为Test1的全局数值字变量的全局数值字变量数据定义数据定义伪指令伪指令DCB/DCW/DCD/ DCFD/DCFS/DCQ/ SPACE/MAP/ FIELDstr DCB “This is a test”;分配起始地址为分配起始地址为str的一段连续字节存储的一段连续字节存储单元存放字符串单元存放字符串汇编控制汇编控制伪指令伪指令I F / E L S E / E N D I F / WHILE/WEND/IF TestTRUE ;如果条件成立如果条件成立 指令序列指令序列1 ;执行指令序列执行指令序列1ELSE ;否则执
10、行指令序列否则执行指令序列2 指令序列指令序列2ENDIF宏指令宏指令MACRO/MEND/ MEXITMACRO Seg指令序列指令序列MEND;定义一个名为定义一个名为Seg的宏指令的宏指令其他其他伪指令伪指令AREA/ALIGN/CODE16/CODE32/ENTRY/END/EQU/EXPORT/GLOBAL/IMPORT/EXTERN/GET/INCLUDE/INCBINAREA Init,CODE,READONLY,ALIGN=3;定义了一个代码段,段名为定义了一个代码段,段名为Init,属性属性为只读,并指定其后的指令为为只读,并指定其后的指令为8(23)字)字节对齐。节对齐。A
11、RMARM汇编器支持的常见伪指令汇编器支持的常见伪指令 12第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础 4.3.2 基于ARM的汇编语言语句格式 ARMARM汇编语言的语句格式汇编语言的语句格式 标号标号 指令或伪指令指令或伪指令 ; ;注释注释 标号是代表地址的符号,必须在一行的顶格书写,其后不能添加标号是代表地址的符号,必须在一行的顶格书写,其后不能添加冒号冒号“:”,而所有指令均不能顶格书写。,而所有指令均不能顶格书写。ARMARM汇编语言对标识符的大小写敏感,书写标号及指令时字母大汇编语言对标识符的大小写敏感,书写标号及指令时字母大小写要一致。小写要一致。在在ARMA
12、RM汇编语言中,汇编语言中,ARMARM指令、伪指令、寄存器名等可以全部大指令、伪指令、寄存器名等可以全部大写或者全部小写,但不能大小写混合使用。写或者全部小写,但不能大小写混合使用。为了使源文件易读,可以将一条长的指令通过使用反斜杠字符为了使源文件易读,可以将一条长的指令通过使用反斜杠字符“ ”将其分成几行书写。将其分成几行书写。每行从第一个分号开始到本行结束为注释内容,所有的注释内容每行从第一个分号开始到本行结束为注释内容,所有的注释内容均被汇编起忽略。均被汇编起忽略。13第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础 4.3.3 ARM汇编语言程序的基本结构 在在ARMAR
13、M汇编语言程序中,以程序段为单位来组织代码。汇编语言程序中,以程序段为单位来组织代码。段段是相对独立的指令或数据序列,具有特定的名称。段可以是相对独立的指令或数据序列,具有特定的名称。段可以分为分为代码段和数据段代码段和数据段,代码段的内容为执行代码,数据段存,代码段的内容为执行代码,数据段存放代码运行时所需的数据。放代码运行时所需的数据。 可执行映像文件通常由以下几部分构成:可执行映像文件通常由以下几部分构成: 一个或多个代码段,代码段为只读属性(一个或多个代码段,代码段为只读属性(RORO)。)。 零个或多个包含初始化数据的数据段,数据段的属零个或多个包含初始化数据的数据段,数据段的属性为
14、可读写(性为可读写(RWRW)。)。 零个或多个不包含初始化数据的数据段,数据段的零个或多个不包含初始化数据的数据段,数据段的属性为可读写(属性为可读写(ZIZI)。)。14第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础v 一个含有子程序调用的代码段的例子一个含有子程序调用的代码段的例子AREA InitAREA Init,CODECODE,READONLYREADONLYENTRYENTRYLDR R0, =0 x3FF5000LDR R0, =0 x3FF5000LDR R1, 0 x0fLDR R1, 0 x0fSTR R1, R0STR R1, R0LDR R0, =0
15、x3F50008LDR R0, =0 x3F50008LDR R1, 0 x1LDR R1, 0 x1STR R1, R0STR R1, R0BL PROC BL PROC ;子程序调用子程序调用PROC PROC ;子程序开始子程序开始MOV PC,LR MOV PC,LR ;从子程序返回从子程序返回ENDEND15第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础v 一个数据段的例子一个数据段的例子AREA DataArea, DATA, NOINIT, ALIGN=2AREA DataArea, DATA, NOINIT, ALIGN=2DISPBUFDISPBUFSPACES
16、PACE200200RCVBUFRCVBUFSPACESPACE200200其中其中DATADATA为数据段的标识。为数据段的标识。 16第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础 4.3.4 基于ARM的汇编语言程序举例 举例:连续发送举例:连续发送128128个个ASCIIASCII字符的汇编语言的例子字符的汇编语言的例子 ; ;呼叫子程序呼叫子程序UARTUART b UART b UART ; ;子程序开始子程序开始UARTUART ldr r0, =GPHCON ;ldr r0, =GPHCON ;设置设置GPIO(RxD0,TxD0GPIO(RxD0,TxD0引脚
17、引脚) ) ldr r1, =0 x2afaaaldr r1, =0 x2afaaa str r1, r0 str r1, r0 ldr r0, =GPHUP ldr r0, =GPHUP ldr r1, =0 x7ff ldr r1, =0 x7ff str r1, r0 ; ;GPH10:0 str r1, r0 ; ;GPH10:0禁止上拉禁止上拉 ldr r0, =UFCON0 ;ldr r0, =UFCON0 ;禁用禁用FIFOFIFO ldr r1, =0 x0 ldr r1, =0 x0 str r1, r0 str r1, r0 ldr r0, =UMCON0 ; ldr r0
18、, =UMCON0 ;禁用禁用AFCAFC ldr r1, =0 x0 ldr r1, =0 x0 str r1, r0 str r1, r0 ldr r0, =ULCON0 ; ldr r0, =ULCON0 ;设置线寄存器设置线寄存器 ldr r1, =0 x3 ;ldr r1, =0 x3 ;正常模式正常模式, ,无奇偶校验无奇偶校验, ,一个停止位一个停止位,8,8个数据位个数据位 str r1, r0str r1, r0 ldr r0, =UCON0 ; ldr r0, =UCON0 ;设置设置Uart0Uart0控制器控制器 ldr r1, =0 x245 ;RXldr r1, =
19、0 x245 ;RX边沿触发边沿触发, ,TXTX电平触发电平触发, ,禁用延时中断禁用延时中断, ,使用使用RX RX 错误中断错误中断, , ; ;正常操作模式正常操作模式, ,中断请求或表决模式中断请求或表决模式 str r1, r0str r1, r0 ldr r0, =UBRDIV0 ; ldr r0, =UBRDIV0 ;设置波特率为设置波特率为115200115200 ldr r1, =0 x1a ;int(50700000 / 16 / 115200) - 1 = 26ldr r1, =0 x1a ;int(50700000 / 16 / 115200) - 1 = 26 st
20、r r1, r0 str r1, r0 mov r1, #100 mov r1, #10017第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础DelayDelay sub r1, r1, #0 x1 sub r1, r1, #0 x1 bne Delay bne Delay ;/ ;/开中断开中断 ldr r0, =INTMSKldr r0, =INTMSK ldr r1, r0 ldr r1, r0 and r1, r1, #0 xefffffff and r1, r1, #0 xefffffff str r1, r0 str r1, r0 MOV R5 , #127 ; MOV
21、 R5 , #127 ;设置要打印的字符的个数设置要打印的字符的个数 MOV R1 , #0 x0 ;MOV R1 , #0 x0 ;设置要打印的字符设置要打印的字符LOOP LOOP LDR R3 , =UTRSTAT0 LDR R3 , =UTRSTAT0 LDR R2 , R3 LDR R2 , R3 TST R2 ,#0 x04 ; TST R2 ,#0 x04 ;判断发送缓冲区是否为空判断发送缓冲区是否为空 BEQ LOOP ;BEQ LOOP ;为空则执行下边的语句,不为空则跳转到为空则执行下边的语句,不为空则跳转到LOOPLOOP LDR R0 , =UTXH0 LDR R0 ,
22、 =UTXH0 STR R1 ,R0 ; STR R1 ,R0 ;向数据缓冲区放置要发送的数据向数据缓冲区放置要发送的数据 ADD R1, R1, #1ADD R1, R1, #1 SUB R5 ,R5, #0 x01 ; SUB R5 ,R5, #0 x01 ;计数器减计数器减1 1 CMP R5 ,#0 x0CMP R5 ,#0 x0 BNE LOOP BNE LOOP18第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础主要内容ADS 1.2集成开发环境简介集成开发环境简介 基于基于ARM的汇编语言程序设计的汇编语言程序设计基于基于ARM的硬件启动程序的硬件启动程序基于基于AR
23、M的的C语言与汇编语言混合编程语言与汇编语言混合编程印制电路板制作简介印制电路板制作简介RVDS 2.2 集成开发环境简介集成开发环境简介 19第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础硬件启动程序的工作一般包括:硬件启动程序的工作一般包括:(1 1) 分配中断向量表分配中断向量表(2 2) 初始化存储器系统初始化存储器系统(3 3) 初始化各工作模式下的堆栈初始化各工作模式下的堆栈(4 4) 初始化有特殊要求的硬件模块初始化有特殊要求的硬件模块(5 5) 初始化用户程序的执行环境初始化用户程序的执行环境(6 6) 切换处理器的工作模式切换处理器的工作模式(7 7) 呼叫主应
24、用程序呼叫主应用程序 4.4 基于ARM的硬件启动程序20第第4 4章章 ARMARM系统硬件设计基础系统硬件设计基础v (1 1) 分配中断向量表分配中断向量表中断中断地址地址复位复位0 0 x00 x00未定义未定义0 0 x04x04软件中断软件中断0 0 x08x08预取中止预取中止0 0 x0Cx0C数据中止数据中止0 0 x10 x10保留保留0 0 x14x14IRQIRQ0 0 x18x18FIQFIQ0 0 x1Cx1CARMARM要求中断向量表必须放置要求中断向量表必须放置在从在从0 0 x0 x0地址开始的连续地址开始的连续3232个字个字节空间内。节空间内。 AREA
25、Init ,CODE, READONLYAREA Init ,CODE, READONLYENTRYENTRYB ResetHandlerB ResetHandlerB UndefHandlerB UndefHandlerB SWIHandlerB SWIHandlerB PreAbortHandlerB PreAbortHandlerB DataAbortHandlerB DataAbortHandlerB BB IRQHandlerB IRQHandlerB FIQHandlerB FIQHandler 中断向量表的程序通常如下所示:中断向量表的程序通常如下所示: 21第第4 4章章 AR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 系统 硬件 设计 基础 课件
限制150内