嵌入式系统-嵌入式系统介绍.ppt

上传人:牧羊曲112 文档编号:6414962 上传时间:2023-10-28 格式:PPT 页数:125 大小:3.11MB
返回 下载 相关 举报
嵌入式系统-嵌入式系统介绍.ppt_第1页
第1页 / 共125页
嵌入式系统-嵌入式系统介绍.ppt_第2页
第2页 / 共125页
嵌入式系统-嵌入式系统介绍.ppt_第3页
第3页 / 共125页
嵌入式系统-嵌入式系统介绍.ppt_第4页
第4页 / 共125页
嵌入式系统-嵌入式系统介绍.ppt_第5页
第5页 / 共125页
点击查看更多>>
资源描述

《嵌入式系统-嵌入式系统介绍.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统-嵌入式系统介绍.ppt(125页珍藏版)》请在三一办公上搜索。

1、第一讲 嵌入式系统介绍,电信学院崔寅鸣,本讲主要内容,嵌入式系统概述实验室介绍与课程说明嵌入式系统概要介绍EELiod270开发系统介绍Module板、EDR板Banyan-UE仿真器ARM处理器简介体系结构、编程模型、ARM指令系统,嵌入式系统概述,应用于航空航天军事,应用于消费电子产品,嵌入式Internet应用,嵌入式系统的定义(一),IEEE对嵌入式系统的定义:Embedded system is a kind of device used to control,monitor or assist the operation of equipment,machinery or plan

2、t.“控制、监视或者辅助设备、机器和车间运行的装置”,嵌入式系统的定义(二),一般的定义:嵌入式系统是以应用为中心和以计算机技术为基础的,并且软硬件是可裁减的,能满足应用系统对功能、可靠性、实时性、成本、体积、功耗等指标的严格要求的专用计算机系统。简单说,嵌入式系统就是应用软件与系统硬件的一体化。,嵌入式系统的特点,系统内核小:一般应用于小型电子装置。专用性强:软硬件结合紧密,针对硬件进行系统的移植。系统精简:系统软件和应用软件紧密融合,部分无明显区别。实时多任务的操作系统:合理调度多任务,RTOS开发平台。专门的开发工具和环境。,实验室条件,深圳亿道公司EELiod270教学开发平台Inte

3、l Xscale270 微处理器,520MHz完善的硬件平台支持WinCE和Linux操作系统,课程主要内容,ARM与EEliod270开发系统介绍嵌入式Linux系统的构建与启动分析嵌入式Linux下程序开发,课程特点,理论结合实践,通过实验掌握知识、锻炼能力课程涉及面广,要求软硬件综合能力高硬件(嵌入式开发板、各种硬件接口)ARM汇编语言编程C/C+语言编程Linux操作系统QT、Java等,课程安排(一),217周(32学时)2-4周理论课(6学时)5-17周嵌入式Linux实验嵌入式Linux基础实验(系统构建、Makefile实验、Bootloader实验、内核编译实验)嵌入式Lin

4、ux驱动程序开发实验(驱动程序结构、IO口驱动实验)GUI应用程序实验,QT移植实验(不用交报告)自选综合实验(GUI应用开发,QT移植,支持GPRS/GPS/Camera),评分标准,理论课:10实验:90实验表现50%实验报告30%出勤10%,内部网络资源,ftp服务器:,port:21,user:emb,pwd:embeddedEELiod硬件平台资料ADS开发系统资料嵌入式Linux BSP软件包实验指导书其他安装软件(虚拟机,Redhat9等),参考书及资料(一),ARM嵌入式处理器结构与应用基础,北航出版社,马忠梅等,2002嵌入式系统Intel StrongARM结构与开发,北航

