已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖北工业大学商贸学院06级电子信心工程专业嵌入式生产实习报告 时间:2009-6-12009-6-12地点:华中科技大学工程实训中心带队老师:李应忠 黎曦 张海涛 刘艳指导老师:陈赜教授 王仲东教授 郑希后勤保障老师:彭中启学 院 : 湖 北 工 业 大 学 商 贸 学 院专业 名称 : 电 子 信 息 工 程 班 级 : 06电信本科二班学 号 : 0615120219姓 名 : 吴 凌 云 序言 实习意义此次的嵌入式生产实习无疑对我来说意义重大,很庆幸自己当初选择了电子信息工程专业,可以让我对嵌入式系统进行学习和研究,此次实习不仅检验了我们对理论知识的掌握程度,让我自身的修养和研究能力都有了很大的提高。当然,在嵌入式系统的大门前,我只能算是刚刚看到这个大门的台阶,但这段小小的距离就让我受益良多。我希望自己能在这条道路上走得更远! 学习ARM的意义首先说说ARM的发展,可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器。只要学习一种处理器的就有许多ARM内核的处理器供你使用,有许多公司提供基于该内核的芯片,象世界著名的INTEL,TI,MOTOROLA等公司都提供各种ARM芯片。在嵌入式领域,8位处理器已经不再胜任一些复杂的应用,比如GUI,TCP/IP,FILESYSTEM等,而ARM芯片凭借强大的处理能力和极低的功耗,非常适合这些场合。所以现在越来越多的公司在产品选型的时候考虑到使用ARM处理器,从这个角度来说,对于在校大学生来说,如果掌握了ARM开发技术,对于寻找一份好的工作十分有利。其次,嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。所以掌握ARM开发技术,对社会贡献也有很大帮助。具体实习内容一、嵌入式概述1、嵌入式系统一般指非 PC 系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于 PC 中 BIOS 的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成。 嵌入式系统的组成2、嵌入式系统的核心是嵌入式微处理器。(1)嵌入式微处理器 (Embedded Microprocessor Unit, EMPU)嵌入式微处理器在工作温度、电磁兼容性以及可靠性方面的要求较通用的标准微处理器高。由嵌入式微处理器及其存储器、总线、外设等安装在一块电路主板上构成一个通常所说的单板机系统。(2)嵌入式微控制器 (Microcontroller Unit, MCU)嵌入式微控制器又称单片机,它将整个计算机系统集成到一块芯片中。(3)嵌入式 DSP 处理器 (Embedded Digital Signal Processor, EDSP)由于 DSP 处理器对系统结构和指令进行了特殊设计,使其适合于实时地进行数字信号处理。(4)嵌入式片上系统 (System On Chip, SOC)SOC最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。3、嵌入式操作系统嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等 Browser 。a. 非实时操作系统b. 实时操作系统根据操作系统的工作特性,实时是指物理进程的真实时间。实时操作系统具有实时性,能从硬件方面支持实时控制系统工作的操作系统。其中实时性是第一要求,需要调度一切可利用的资源完成实时控制任务,其次才着眼于提高计算机系统的使用效率,重要特点是要满足对时间的限制和要求。实时系统是指能在确定的时间内执行其功能并对外部的异步事件做出响应的计算机系统。实时系统对逻辑和时序的要求非常严。实时多任务操作系统是指具有实时性、能支持实时控制系统工作的操作系统。概念:(1)系统响应时间(System response time):系统发出处理要求到系统给出应答信号的时间。 (2)任务换道时间(Context-switching time):任务之间切换而使用的时间。 (3)中断延迟(Interrupt latency):计算机接收到中断信号到操作系统作出响应,并完成换道转入中断服务程序的时间。 工作状态:实时系统中的任务有四种状态:运行(Executing),就绪(Ready),挂起(Suspended),冬眠(Dormant)。 运行:获得CPU控制权。 就绪:进入任务等待队列,通过调度转为运行状态。 挂起:任务发生阻塞,移出任务等待队列,等待系统实时事件的发生而唤醒,从而转为就绪或运行。 冬眠:任务完成或错误等原因被清除的任务,也可以认为是系统中不存在的任务。 任何时刻系统中只能有一个任务在运行状态,各任务按级别通过时间片分别获得对CPU的访问权。 嵌入式系统(ES)的嵌入深度ED=F(计算机大小;芯片工艺;系统复杂程度不同;使用环境条件;以及其它原因)。4、嵌入式系统的特点:(1)系统内核小。由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。(2)专用性强。嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全两个概念。 (3)系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。 (4)高实时性的系统软件(OS)是嵌入式软件的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。 (5)嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统直接在芯片上运行;但是为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS(RealTime Operating System)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。 (6)嵌入式系统开发需要开发工具和环境。由于其本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。5、嵌入式系统的分类:由于嵌入式系统由硬件和软件两大部分组成,所以其分类也可以从硬件和软件进行划分。 从硬件方面来讲,各式各样的嵌入式处理器是嵌入式系统硬件中的最核心的部分,而目前世界上具有嵌入式功能特点的处理器已经超过1000种,流行体系结构包括MCU,MPU等30多个系列。嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般就具备以下4个特点: (1)对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。(2)具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。(3)可扩展的处理器结构,以能最迅速地开展出满足应用的最高性能的嵌入式微处理器。(4)嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,如需要功耗只有mW甚至W级。从软件方面划分,主要可以依据操作系统的类型。目前嵌入式系统的软件主要有两大类:实时系统和分时系统。其中实时系统又分为两类:硬实时系统和软实时系统。 实时嵌入系统是为执行特定功能而设计的,可以严格的按时序执行功能。其最大的特征就是程序的执行具有确定性。在实时系统中,如果系统在指定的时间内未能实现某个确定的任务,会导致系统的全面失败,则系统被称为硬实时系统。而在软实时系统中,虽然响应时间同样重要,但是超时却不会导致致命错误。一个硬实时系统往往在硬件上需要添加专门用于时间和优先级管理的控制芯片,而软实时系统则主要在软件方面通过编程实现时限的管理。比如Windows CE就是一个多任务分时系统,而Ucos-II则是典型的实时操作系统。 6、嵌入式系统的应用领域:(1)工业控制: 基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的8、16、32 位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。就传统的工业控制产品而言,低端型采用的往往是位单片机。但是随着技术的发展,32位、64位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的发展。 (2)交通管理: 在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术已经获得了广泛的应用,内嵌GPS模块,GSM模块的移动定位终端已经在各种运输行业获得了成功的使用。目前GPS设备已经从尖端产品进入了普通百姓的家庭,只需要几千元,就可以随时随地找到你的位置。 (3)信息家电: 这将成为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引领人们的生活步入一个崭新的空间。即使你不在家里,也可以通过电话线、网络进行远程控制。在这些设备中,嵌入式系统将大有用武之地。 (4)家庭智能管理系统: 水、电、煤气表的远程自动抄表,安全防火、防盗系统,其中嵌有的专用控制芯片将代替传统的人工检查,并实现更高,更准确和更安全的性能。目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。 (5)POS网络及电子商务: 公共交通无接触智能卡(Contactless Smartcard, CSC)发行系统,公共电话卡发行系统,自动售货机,各种智能ATM终端将全面走入人们的生活,到时手持一卡就可以行遍天下。 (6)环境工程与自然: 水文资料实时监测,防洪体系及水土质量监测、堤坝安全,地震监测网,实时气象信息网,水源和空气污染监测。在很多环境恶劣,地况复杂的地区,嵌入式系统将实现无人监测。 (7)机器人: 嵌入式芯片的发展将使机器人在微型化,高智能方面优势更加明显,同时会大幅度降低机器人的价格,使其在工业领域和服务领域获得更广泛的应用。 这些应用中,可以着重于在控制方面的应用。就远程家电控制而言,除了开发出支持TCP/IP的嵌入式系统之外,家电产品控制协议也需要制订和统一,这需要家电生产厂家来做。同样的道理,所有基于网络的远程控制器件都需要与嵌入式系统之间实现接口,然后再由嵌入式系统来控制并通过网络实现控制。所以,开发和探讨嵌入式系统有着十分重要的意义。ARM处理器的使用量7、嵌入式系统的发展现状:随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。美国著名未来学家尼葛洛庞帝99年1月访华时预言,45年后嵌入式智能(电脑) 工具将是PC和因特网之后最伟大的发明。我国著名嵌入式系统专家沈绪榜院士98年11月在武汉全国第11次微机学术交流会上发表的计算机的发展与技术一文中,对未来10年以嵌入式芯片为基础的计算机工业进行了科学的阐述和展望。1999年世界电子产品产值已超过12000亿美元,2000年达到13000亿美元,预计2005年,销售额将达18000亿美元。 进入20世纪90年代,嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。在通信领域,数字技术正在全面取代模拟技术。在广播电视领域,美国已开始由模拟电视向数字电视转变,欧洲的DVB(数字电视广播)技术已在全球大多数国家推广。数字音频广播(DAB)也已进入商品化试播阶段。而软件、集成电路和新型元器件在产业发展中的作用日益重要。所有上述产品中,都离不开嵌入式系统技术。象前途无可计量的维纳斯计划生产机顶盒,核心技术就是采用32位以上芯片级的嵌入式技术。在个人领域中,嵌入式产品将主要是个人商用,作为个人移动的数据处理和通讯软件。由于嵌入式设备具有自然的人机交互界面,GUI屏幕为中心的多媒体界面给人很大的亲和力。手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像已取得初步成效。 目前一些先进的PDA在显示屏幕上已实现汉字写入、短消息语音发布,日用范围也将日益广阔。对于企业专用解决方案,如物流管理、条码扫描、移动信息采集等,这种小型手持嵌入式系统将发挥巨大的作用。自动控制领域,不仅可以用于ATM机,自动售货机,工业控制等专用设备,和移动通讯设备结合、GPS、娱乐相结合,嵌入式系统同样可以发挥巨大的作用。近期长虹推出的ADSL产品,结合网络,控制,信息,这种智能化,网络化将是家电发展的新趋势。 硬件方面,不仅有各大公司的微处理器芯片,还有用于学习和研发的各种配套开发包。目前低层系统和硬件平台经过若干年的研究,已经相对比较成熟,实现各种功能的芯片应有尽有。而且巨大的市场需求给我们提供了学习研发的资金和技术力量。 从软件方面讲,也有相当部分的成熟软件系统。国外商品化的嵌入式实时操作系统,已进入我国市场的有WindRiver、Microsoft、QNX和Nuclear等产品。我国自主开发的嵌入式系统软件产品,如科银(CoreTek)公司的嵌入式软件开发平台DeltaSystem,中科院推出的Hopen嵌入式操作系统(虽然还不够完善)。同时由于是研究热点,所以我们可以在网上找到各种各样的免费资源,从各大厂商的开发文档,到各种驱动,程序源代码,甚至很多厂商还提供微处理器的样片。这对于我们从事这方面的研发,无疑是个资源宝库。对于软件设计来说,不管是上手还是进一步开发,都相对来说比较容易。这就使得很多生手能够比较快的进入研究状态,利于发挥大家的积极创造性。 今天嵌入式系统带来的工业年产值已超过了1万亿美元,1997年来自美国嵌入式系统大会(Embedded System Conference)的报告指出,未来5年仅基于嵌入式计算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场。美国汽车大王福特公司的高级经理也曾宣称,“福特出售的计算能力已超过了IBM”,由此可以想见嵌入式计算机工业的规模和广度。1998年11月在美国加州举行的嵌入式系统大会上,基于RTOS的Embedded Internet成为一个技术新热点。在国内,“维纳斯计划”和“女锅计划”一度闹得沸沸扬扬,机顶盒、信息加电这两年更成了IT热点,而实际上这些都是嵌入式系统在特定环境下的一个特定应用。据调查,目前国际上已有两百多种嵌入式操作系统,而各种各样的开发工具、应用于嵌入式开发的仪器设备更是不可胜数。在国内,虽然嵌入式应用、开发很广,但该领域却几乎还是空白,只有三两家公司和极少数人员在从事这方面工作。由此可见,嵌入式系统技术发展的空间真是无比广大。 8、嵌入式系统的发展趋势:信息时代,数字时代使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景,同时也对嵌入式生产厂商提出了新的挑战,从中我们可以看出未来嵌入式系统的几大发展趋势: (1)嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。 目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。比如三星在推广Arm7,Arm9芯片的同时还提供开发板和版及支持包(BSP),而WindowCE在主推系统时也提供Embedded VC作为开发工具,还有Vxworks的Tonado开发环境,DeltaOS的Limda编译环境等等都是这一趋势的典型体现。当然,这也是市场竞争的结果。 (2)网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、冰箱、微波炉等功能不再单一,结构更加复杂。 这就要求芯片设计厂商在芯片上集成更多的功能,为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力,同时增加功能接口,如USB,扩展总线类型,如CAN BUS,加强对多媒体、图形等的处理,逐步实施片上系统(SOC)的概念。软件方面采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、保障软件质量和缩短开发周期。 注:USB(universal serial bus)通用串行总线。(3)网络互联成为必然趋势。未来的嵌入式设备为了适应网络发展的要求,必然要求硬件上提供各种网络通信接口。传统的单片机对于网络支持不足,而新一代的嵌入式处理器已经开始内嵌网络接口,除了支持TCPIP协议,还有的支持IEEE1394、USB、CAN、Bluetooth或IrDA通信接口中的一种或者几种,同时也需要提供相应的通信组网协议软件和物理层驱动软件。软件方面系统系统内核支持网络模块,甚至可以在设备上嵌入Web浏览器,真正实现随时随地用各种设备上网。 (4)精简系统内核、算法,降低功耗和软硬件成本未来的嵌入式产品是软硬件紧密结合的设备,为了减低功耗和成本,需要设计者尽量精简系统内核,只保留和系统功能紧密相关的软硬件,利用最低的资源实现最适当的功能,这就要求设计者选用最佳的编程模型和不断改进算法,优化编译器性能。因此,既要软件人员有丰富的硬件知识,又需要发展先进嵌入式软件技术,如Java、Web和WAP等。 (5)提供友好的多媒体人机界面 嵌入式设备能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面。图像界面,灵活的控制方式,使得人们感觉嵌入式设备就象是一个熟悉的老朋友。这方面的要求使得嵌入式软件设计者要在图形界面,多媒体技术上痛下苦功。手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像都会使使用者获得自由的感受。目前一些先进的PDA在显示屏幕上已实现汉字写入、短消息语音发布,但一般的嵌入式设备距离这个要求还有很长的路要走。二、嵌入式设计概述及流程嵌入式系统是一种根据特定用途所专门开发的系统,它只完成预期要完成的功能,因此其开发过程和开发环境同传统的软件开发相比有着显著的不同。开发流程:在嵌入式系统的应用开发中,整个系统的开发过程如下图所示嵌入式系统的开发流程嵌入式系统发展到今天,对应于各种微处理器的硬件平台一般都是通用的、固定的、成熟的,这就大大减少了由硬件系统引入错误的机会。此外,由于嵌入式操作系统屏蔽了底层硬件的复杂性,使得开发者通过操作系统提供的API函数就可以完成大部分工作,因此大大简化了开发过程,提高了系统的稳定性。嵌入式系统的开发者现在已经从反复进行硬件平台设计的过程中解脱出来,从而可以将主要精力放在满足特定的需求上。嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的。目前一般采用的解决办法是首先在通用计算机上编写程序,然后通过交叉编译生成目标平台上可以运行的二进制代码格式,最后再下载到目标平台上的特定位置上运行。需要交叉开发环境(Cross Development Environment)的支持是嵌入式应用软件开发时的一个显著特点,交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机目标机模式,如下图所示:交叉开发环境宿主机(Host)是一台通用计算机(如PC机或者工作站),它通过串口或者以太网接口与目标机通信。宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如Windows和Linux),而且还有各种各样优秀的开发工具(如WindRiver的Tornado、Microsoft的Embedded Visual C+等),能够大大提高嵌入式应用软件的开发速度和效率。目标机(Target)一般在嵌入式应用软件开发期间使用,用来区别与嵌入式系统通信的宿主机,它可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统,但软硬件资源通常都比较有限。嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器,其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。在采用宿主机目标机模式开发嵌入式应用软件时,首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件,然后通过串口或者以网络将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试,最后目标机在特定环境下脱离宿主机单独运行。建立交叉开发环境是进行嵌入式软件开发的第一步,目前常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链、目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境则主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C+等。三、硬件设计模块Q ARM9体系结构对于ARM9系列,其基本内核是ARM9TDMI,下图给出了ARM9TDMI结构框图。主要有7部分构成。1、ARM9体系结构框图比较最常用的是ARM920T内核,下图给出了ARM920T结构框图。ARM920T结构主要部分有:ARM9TDMI内核CPU、MMU、Cache、协处理器接口、运行跟踪信息接口(ETM)、JTAG调试接口、总线接口等7部分构成。ARM9TDMI核性能0.25微米的ARM9TDMI核在执行32位ARM代码时的特性综述于下表。2、ARM9TDMI核 ARM内核由32位ALU、若干个32位通用寄存器以及状态寄存器、328位乘法器、3232位桶形移位寄存器、指令译码以及控制逻辑、指令流水线和数据/地址寄存器组成。 ALU:它有两个操作数锁存器、加法器、逻辑功能、结果以及零检测逻辑构成。 桶形移位寄存器:ARM采用了3232位的桶形移位寄存器,这样可以使在左移/右移n位、环移n位和算术右移n位等都可以一次完成。 高速乘法器:乘法器一般采用“加移位”的方法来实现乘法。ARM为了提高运算速度,则采用两位乘法的方法,根据乘数的2位来实现“加移位”运算 ;ARM高速乘法器采用328位的结构,这样,可以降低集成度(其相应芯片面积不到并行乘法器的1/3)。3、ARM9TDMI核 浮点部件:浮点部件是作为选件供ARM构架使用。FPA10浮点加速器是作为协处理方式与ARM相连,并通过协处理指令的解释来执行。 控制器:ARM的控制器采用的是硬接线的可编程逻辑阵列PLA。 寄存器:具体的介绍参考后面的相关介绍。ARM9硬件电路 CPU电路 LCD电路电源电路复位电路图时钟电路按键电路图外部中断电路图四、软件设计模块1、时钟电路J 说明:2、复位电路3、LED显示Q LED引脚接线原理图Q 寄存器说明:ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决 微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14R0、程序计数器PC、一个或两个状态寄存器都是可访问的。1、ARM工作状态下的寄存器组织通用寄存器:通用寄存器包括R0R15,可以分为三类: 未分组寄存器R0R7 分组寄存器R8R14 程序计数器PC(R15)J 未分组寄存器R0R7: 在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。J 分组寄存器R8R14 对于分组寄存器,他们每一次所访问的物理寄存器与处理器当前的运行模式有关。 对于R8R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiqR12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usrR12_usr。 对于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。采用以下的记号来区分不同的物理寄存器:R13_R14_其中,mode为以下几种模式之一:usr、fiq、irq、svc、abt、und。 寄存器R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。 由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空 间,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式 可以保证异常发生后程序的正常执行。 R14也称作子程序连接寄存器(Subroutine Link Register)或连接寄存器LR。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。与 之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回 值。寄存器R14常用在如下的情况: 在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。以上的描述可用指令完成: 执行以下任意一条指令:MOV PC,LRBX LR 在子程序入口处使用以下指令将R14存入堆栈:STMFD SP!,LR对应的,使用以下指令可以完成子程序返回:LDMFD SP!,PCR14也可作为通用寄存器。J 程序计数器PC(R15) 寄存器R15用作程序计数器(PC)。在ARM状态下,位1:0为0,位31:2用于保存PC;在Thumb状态下,位0为0,位 31:1用于保存PC;虽然可以用作通用寄存器,但是有一些指令在使用R15时有一些特殊限制,若不注意,执行的结果将是不可预料的。在ARM状态 下,PC的0和1位是0,在Thumb状态下,PC的0位是0。 R15虽然也可用作通用寄存器,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。 由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。在ARM状态下,任一时刻可以访问以上所讨论的16个通用寄存器和一到两个状态寄存器。在非用户模式(特权模式)下,则可访问到特定模式分组寄存器,图2.3说明在每一种运行模式下,哪一些寄存器是可以访问的。J 寄存器R16: 寄存器R16用作CPSR(Current Program Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。 每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。 由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。2、Thumb工作状态下的寄存器组织 Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7R0)、程序计数器(PC)、堆栈指针(SP)、 连接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、LR和SPSR。图2.4表明Thumb状态下的寄存器组织。Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系: Thumb状态下和ARM状态下的R0R7是相同的。 Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。 Thumb状态下的SP对应于ARM状态下的R13。 Thumb状态下的LR对应于ARM状态下的R14。 Thumb状态下的程序计数器对应于ARM状态下R15以上对应关系如下图所示:访问THUMB状态下的高位寄存器(Hi-registers): 在Thumb状态下,高位寄存器R8R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。使用带特 殊变量的MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。J 程序状态寄存器 ARM体系结构包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs)。备份的程序状态寄存器用来进行异常处理,其功能包括: 保存ALU中的当前操作信息 控制允许和禁止中断 设置处理器的运行模式程序状态寄存器的每一位的安排如图所示:条件码标志(Condition Code Flags) N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。 在ARM状态下,绝大多数的指令都是有条件执行的。 在Thumb状态下,仅有分支指令是有条件执行的。N Negative 如果结果是负数则置位 Z Zero 如果结果是零则置位 C Carry 如果发生进位则置位 O Overflow 如果发生溢出则置位 I IRQ 中断禁用 F FIQ 快速中断禁用 S1 和 S0 是处理器模式标志: S1 S0 模式 0 0 USR - 用户模式 0 1 FIQ - 快速中断模式 1 0 IRQ - 中断模式 1 1 SVC - 超级用户模式J LED寄存器设置:介绍完寄存器的知识,以下则对LED寄存器进行设置,将会用到这三个寄存器:GPBCON GPBUP GPBDAT引脚说明如下:Q 程序编辑J ARM指令结构介绍1、指令系统概念 指令:是规定计算机进行某种操作的命令。 指令系统:计算机能够执行的各种指令的集合。指令集可以是以下任一种32 bits 长 (ARM状态)l16 bits 长 (Thumb 状态)lARM9支持3种数据类型l字节 (8-bit)l半字 (16-bit)l字 (32-bit)l字必须被排成4个字节边界对齐,半字必须被排列成2个字节边界对齐 2、ARM指令的特点l所有指令都是32位的。l大多数指令都在单周期内完成。l所有指令都可以条件执行。lARM指令为加载/存储load/store类型。 指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。l基本指令仅36条,分成六类。l有7种寻址方式。l指令集可以通过协处理器扩展。l向后兼容:新版本增加指令,并保持指令向后兼容。l数据处理指令 使用和改变寄存器的值l数据传送指令 把存储器的值拷贝到寄存器中 (load) or 把寄存器中的值拷贝到存储器中(store)l控制流指令 l分支l分支和链接, 保存返回的地址,以恢复最先的次序l软件中断指令l程序状态寄存器指令l协处理器指令ARM指令有7种寻址方式:立即寻址、寄存器寻址、寄存器间接寻址、基址寻址、堆栈寻址 、块拷贝寻址、相对寻址。3、ARM指令的格式ARM指令基本的语法格式为: s , , Opcode:指令操作码。cond:指令的条件码。S:决定指令的操作是否影响cpsr的值。Rd:目标寄存器编码。Rn:包含第一个操作数的寄存器编码。Operand2:第2操作数。ARM指令典型的编码格式为:(数据处理指令类)4、指令的条件码 条件码的位数和位置:每条ARM指令包含4位条件码域,它占用指令编码的最高四位31:28。 条件码的表示:条件编码共 24 16 种,其中,15种用于指令的条件码。每种条件码用2个英文缩写字符表示。 带条件指令的执行:ARM处理器根据指令的执行条件是否满足,决定当前指令是否执行。只有在cpsr中的条件标志位满足指定的条件时,指令才会被执行。不符合条件的代码依然占用一个时钟周期(相当于一个NOP指令)。 条件码的书写方法:条件码的位置在指令助记符的后面(因此也称为条件后缀)。例如: MOVEQ R0, R1条件码助记符含 义标 志0000EQ相等Z=10001NE不相等Z=00010CS/HS无符号数大于或等于C=10011CC/LO无符号数小于C=00100MI负数N=10101PI非负数N=00110VS溢出V=10111VC没有溢出V=01000HI无符号数大于C=1且Z=01001LS无符号数小于或等于C=0或Z=11010GE有符号数大于或等于N=V1011LT有符号数小于N!=V1100GT有符号数大于Z=0且N=V1101LE有符号数小于或等于Z=1或N!=V1110AL无条件执行任意1111保留v5以下版本总执行,v5及以上版本有用J ARM的寻址方式主要内容寻址方式:处理器根据指令中给出的(地址)信息,寻找操作数(物理地址)的方式。我们将ARM指令系统的寻址方式分为7种(有分为9种的等)。一、立即寻址立即寻址也叫立即数寻址。立即寻址概念:操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。ADD R0,R0,1 ;R0R01 MOV R0,0x3f; R00x3f书写立即数时,要求以“”为前缀。十六进制数,后加 0x或&,如 #0x3f,#&3f.二进制数,后加 0b, 如 #0b1011十进制数, #后加 0d或缺省,如#0d678,#789 如何构造32位立即数?在指令格式中,第二个操作数有12位:因此有效立即数immediate可以表示成:=immed_8 循环右移(2rot)4 bit 移位值 (0-15)乘于2,得到一个范围在0-30,步长为 2的移位值。因此,将ARM中的立即数称为8位位图。记住一条准则: “最后8位移动偶数位”得到立即数。例如:下列命令中,汇编器把立即数转换为移位操作:MOV R0,#4096; uses 0x40 ror 26ADD R1,R2,#0xFF0000; uses 0xFF ror 16带有立即数的MOV 指令的二进制编码为:MOV R0,#0xF200 ;E3A00CF2. 0xF200 =0xF2循环右移(2*C)MOV R1,#0x110000 ;E3A01811.0x110000 =0x11循环右移(2*8)MOV R4,#0x12800 ;E3A04B4A. 0x12800 =0x4A循环右移(2*B)只有能够通过此构造方法得到的才是合法的立即数。合法立即数:0xFF;0x104(其8位图为0x41);0xFF0;0xFF00非法立即数:0x101;0x102;0xFF1深入理解:一个合法的立即数可能有多种编码方法,将使某些指令的执行产生不同的结果。 如: 0x3F0ARM汇编编译器生成立即数的规则为:当立即数数值在0到0xFF范围时,令immed_8=,rot=0。其它情况下,汇编编译器选择使rot数值最小的编码方式。二、寄存器寻址寄存器寻址: 利用寄存器中的数值作为操作数。这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。两种具体形式:寄存器寻址、寄存器移位寻址。1、寄存器寻址如指令:ADDR0,R1,R2;R0R1R2 2、寄存器移位寻址1)寄存器移位寻址当第二操作数为寄存器型时,在执行寄存器寻址操作时,也可以对第二操作数寄存器进行移位,此时第二操作数形式为:MOV Rd, Rn, Rm,其中: Rm 称为第二操作数寄存器 用来指定移位类型和移位位数,有两种形式:F 5位立即数(其值小于32)F 寄存器(用Rs表示)(其值小于32)在指令执行时将寄存器移位后的内容作为第二操作数参与运算。例如指令:ADD R3,R2,R1,LSR #2 ;R3R2+(R1右移2位)ADD R3,R2,R1,LSR R0 ;R3R2+(R1右移R0位)2)第二操作数移位方式共有6种移位方式: LSL 逻辑左移 LSR 逻辑右移 ASL 算术左移 ASR 算术右移 ROR 循环右移 RRX 带扩展的循环右移LSL:逻辑左移,空出的最低有效位用0填充。LSR:逻辑右移,空出的最高有效位用0填充。SUB R3,R2,R1,LSL #2 ;R3R2-(R1左移2位)SUB R3,R2,R1,LSR R0 ;R3R2-(R1右移R0位)ASL:算术左移,由于左移空出的有效位用0填充,因此它与LSL同义。ASR:算术右移 (Arithmetic Shift Right) 。算术移位的对象是带符号数,移位过程中必须保持操作数的符号不变。如果源操作数是正数,空出的最高有效位用0填充,如果是负数用1填充。30 0ADD R3,R2,R1,ASL #2 ;R3R2+(R1左移2位)SUB R3,R2,R1,ASR R3 ;R3R2-(R1算术右移R3位)ROR:循环右移(Ro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 输电线路迁改项目设备安装调试方案
- 2025四川九州电子科技股份有限公司招聘软件开发岗(平台)2人笔试历年备考题库附带答案详解试卷3套
- 2025北京东城文旅发展集团有限公司应届高校毕业生招聘7人笔试历年常考点试题专练附带答案详解试卷3套
- 2025中国化学工程集团有限公司校园招聘500人笔试历年常考点试题专练附带答案详解试卷3套
- 封丘公务员考试试题及答案
- 楚雄州卫健委公务员考试试题及答案
- 健康养老信息化建设方案
- 产城融合示范区安置区项目建设工程方案
- 北京区卫健委公务员考试试题及答案
- 安置房项目规划设计方案
- DB52-T1626-2021水利工程调整概算报告编制导则
- 第九章 幼儿园组织文化建设课件
- 抢救记录书写要求及模版
- 架线安全技术交底记录
- 人教版数学二年级上册期中考试试卷可打印
- 特种设备日管控、周排查、月调度管理制度
- MOOC 写作与表达-常熟理工学院 中国大学慕课答案
- 钢结构厂房加固施工方案
- 如何预防错混料
- 电气设备老化机理与寿命评估
- 中国梦英语讲解完美版ok
评论
0/150
提交评论