第4章 ARM系统硬件设计基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章ARM系统硬件设计基础2第4章ARM系统硬件设计基础主要内容1324ARM开发环境简介基于ARM的汇编语言程序设计基于ARM的硬件启动程序基于ARM的C语言与汇编语言混合编程5印制电路板制作简介3第4章ARM系统硬件设计基础4.1ARM开发环境简介目前进行ARM嵌入式系统开发常见的开发工具主要有:RealViewMDK、IAREWARM、ADS1.2、WinARM等。下面分别介绍RealViewMDK和IAREWARM开发工具的使用。4第4章ARM系统硬件设计基础4.1.1RealViewMDK开发工具简介RealViewMDK(MicrocontrollerDevelopmentKit)开发工具是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。突出的特性如下:•启动代码生成向导。•软件模拟器。•性能分析器。•支持Cortex-M3内核。•RealView编译器。•配备ULINK2仿真器和Flash编程模块。•性价比高,提供专业的本地化技术支持和服务。5第4章ARM系统硬件设计基础使用µVision4创建一个新的工程需要以下步骤:•启动µVision4,创建一个工程文件并从器件数据库中选择一种CPU。•添加和配置启动代码。•设置目标硬件的工具选项。“Project|OptionsforTarget”•创建源文件及文件组,并将其添加到工程中。•编译链接工程并生成一个HEX文件。“Project|Buildtarget”4.1.1.1RealViewMDK下工程的创建6第4章ARM系统硬件设计基础4.1.1.2RealViewMDK下工程的调试µVision4调试器有两种工作模式:•仿真模式•高级GDI驱动器模式。执行菜单命令“Debug|Start/StopDebugSession”或单击工具栏上的图标将启动µVision4的调试模式。基本的调试功能:•设置断点•控制程序单步、全速或停止运行•Serial窗口•反汇编窗口•Watch窗口•寄存器窗口•Memory窗口:7第4章ARM系统硬件设计基础4.1.2IAREWARM集成开发环境简介IAREmbeddedWorkbenchforARM是IARSystems公司为ARM微处理器开发的一个集成开发环境(简称IAREWARM)。IAREWARM的主要模块如下。•高度优化的IARARMC/C++Compiler•IARARMAssembler•一个通用的IARXLINKLinker•IARXAR和XLIB建库程序和IARDLIBC/C++运行库•功能强大的编辑器•项目管理器•命令行实用程序•IARC-SPY调试器(先进的高级语言调试器)IARJ-Link是IAR为支持仿真ARM内核芯片推出的JTAG方式仿真器。8第4章ARM系统硬件设计基础4.1.2.1IAREWARM集成开发环境下工程的创建1.新建工作区“File|New|Workspace”2.新建工程“Project|CreatNewProject”3.保存工作区“File|New|SaveWorkspace”4.参数配置(1)选择目标类型(Debug/Release)(2)配置相关参数“Project|Option”5.向工程中添加文件6.编译9第4章ARM系统硬件设计基础4.1.2.2IAREWARM下工程的调试C-SPY调试器是IAR集成的高级语言调试器,通过C-SPY调试器用户可以查看变量、设置断点、观察反汇编代码、监视寄存器和存储器、在TerminalI/O窗口打印输出等。在没有硬件目标系统的情况下,可以使用C-SPY的模拟器(Simulator)对应用程序进行模拟调试。执行“Project|Debug”菜单命令或者单击工具栏右侧的“DownloadandDebug”按钮,进入调试界面。可进行单步执行、运行到光标处、运行到断点、进入函数、跳出函数等调试操作,同时也可通过View菜单打开相应的窗口来查看内存、变量、寄存器等。如果希望直接在硬件目标系统上进行调试,则需要备有IAR的JTAG仿真器J-Link。10第4章ARM系统硬件设计基础主要内容1324ADS1.2集成开发环境简介基于ARM的汇编语言程序设计基于ARM的硬件启动程序基于ARM的C语言与汇编语言混合编程5印制电路板制作简介11第4章ARM系统硬件设计基础4.2.1ARM汇编器支持的伪指令伪指令是ARM汇编语言程序中的一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,它们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序做各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成了。ARM汇编器支持的伪指令包括:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。12第4章ARM系统硬件设计基础分类指令举例符号定义伪指令GBLA/GBLL/GBLS/LCLA/LCLL/LCLS/SETA/SETL/SETS/RLISTGBLATest1;定义一个名为Test1的全局数值字变量数据定义伪指令DCB/DCW/DCD/DCFD/DCFS/DCQ/SPACE/MAP/FIELDstrDCB“Thisisatest”;分配起始地址为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,READONLY,ALIGN=3;定义了一个代码段,段名为Init,属性为只读,并指定其后的指令为8(23)字节对齐。ARM汇编器支持的常见伪指令13第4章ARM系统硬件设计基础4.2.2基于ARM的汇编语言语句格式ARM汇编语言的语句格式[标号][指令或伪指令][;注释]标号是代表地址的符号,必须在一行的顶格书写,其后不能添加冒号“:”,而所有指令均不能顶格书写。ARM汇编语言对标识符的大小写敏感,书写标号及指令时字母大小写要一致。在ARM汇编语言中,ARM指令、伪指令、寄存器名等可以全部大写或者全部小写,但不能大小写混合使用。为了使源文件易读,可以将一条长的指令通过使用反斜杠字符“\”将其分成几行书写。每行从第一个分号开始到本行结束为注释内容,所有的注释内容均被汇编起忽略。14第4章ARM系统硬件设计基础4.2.3ARM汇编语言程序的基本结构在ARM汇编语言程序中,以程序段为单位来组织代码。段是相对独立的指令或数据序列,具有特定的名称。段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时所需的数据。可执行映像文件通常由以下几部分构成:一个或多个代码段,代码段为只读属性。零个或多个包含初始化数据的数据段,数据段的属性为可读写。零个或多个不包含初始化数据的数据段,数据段的属性为可读写。15第4章ARM系统硬件设计基础一个含有子程序调用的代码段的例子AREAInit,CODE,READONLYENTRYLDRR0,=0x3FF5000LDRR1,0x0fSTRR1,[R0]LDRR0,=0x3F50008LDRR1,0x1STRR1,[R0]BLPROC;子程序调用…PROC;子程序开始…MOVPC,LR;从子程序返回…END16第4章ARM系统硬件设计基础一个数据段的例子AREADataArea,DATA,NOINIT,ALIGN=2DISPBUFSPACE200RCVBUFSPACE200…其中DATA为数据段的标识。17第4章ARM系统硬件设计基础4.2.4基于ARM的汇编语言程序举例举例:连续发送128个ASCII字符的汇编语言的例子…;呼叫子程序UARTbUARTUART;子程序开始ldrr0,=GPHCON;设置GPIO(RxD0,TxD0引脚)ldrr1,=0x2afaaastrr1,[r0]ldrr0,=GPHUPldrr1,=0x7ffstrr1,[r0];;GPH[10:0]禁止上拉ldrr0,=UFCON0;禁用FIFOldrr1,=0x0strr1,[r0]ldrr0,=UMCON0;禁用AFCldrr1,=0x0strr1,[r0]ldrr0,=ULCON0;设置线寄存器ldrr1,=0x3;正常模式,无奇偶校验,一个停止位,8个数据位strr1,[r0]ldrr0,=UCON0;设置Uart0控制器ldrr1,=0x245;RX边沿触发,TX电平触发,禁用延时中断,使用RX错误中断,;正常操作模式,中断请求或表决模式strr1,[r0]ldrr0,=UBRDIV0;设置波特率为115200ldrr1,=0x1a;int(50700000/16/115200)-1=26strr1,[r0]movr1,#10018第4章ARM系统硬件设计基础Delaysubr1,r1,#0x1bneDelay;//开中断ldrr0,=INTMSKldrr1,[r0]andr1,r1,#0xefffffffstrr1,[r0]MOVR5,#127;设置要打印的字符的个数MOVR1,#0x0;设置要打印的字符LOOPLDRR3,=UTRSTAT0LDRR2,[R3]TSTR2,#0x04;判断发送缓冲区是否为空BEQLOOP;为空则执行下边的语句,不为空则跳转到LOOPLDRR0,=UTXH0STRR1,[R0];向数据缓冲区放置要发送的数据ADDR1,R1,#1SUBR5,R5,#0x01;计数器减1CMPR5,#0x0BNELOOP19第4章ARM系统硬件设计基础主要内容1324ADS1.2集成开发环境简介基于ARM的汇编语言程序设计基于ARM的硬件启动程序基于ARM的C语言与汇编语言混合编程5印制电路板制作简介20第4章ARM系统硬件设计基础硬件启动程序的工作一般包括:(1)分配中断向量表(2)初始化存储器系统(3)初始化各工作模式下的堆栈(4)初始化有特殊要求的硬件模块(5)初始化用户程序的执行环境(6)切换处理器的工作模式(7)呼叫主应用程序4.3基于ARM的硬件启动程序21第4章ARM系统硬件设计基础(1)分配中断向量表中断地址复位0x00未定义0x04软件中断0x08预取中止0x0C数据中止0x10保留0x14IRQ0x18FIQ0x1CARM要求中断向量表必须放置在从0x0地址开始的连续32个字节空间内。AREAInit,CODE,READONLYENTRYBResetHandlerBUndefHandlerBSWIHandlerBPreAbortHandlerBDataAbortHandlerB.BIRQHandlerBFIQHandler中断向量表的程序通常如下所示:22第4章ARM系统硬件设计基础(2)初始化存储器系统对存储系统的初始化操作包括对存储器类型、存储器容量、时序以及总线宽度等的配置。通常Flash和SRAM同属于静态存储器类型,可以合用同一个存储器端口;而DRAM因为有动态刷新和地址线复用等特性,通常配有专用的存储器端口;除了存储器外,与网络芯片相关的存储器配置以及外接大容量存储卡的配置也在这里进行。23第4章ARM系统硬件设计基础(3)初始化各工作模式下的堆栈ARM有7种运行状态,每一种状态的堆栈指针寄存器(SP)都是独立的。程序需要对用到的每一种模式下的SP定义一个堆栈地址。定义的方法是改变状态寄存器内的状态位,使处理器切换到不同的状态,然后给SP赋值。;预定义处理器模式常量USERMODEEQU0x10FIQMODEEQU0x11IRQMODEEQU0x12SVCMODEEQU0x13ABORTMODEEQU0x17UNDEFM

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功