5、出版社,陈章龙等,2002ARM应用系统开发详解,清华大学出版社,李驹光等,2003Redhat Linux 9 从入门与精通,Michael Jang著,邱仲潘等译,电子工业出版社Linux编程宝典,John Goerzen著,魏永明等译,电子工业出版社,参考书及资料(二),Alessandro Rubini,魏永明等译,linux设备驱动程序,第二版,中国电力出版社,2002中国Linux论坛 嵌入式开发网,嵌入式系统的基本构成,嵌入式硬件系统嵌入式处理器各种类型存储器模拟电路及电源接口控制器及接插件嵌入式软件系统板级支持包(BSP)操作系统(OS/RTOS)设备驱动(Device Dri

6、ver)协议栈(Protocol Stack)应用程序(Application),嵌入式处理器的分类,嵌入式微处理器(MPU)ARMDragonball Mc9328 Mx1Xscale270嵌入式微控制器(MCU)8051、P51XA、MC68HC05/11/12/16、68300等 嵌入式DSP处理器嵌入式片上系统(SOC-System On Chip)嵌入式可编程片上系统(EPSOC),ARM嵌入式微处理器,ARM公司成立于1990年,Saxby和12名工程师ARM=Advanced RISC MachineRISC(精简指令集)的典型代表32位处理器技术嵌入式领域的主力军ARM处理器有

7、三大特点体积小、功耗低、成本低,性能高ARM/Thumb 32/16位双指令系统全球众多的合作伙伴,ARM,ARM的产品ARM处理器内核,以知识产权(IP)形式提供给IC生产厂家硬核:有和特定工艺相连系的物理版图。软核:用硬件描述语言或C语言写成,用于功能仿真ARM开发工具、SOC开发工具、评估板等ARM公司不生产芯片,ARM,赢利模式:专利授权费+版费目前在通信领域处于统治地位,100%的CDMA手机和85%以上的WCDMA手机Intel Inside&Inside IntelARM芯片年出货量超过几十亿片ARM营收中,手机芯片占2/3,ARM嵌入式微处理器,嵌入式操作系统简介,使用操作系统

8、的好处和坏处底层硬件抽象化,多任务,在比较复杂的应用情况下优势明显占用系统资源,简单应用情况下增加开发难度,嵌入式操作系统特点,除具有普通操作系统的功能如任务调度、中断处理等外,嵌入式操作系统还有以下特点:编码体积小,适合有限的存储空间面向应用,可裁减和移植部分要求实时性强,又称实时多任务操作系统(RTOS)可靠性高以及较强的网络功能,嵌入式操作系统结构,嵌入式操作系统,通常按体系的分类Windows兼容系列Windows CE/NT/XPLinux类嵌入式Linux,uCLinux,RTLinuxAndroid及其派生的iPhone、oPhone、LePhone等通信领域嵌入式操作系统VxW

9、orks,Nucleus,VRTX,QNS,pSOS其他如Symbian、BlackBerry等,嵌入式Linux,特点免费和代码公开支持多种硬件平台可裁剪使用成本低强大的网络功能支持GUI开发丰富的开发技术资源,嵌入式系统的应用开发,本实验室条件支持:无OSADS集成开发环境有OS嵌入式LinuxWindows CE,嵌入式产品开发过程,集成开发环境,ARM ADS(ARM Developer Suits)它是ARM公司的集成开发环境,包括命令行开发工具、图形开发工具、实用工具和支持软件4部分,可以进行编辑、编译及调试C、C+及汇编程序。Metrowerks CodeWarrior for

10、ARM ADS v1.2ARM汇编及C程序的编辑、编译AXD调试,嵌入式应用开发的调试,由于嵌入式系统的可用资源有限,嵌入式开发和调试工作通常要通过高性能的宿主机完成。嵌入式应用软件通过宿主机上的交叉编译器,完成交叉编译和连接后下载到目标机。宿主机:进行嵌入式软件开发的主机目标机:将要开发的目标板,嵌入式开发的调试方法,大致有以下几种调试方法:模拟调试方式ROM Monitor方式(或Angel方式)ICE仿真JTAG调试与仿真,模拟开发调试方式,模拟开发调试不需开发板硬件,一台PC即可纯软件模拟嵌入式处理器的功能和指令。如ARM公司的ARMulator模拟器。它虽然简单可行,但是缺乏在线调试

11、和实时仿真功能。,ROM Monitor调试方式(一),ROM Monitor方式(或Angel方式)ROM Monitor(或Angel)是运行在目标机的Flash或ROM的一段程序,它主要负责监控目标机上被调试程序的运行情况。通过和宿主机的配合,完成嵌入式系统的调试。它是目前低廉有效的一种调试方式。之前课程使用Metrowerks公司的CodeWarrior进行开发调试时要用到的Metro-TRK就属于这类软件。,ROM Monitor调试方式(二),ICE在线仿真模式,在线仿真(In Circuit Emulator)传统硬件级仿真调试模式取下目标板MPU;在线仿真器可以完全仿真MPU的

12、行为;通过卡座等连接到目标板。它支持单步执行、断点、反汇编、源程序级调试。优点:功能非常强大,软硬件均可做到完全实时在线调试缺点:适合于简单的MPU一般滞后MPU几个月价格昂贵,JTAG仿真调试方式(一),JTAG(Joint Test Action Group)联合测试行动小组,是IEEE的一个标准JTAG初始主要用于芯片内部测试,可对具有JTAG接口的芯片的硬件电路进行边界扫描和故障检测后用于调试:在芯片内部定义TAP(Test Access Port),可以访问寄存器和挂在总线上的设备,JTAG仿真调试方式(二),JTAG调试器硬件简单,只进行并口/usb和JTAG接口的电平转换主要工作

13、由主机软件完成,如JTAG/usb协议转换等速度慢,一般10K/s级别JTAG仿真器硬件复杂,除完成JTAG/usb协议转换,可能有MPU进行控制提供并口/USB接口等,速度快价格贵,JTAG仿真调试方式(三),JTAG仿真器 ARM处理器为了方便调试,内含Embeded ICE 宏单元,并留有JTAG调试接口,支持在线仿真。它无需目标存储器,不占用目标系统的端口。使用集成开发环境配合JTAG仿真器是目前最常用的一种调试方式。,JTAG仿真调试方式(四),嵌入式Linux开发调试,嵌入式Linux工具链 交叉编译器GCCarm-linux-gcc项目管理工具MAKE调试工具GDBbreak设置

14、断点Run执行程序Step单步跟踪进入Next单步不进入函数Print,Display显示变量值Quit,EELiod270开发系统介绍,XScale架构PXA270,时钟频率分312MHz、416MHz、520MHz 及624MHz四种内部集成Intel Wireless MMX技术,该技术可提供额外的性能以支持3D游戏和高级视频采用了SpeedStep低功耗技术,通过智能管理电压和频率变化实现节省高达55%的功耗集成了快速捕捉(Intel Quick Capture)技术,使镜头支持400万以上像素,XScale特点,采用ARMV5TE指令集无线MMX指令单元IMMU和DMMUI-Cach

15、e和D-Cache写缓冲器(8入口的高速FIFO)协处理器电源管理与性能监控调试单元,XScale协处理器,CP0:用于DSP处理,更好的处理多媒体信息,包含一个40位累加器,并增加了8条新的指令。CP1:用于无线MMX指令数据传输和状态控制等CP6:为PXA27X新增的协处理器,主要用于减少访问中断控制寄存器的时间。CP14:用于系统的性能监视、时钟管理、电源管理和软件调试CP15:用于MMU控制,PXA270,XSBase270开发平台,触摸屏,8”TFT LCD 640*480,JTAG接口,120pin 扩展接口,PXA270 520MHz,32Pin LCD接口,CF 卡,喇叭,SD

16、/MMC卡,SIM Card,Camera,全功能串口,RTC Battery,红外收发器,RS485,红外串口,Can Bus,以太网口,USB Host,音频输入输出,USB Slave,4*4矩阵键盘,高亮度LED*8,GPS模块接口,步进电机,BT串口,功能转换开关,直流电机,Flash*32M,Sdram*64M,平台硬件分层,分EDR板(底板)和Module板(模块板或核心板)Module板最小系统EDR板功能接口板,Module板,包含以下部分MPUIntel Xscale PXA270 520MHzSDRAM 双片,64M,缺省地址空间是0 xa0000000 0 xaffff

17、fff FLASH双片,32M,其缺省地址空间是0 x00000000 0 x03ffffff CPLD采用Xilinx公司的XC2C128可编程器件,丰富片选及加密串口全功能调试串口网络接口JTAG电源控制LP3971芯片,Intel SpeedStep动态电源管理技术,Module板,另外还含有以下接口电路音频控制接口电路Philips UCB1400芯片,内含10bits的ADCLCD控制电路触摸屏控制电路通过两个120pin的连接器连接到EDR板,Module板,EDR板,PCMCIA/CF卡接口MMC/SD卡接口RTC实时时钟数码管和LED按键Sw1-sw4 直入键盘Sw5-sw16

18、矩阵扫描Quick Capture摄像头模块支持400万像素数码镜头,并能提供最大416Mbps的数据传输速率,EDR板,RS232BT_UART(蓝牙串口)只有收发信号线IR_UART(红外串口)RS485GPS模块接口需另外的GPS模块板CAN总线接口汽车应用,使用270的SPI(串行外设接口)直流电机接口信号电压为+3.3v和-3.3v时,分别正向转动和反向转动,EDR板,步进电机有方向端,四相步进ABCDUSB接口两个HOST接口,支持spec 1.1规范一个SLAVE接口扩展插槽CON10,CON11可外接AD/DA模块板电源外接+5V/3A,+12V/2A输出的开关电源5v及经由变

19、换的3.3v给各逻辑电路供电12v给显示屏、步进电机、风扇供电,EDR板,网络接口直接从Module板引下来拨码开关控制功能复用选择,例如Quick Capture是和马达,按键,485共用信号线,EDR板,Banyan-U仿真器,20pins的JTAG接口和USB接口支持ARM7/ARM9/XScale系列CPU支持USB 2.0/USB 1.1,自动识别核心部分使用CPLD设计使用USB 接口供电JTAG接口电平由目标板决定,可以支持多种电压的CPU,Banyan-U仿真器,基础实验在线调试FLASH烧写,Banyan-UE仿真器安装使用,仿真器的安装解压到安装目录仿真器使用执行Daemo

20、nU.exe,识别处理器(见下图),Daemon图,Banyan仿真器烧写FLASH,执行,识别flash器件型号,Device ID选择要烧写的镜像文件,设置好烧录地址(flash地址是0 x000 x003ffffff是PAX270处理器上电起始执行地址烧写过程:选择AUTO,选中其中的erase,program,verify三项,start!,Flashwrite,参见Banyan-U 软件手册.pdfBanyan-U 硬件手册.pdfFlashWrite使用手册.pdf,目前已购买的独立功能模块,蓝牙模块GPRS模块GPS模块,EELiod270软件,目前提供Windows CE和Li

21、nux两种嵌入式OS的支持,平台配套手册和软件,实验平台使用手册(Windows CE和Linux)上机指导书基础实验上机指导书Windows CE上机指导书Linux上机指导书BSP光盘(Windows CE和Linux),EELIOD WinCE软件,EELIOD Linux BSP软件,Windows CE实验代码,Windows CE 平台搭建线程同步调试驱动程序结构进程通信数据库IO接口-LEDIO接口-电机动态链接库,Windows CE实验代码,无线网络通信Ping和UDP实验设备驱动实验串口实验CAN总线实验CF和SD实验USB摄像头,Linux实验代码,常用命令及工具Make

22、file实验Bootloader内核编译文件系统制作GUI应用驱动程序结构IO驱动,Linux实验代码,SD卡驱动USB驱动QT移植串口通信GPRS和GSM通信WebServer移植USB摄像头嵌入式数据库,ARM处理器简介,ARM体系结构的发展,ARM简介,ARM处理器命名规则,ARM7TDMI核命名规则7 体系结构 T Thumb 代码支持(16 bit 指令)D Debug 硬件调试模块支持M 加强的乘法支持I EmbeddedICE LogicS 可综合的软核E DSPJ Jazeller,允许直接执行Java字节码,ARM处理器支持的运行模式,ARM处理器共支持7种运行模式,分别为:

23、用户(usr):ARM处理器正常的程序执行状态;系统模式(sys):运行具有特权的操作系统任务;快速中断(fiq):用于高速数据传输或通道处理;外部中断(irq):用于通用的中断处理;管理模式(svc):操作系统使用的保护模式;中止(abt):当数据或指令访问中止时进入该模式,可用于虚拟存储及存储保护;未定义(und):当未定义指令执行时进入该模式,可用于硬件协处理器的软件仿真。,ARM处理器运行模式,除用户模式之外的其余6种称为非用户模式,或特权模式(Privileged Modes);而特权模式中,除系统模式之外的其余5种又称为异常模式(Exception Modes)。用户程序运行在用户

24、模式下,不能访问一些受操作系统保护的系统资源。应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器处理器模式的切换。这种体系结构可以使系统控制整个系统的资源。,ARM处理器运行模式,当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器(保存了程序运行状态)不被破坏。,系统模式,系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切

25、换。它主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时可以正常保存当前工作状态,进行模式切换。,ARM的寄存器组织,ARM处理器共有37个32位寄存器,其中31个为通用寄存器,6个状态寄存器。ARM状态下的寄存器组织未分组寄存器R0R7分组寄存器R8R14程序计数器R15(PC)当前程序状态寄存器(CPSR)备份的程序状态寄存器(SPSR),Thumb状态下的寄存器组织,Thumb状态下的寄存器组织通用寄存器R0R7程序计数器PC堆栈指针SP(R13)连接寄存器LRCPSR和S

26、PSR,R13(SP堆栈指针),每种异常模式都有备份寄存器R13_usr,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq用作堆栈指针每种异常模式有自己专用的栈地址R13用于被中断程序的现场保护,即保存需要保护的寄存器值,R14(LR连接寄存器),每种异常模式都有备份寄存器R14_usr,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq两种作用存放当前子程序的返回地址异常中断发生时,该异常模式R14_xxx被设置为将要返回的地址,R15(PC程序计数器),指令地址PC=当前执行指令地址8地址值字对齐及半字对齐例MOV PC,PC;跳转

27、到下面第二条指令,状态寄存器,状态寄存器:当前程序状态寄存器 CPSR,可以在任何工作模式下被访问;程序状态备份寄存器SPSR,只有在异常模式下,才能被访问;,CPSR当前程序状态寄存器(一),当前程序状态寄存器CPSR N:补码形式的有符号数运算时,1为负,0为正;Z:1表示结果为零;C:加减法的进位或借位,以及非加减法的最后移位;V:1表示补码形式的有符号数加减运算时符号位溢出;,CPSR当前程序状态寄存器(二),Q:v5以上版本才有,描述增强DSP运算指令是否发生溢出;I、F:中断禁止位,1表示中断禁止;T:指示处理器处于ARM或Thumb工作状态;,CPSR当前程序状态寄存器(三),M

28、4:0:表示处理器的运行模式0b10000User0b10001FIQ0b10010IRQ0b10011Supervisor0b10111Abort0b11011Undefined0b11111System,ARM控制程序执行的方式,正常执行,每执行一条指令ARM指令PC+4Thumb指令PC+2跳转:B、BL、BX、BLX异常中断执行完当前指令,跳转到异常中断处理程序执行完返回到发生中断指令的下一条处要保护和恢复被中断程序的执行现场,ARM处理器的异常中断(一),异常是指正常的程序执行流程发生暂时的停止或改变,例如在复位、有中断请求及指令预取中止时;ARM处理器支持7种类型的异常。复位(RE

29、SET):当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行。未定义指令(UDEF):当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可使用该异常机制进行软件仿真。软件中断(SWI):该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。使用该异常机制可以实现系统功能调用。,ARM处理器的异常中断(二),指令预取中止(PABT):若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。数据中止(DABT):若处理器数据访问指令的地址不存在,或该地址不允许当前指

30、令访问时,产生数据中止异常。IRQ(外部中断请求):当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系统的外设可通过该异常请求中断服务。FIQ(快速中断请求):当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。,ARM处理器的异常中断(三),ARM处理器的异常中断(四),ARM处理器对异常的处理(一),对异常的响应:将下一条指令的地址存入相应异常类型的连接寄存器LR_mode;保存用户寄存器值到堆栈中将CPSR复制到相应异常类型的SPSR_mode中;设置CPSR的M4:0,强制改变到相应的运行模式;禁止正常中断,如果异常类型为快速中断或复位,

31、同时禁止快中断;强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。,ARM处理器对异常的处理(二),异常返回从堆栈中恢复用户寄存器将SPSR_mode复制回CPSR中复制LR_modePC,未定义异常的操作过程,进入异常:R14_und=产生异常的下一条指令地址SPSR_und=CPSRCPSR4:0=0b11011/*进入未定义运行模式*/CPSR5=0/*进入ARM工作状态*/CPSR7=1/*禁止正常中断*/如果设置了高向量模式,则PC=0 xFFFF0004 否则PC=0 x00000004退出异常:MOVS PC R14 恢复PC(从R14_und)和CP

32、SR(从SPSR_und),并返回到该未定义指令的下一条指令处,ARM推荐的异常退出指令,例:SWI中断的R14,例如:0 x8000 mov.0 x8004 add.0 x8008 SWI.0 x800C mov.0 x8010 add.当程序执行SWI异常时,PC指向0 x8010,在跳转到异常向量的之前,ARM会把R14调整到0 x800C,ARM数据类型,字(Word):在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位,请注意区分。半字(Half-Word):在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。

33、字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。,存储器组织,以0 x87654321为例小端方式对应于地址A+3=0 x87,A+2=0 x65,A+1=0 x43,A=0 x21大端方式对应于地址A=0 x87,A+1=0 x65,A+2=0 x43,A+3=0 x21,字对齐与半字对齐,ARM状态,字地址的低两位bits1:0必须为0b00,半字地址的最低位bit0为0b0Thumb状态,字地址最地位bit0必须为0b0如果写入PC的指令地址非对齐ARMV3及以下,忽略R15的bits1:0ARMV4及以上,执行结果不可预知Thumb,忽略R15的b

34、it0,ARM处理器工作状态,从编程的角度看,ARM处理器有2种工作状态并可自由切换:ARM状态:处理器执行32位的、字对准ARM指令;Thumb状态:处理器执行16位、半字对准的Thumb指令。,ARM/Thumb状态的切换,ARM处理器总是从ARM状态开始执行可用指令实现状态切换BLXLDR、LDM及POP当处理器进入异常中断处理程序时,自动切换到ARM状态如果从Thumb状态进入异常,处理完成退出后仍自动进入Thumb状态,立即数,一条ARM指令32位,可能含12位立即数immediate=immed_8循环右移(2*rotate_imm)合法:0 xff,x0104,0 xff0,0

35、x3f0非法:0 x101,0 xff1,0 x102(非偶数位)Qu:0 x1fc,ARM指令系统,ARM指令集包括:跳转指令数据处理指令程序状态寄存器处理指令加载/存储指令协处理器指令异常产生指令,ARM指令系统,跳转B,BL,BLX移位ASR,LSL,LSR,ROR,ROX存储加载LDR,STR软中断SWI,多寄存器加载/存储指令(一),该指令完成多个通用寄存器与存储单元之间的数据传送。LDM|STM cond 寻址方式 Rn!,通用寄存器组 符号的含义:寻址方式为:IA、IB、DA、DB、FD、ED、FA、EA;Rn:基址寄存器,不允许为R15(PC);!:指令执行后,刷新基址寄存器R

36、n“”:当寄存器列表包含PC且为LDM指令时,同时将SPSR拷贝到CPSR,用于异常返回;当寄存器列表不包含PC,指示指令中所有的寄存器为用户模式下的寄存器,LDM/STM 操作,语法:Rb!,四 种寻址操作:LDMIA/STMIAIncrement After(先操作,后增加)LDMIB/STMIBIncrement Before(先增加,后操作)LDMDA/STMDADecrement After(先操作,后递减)LDMDB/STMDBDecrement Before(先递减,后操作),IA,r1,地址增加,r4,r0,r1,r4,r0,r1,r4,r0,r1,r4,r0,r10,IB,D

37、A,DB,LDMxx r10,r0,r1,r4STMxx r10,r0,r1,r4,基址寄存器(Rb),存储器块拷贝,可选项“!”将导致LDM/STM 指令去自动更新基址寄存器后缀为IA,IB时,加上4 乘以 用于传送的寄存器的数目的值后缀为DA,DB时,减去4乘以用于传送的寄存器的数目的值示例:;r12指向源数据起始地址;r14指向源数据尾地址;r13指向目的数据起始地址loopLDMIAr12!,r0-r11;装载48 bytesSTMIAr13!,r0-r11;存储themCMPr12,r14;check for the endBNEloop;loop until done此循环传送 4

38、8 bytes占用了31周期时钟为33 MHz时传输速率超过50 Mbytes/sec,存储器增加,r13,r14,r12,多寄存器加载/存储指令(二),例如:STMFD R13!,R0,R4-R7,LR;寄存器进栈LDMFD R13!,R0,R4-R7,PC;寄存器返回注:基址寄存器可以出现在寄存器列表中,但要避免和写回操作“!”同时使用。R15可以出现在LDM指令的寄存器列表中;但要避免出现在STM指令的寄存器列表中,此时,可以使用R14(用以保存返回地址)。,堆栈,100,FF,1234,A0BE,8034,ARM堆栈操作通过块传送指令来完成:STMFD(Push)块存储-Full De

39、scending stack STMDBLDMFD(Pop)块装载-Full Descending stack LDMIA,STMFD sp!,r4-r7,lr,ARM宏汇编伪指令LDR,将一个32位常数或一个地址值读取到寄存器中。例LDR R1,=0XFF0;MOV R1,0XFF0LDRR1,=0 xFFE;LDRR1,=ADDR1;注意等号,LDR伪指令,如果可用立即数表达:如:LDR R0,=0X400,则直接翻译成LDR R0,#0X400如果是大常数,不可用立即数表达:如:LDR R0,=0X55555555,则翻译成LDR R0,PC,#Imm_12DCD 0X55555555定

40、义此常数,然后从此地址中读取数据,ARM与C语言的混和编程(一),ARM汇编语言与C/C+的混合编程ARM汇编与C/C+的混合编程要遵循ATPCS规则(ARM-Thumb Procedure Call Standard)混合编程方式嵌入汇编格式:_ _asm在汇编程序与C/C+的程序间进行变量的互访;汇编程序与与C/C+程序间的相互调用。,ARM与C语言的混和编程(二),IMPORT mainAREA Init,CODE,READONLYENTRYSTARTLDR R1,=0 x08000000STRB,R0,R1,#1BL main END,void main()do_task();retu

41、rn;,从汇编跳转到c程序 程序的初始化部分(如外设等)用汇编语言编写,然后,执行跳转指令,转移到c程序的入口进行执行,ARM与C语言的混和编程(三),参数的传递规则子函数的前4个参数在R0R3中传递,其他参数通过堆栈进行传递;子函数的返回结果通过寄存器R0进行传递。,ARM与C语言的混和编程(四),extern void mystrcpy(char*d,char*r);void main()char*s=source;char*r=destionation;mystrcpy(r,s)return;,c程序调用汇编程,EXPORT mystrcpyAREA mystrcpy,CODE,READONLYloopldrb r3,r1,#1 strb r3,r0,#1 cmp r3,#0 bne loop mov pc,lr END,The EndThanks!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号