毕业设计(论文)-嵌入式系统开发.doc_第1页
毕业设计(论文)-嵌入式系统开发.doc_第2页
毕业设计(论文)-嵌入式系统开发.doc_第3页
毕业设计(论文)-嵌入式系统开发.doc_第4页
毕业设计(论文)-嵌入式系统开发.doc_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

哈尔滨远东理工学院学士学位论文 题 目: 姓 名: 分院: 专业: 学 号: 指导教师: 二0 年 月 日毕业设计(论文)评语及成绩 一、指导教师评语:是否同意参加答辩:指导教师签字: 20 年 月 日 二、评阅人评语:是否同意参加答辩: 评阅教师签字: 20 年 月 日 三、答辩委员会评语:是否建议授予学士学位:答辩委员会成员签字:1、 2、 3、 4、 5、 6、7、 8、 9、 20 年 月 日 四、答辩委员会主任单位 答辩委员会主任职称 答辩委员会主任签字 20 年 月 日 五、毕业设计(论文)成绩: 学生所在分院盖章: 20 年 月 日哈尔滨远东理工学院毕业设计(论文)任务书学生姓名学 号分 院专 业任务起止时间: 年 月 日 至 年 月 日毕业设计(论文)题目:毕业设计(论文)工作内容:毕业设计(论文)进度安排:1、查阅中外文文献资料,写出文献综述阶段:2、调查、设计、实验、研究阶段:3、设计(论文)撰写与整理阶段:指导教师意见与要求: 签字: 年 月 日主任意见: 签字: 年 月 日哈尔滨远东理工学院学士学位论文摘 要随着计算机、网络通信和Internet 技术的飞速发展和不断进步,嵌入式系统在家庭和工业应用越来越广泛.如何将嵌入式系统和工业控制系统接入Internet,综合利用嵌入式系统资源,实现嵌入式系统的远程管理和控制,已成为倍受关注的研究课题,而实现嵌入式系统的网络化则成为嵌入式系统的发展趋势.嵌入式Web在网络视频监控系统、电力系统的远程监测与故障诊断、工业自动化系统中设备的保护和控制、智能小区及智能家电灯诸多领域都有良好的应用,为人们管理、控制和监测各种各样的设备提供了一个很好的途径.因此,对嵌入式Web服务器的研究具有重大的意义. 本文首先介绍了嵌入式Web系统的基本概念、历史和发展状况,同时阐述了设计及实现嵌入式Web服务器的关键技术和相关的理论基础.对嵌入式Web服务器的相关理论做了重点分析,最后做出实验,完成了基于ARM平台的简单嵌入式Web服务器的实现,为嵌入式Web服务器开发人员提供了必要了理论和实践基础.关键词:嵌入式;ARM;Web服务器;Socket;InternetAbstractWith the rapid development and advances of computers, network communications and Internet technology, the applications of the embedded systems in the home and industrial are more and more extensive. How to make the embedded systems and industrial control system access to Internet, comprehensive make use of resources of embedded systems, realization the embedded systems of remote management and control, has become times be subjected to concern of research topic, and the realization of networked embedded systems has become a trend.Embedded Web in the network video monitoring system, remote power system monitoring and fault diagnosis, industrial automation system protection and control devices, smart appliances and smart residential area of lights have a good number of applications, which for people to manage, control and monitoring of a variety of equipment types provided a good way. Therefore, the study of embedded Web server has the meaning of great significance.This article first introduced the embedded Web systems basic concept, the history and the development condition, simultaneously elaborated design and realizes the embedded Web servers key technologies and the correlation theories foundation. Here it makes a selective analysis to the embedded Web servers correlation theories, finally make the experiment done, and complete the realization based on ARM platform simple embedded Web server, which has provided essential theory and practice foundation for the embedded Web server development personnel.Keywords:Embedded ;ARM ;Web server ;Socket; Internet目 录摘 要IAbstractII目 录III第1章 绪 论11.1 嵌入式系统11.1.1 嵌入式系统简介11.1.2 实时多任务操作系统11.1.3 嵌入式操作系统的发展状况21.1.4 嵌入式系统软件的特点31.2 嵌入式开发概述31.2.1 嵌入式系统开发需要开发工具和环境31.2.3 嵌入式系统开发人员以应用专家为主41.3 本章小结4第2章 ARM处理器结构和ARM指令集52.1 ARM处理器结构52.2 寄存器和处理器模式52.3 ARM指令集82.3.1 ARM存贮访问指令82.3.2 数据处理指令92.3.3 乘法指令102.3.4 跳转指令102.3.5 杂项指令102.4 本章小结11第3章 C/OS-的移植123.1 移植的要求和准备123.2 移植具体过程123.2.1 C/OS-的软硬件结构体系123.2.2 实时内核C/OS-II在S3C44B0X上的移植133.3 本章小结16第4章 网络转串口驱动的开发174.1 Lwip在C/OS-上的移植174.1.1 开源TCP/IP协议栈LwIP简介174.1.2 基于uC/0S II的网络平台概述174.1.3 LwIP在uC/0S II下的实现184.2 MAC和IP地址设置264.2.1 嵌入式网络设备中MAC及IP地址的特点264.2.2 MAC及IP地址的设置274.3 串口驱动的实现304.3.1 串口原理简介304.3.2 在C/OS-操作系统上实现ARM串口功能314.4 本章小结32结 论38致 谢39参考文献40附录A42附录B44-45- 第1章 绪论 第1章 绪 论1.1 嵌入式系统1.1.1 嵌入式系统简介随着计算机技术和微电子技术的迅速发展,嵌入式系统应用领域越来越广泛.当今,嵌入式系统已成为一个时髦的名词,就像当初的计算机热潮,似乎比当初的计算机热潮涉及的领域更广泛,应用技术人员更多,相关国民经济产值也更庞大.报纸、杂志、网络都把嵌入式系统当作讨论的热门话题.嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材.它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统.嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等4个部分组成,它是集软硬件于一体的可独立工作的器件.嵌入式系统的软件部分包括操作系统软件(要求实时和多任务操作)和应用程序编程.操作系统控制着应用程序编程与硬件的交互作用,而应用程序控制着系统的运作和行为.嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等Browser.嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序.与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点.1.1.2 实时多任务操作系统RTOS(Real Time multi-tasking Operation System),即实时多任务操作系统是嵌入式应用软件的基础和开发平台.目前在中国大多数嵌入式软件开发还是基于处理器直接编写,没有采用商品化的RTOS,不能将系统软件和应用软件分开处理.RTOS是一段嵌入在目标代码中的软件,用户的其它应用程序都建立在RTOS之上.不但如此,RTOS还是一个可靠性和可信性很高的实时内核,将CPU时间、中断、I/O、定时器等资源都包装起来,留给用户一个标准的API,并根据各个任务的优先级,合理地在不同任务之间分配CPU时间. TOS是针对不同处理器优化设计的高效率实时多任务内核,优秀商品化的RTOS可以面对几十个系列的嵌入式处理器MPU、MCU、DSP、SOC等提供类同的API接口,这是RTOS基于设备独立的应用程序开发基础.因此基于RTOS上的C语言程序具有极大的可移植性.据专家测算,优秀RTOS上跨处理器平台的程序移植只需要修改15%的内容.在RTOS基础上可以编写出各种硬件驱动程序、专家库函数、行业库函数、产品库函数,和通用性的应用程序一起,可以作为产品销售,促进行业内的知识产权交流,因此RTOS又是一个软件开发平台. RTOS是嵌入式系统的软件开发平台.RTOS最关键的部分是实时多任务内核,它的基本功能包括任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理、旗语管理等, 这些管理功能是通过内核服务函数形式交给用户调用的,也就是RTOS的API. RTOS的引入,解决了嵌入式软件开发标准化的难题.随着嵌入式系统中软件比重不断上升、应用程序越来越大,对开发人员、应用程序接口、程序档案的组织管理成为一个大的课题.引入RTOS相当于引入了一种新的管理模式,对于开发单位和开发人员都是一个提高. 基于RTOS开发出的程序,具有较高的可移植性,实现90%以上设备独立,一些成熟的通用程序可以作为专家库函数产品推向社会.嵌入式软件的函数化、产品化能够促进行业交流以及社会分工专业化,减少重复劳动,提高知识创新的效率. 嵌入式工业的基础是以应用为中心的芯片设计和面向应用的软件开发.实时多任务操作系统(RTOS)进入嵌入式工业的意义不亚于历史上机械工业采用三视图的贡献,对嵌入式软件的标准化和加速知识创新是一个里程碑. 目前,商品化的RTOS可支持从8BIT的8051到32BIT的PowerPC及DSP等几十个系列的嵌入式处理器.提供高质量源代码RTOS的著名公司主要集中在美国.1.1.3 嵌入式操作系统的发展状况国外嵌入式操作系统已经从简单走向成熟,主要有Vxwork、QNX、PalmOS、Windows CE、嵌入式Linux等.国内的嵌入式操作系统研究开发有2种类型,一类是基于国外操作系统2次开发完成的,如海信的基于Windows CE的机顶盒系统;另一类是中国自主开发的嵌入式操作系统,如凯思集团公司自主研制开发的嵌入式操作系统Hopen OS(“女娲计划”)等. Windows CE内核较小,能作为一种嵌入式操作系统应用到工业控制等领域.其优点在于便携性、提供对微处理器的选择以及非强行的电源管理功能.内置的标准通信能力使Windows CE能够访问Internet并收发E_mail或浏览Web.除此之外,Windows CE特有的与Windows类似的用户界面使最终用户易于使用.Windows CE的缺点是速度慢、效率低、价格偏高、开发应用程序相对较难. 3Com公司的Palm OS在掌上电脑和PDA市场上独占其霸主地位,它有开放的操作系统应用程序接口(API),开发商可根据需要自行开发所需的应用程序. Microwave的OS-9是为微处理器的关键实时任务而设计的操作系统,广泛应用于高科技产品中,包括消费电子产品、工业自动化、无线通讯产品、医疗仪器、数字电视/多媒体设备.它提供了很好的安全性和容错性.与其他的嵌入式系统相比,它的灵活性和可升级性非常突出.Lynx Real-time Systems的LynxOS是一个分布式、嵌入式、可规模扩展的实时操作系统,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准.LynxOS支持线程概念,提供256个全局用户线程优先级;提供一些传统的、非实时系统的服务特征;包括基于调用需求的虚拟内存,一个基于Motif的用户图形界面,与工业标准兼容的网络系统以及应用开发工具.pSOS .ISI公司已经被WinRiver公司兼并,现在pSOS属于WindRiver公司的产品.这个系统是一个模块化、高性能的实时操作系统,专为嵌入式微处理器设计,提供一个完全多任务环境,在定制的或是商业化的硬件上提供高性能和高可靠性.可以让开发者根据操作系统的功能和内存需求定制成每一个应用所需的系统.开发者可以利用它来实现从简单的单个独立设备到复杂的、网络化的多处理器系统.QNX是由加拿大QSSL公司开发的分布式、实时的、可扩充的操作系统,它部分遵循POSIX相关标准,如:POSIX.1b实时扩展.它提供了一个很小的微内核以及一些可选的配合进程,具有高度的伸缩性,可灵活地剪裁.其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行.所有其它OS服务,都实现为协作的用户进程,因此QNX内核非常小巧(QNX4.x大约为12Kb)而且运行速度极快.这个灵活的结构可以使用户根据实际的需求,将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作系统.因此,可以广泛地嵌入到智能机器、智能仪器仪表、机顶盒、通讯设备、PDA等应用中去.Hopen OS是凯思集团自主研制开发的嵌入式操作系统,由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成.其核心Hopen Kernel一般为10KB左右大小,占用空间小,并具有实时、多任务、多线程的系统特征.在众多的实时操作系统和嵌入式操作系统产品中,WindRiver公司的VxWorks是较为有特色的一种实时操作系统.VxWorks是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统.VxWorks 支持各种工业标准,包括POSIX、ANSI C 和TCP/IP网络协议.同时支持多种处理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS RX000、POWER PC等等.大多数的VxWorks API是专有的.采用GNU的编译和调试器.VxWorks 运行系统的核心是一个高效率的微内核,该微内核支持各种实时功能,包括快速多任务处理、中断支持、抢占式和轮转式调度.目前在全世界装有VxWorks 系统的智能设备数以百万计,其应用范围遍及互联网、电信和数据通信等众多领域.开放源代码的嵌入式Linux操作系统无疑有着很大的优势.嵌入式Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越在嵌入式系统开发中仿真工具(ICE)的障碍.内核的完全开放,使得可以自己设计和开发出真正的硬实时系统;对于软实时系统,在Linux中也容易得到实现.强大的网络支持,使得可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈.1.1.4 嵌入式系统软件的特点嵌入式处理器的应用软件是实现嵌入式系统功能的关键,对嵌入式处理器系统软件和应用软件的要求也和通用计算机有所不同. 1.软件要求固态化存储.为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中. 2.软件代码高质量、高可靠性.尽管半导体技术的发展使处理器速度不断提高、片上存储器容量不断增加,但在大多数应用中,存储空间仍然是宝贵的,还存在实时性的要求.为此要求程序编写和编译工具的质量要高,以减少程序二进制代码长度、提高执行速度. 3.系统软件(OS)的高实时性是基本要求.在多任务嵌入式系统中,对重要性各不相同的任务进行统筹兼顾的合理调度是保证每个任务及时执行的关键,单纯通过提高处理器速度是无法完成和没有效率的,这种任务调度只能由优化编写的系统软件来完成,因此系统软件的高实时性是基本要求. 4.多任务操作系统是知识集成的平台和走向工业标准化道路的基础1.2 嵌入式开发概述1.2.1 嵌入式系统开发需要开发工具和环境通用计算机具有完善的人机接口界面,在上面增加一些开发应用程序和环境即可进行对自身的开发.而嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等.1.2.2 嵌入式系统软件需要RTOS开发平台 通用计算机具有完善的操作系统和应用程序接口(API),是计算机基本组成不可分离的一部分,应用程序的开发以及完成后的软件都在OS平台上面运行,但一般不是实时的.嵌入式系统则不同,应用程序可以没有操作系统直接在芯片上运行;但是为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量.1.2.3 嵌入式系统开发人员以应用专家为主通用计算机的开发人员一般是计算机科学或计算机工程方面的专业人士,而嵌入式系统则是要和各个不同行业的应用相结合的,要求更多的计算机以外的专业知识,其开发人员往往是各个应用领域的专家.因此开发工具的易学、易用、可靠、高效是基本要求.1.3 本章小结Ada语言是20世纪70年代美国国防部开发并投入使用的功能强大的通用系统开发语言,最初为Ada83.它支持模块化、独立编译、协处理等功能.其可靠性、可维护性、可读性都是相当好的.后来,为了更好地支持OOP(Object-Oriented Programming),对其进行了改进,形成了目前广泛使用的Ada95.使用Ada语言可以大大改善系统的清晰性、可靠性、可维护性等性能指标2,3.它是美国国防部指定的唯一一种可用于军用系统开发的语言.C语言是由Dennis Richie于1972年在AT&Bell实验室研究成功并投入使用的系统编程语言.其设计目标是使C既具有汇编语言的效率,又具有高级语言的易编程性.其最具代表性的应用是UNIX操作系统.从20世纪80年代中期C语言涉足实时系统后,受到了普遍欢迎.目前是使用最广泛的嵌入式系统编程语言.C+是由Bjarne Stroustrup 于1995年在Bell实验室研制成功并投入使用的.C+在支持现代软件工程、OOP、结构化等方面对C进行了卓有成效的改进,但在程序代码容量、执行速度、程序复杂程度等方面比C语言程序性能差一些.Modula-2是由Nicklans Wirth在70年代后期根据Pascal 和Modula开发的系统设计语言.其主要目标是在模块化、系统编程、协同处理等方面对Pascal 进行改进.Modula-2具有很强的类型检查能力和丰富的低级功能支持.因此,可用它设计一个完整的实时程序而不用汇编语言的支持.Modula-3是1988年由DEC(Digital Equipment Company)和ORC(Olivetti Research Center)根据Modula-2开发研制并投入使用的系统开发语言.目标是设计一个功能强大但结构简单的通用编程语言.它在协同处理、OOP、自动垃圾收集以及对C语言和UNIX的支持等方面对Modula-2进行了改进Java是网络语言,而嵌入式系统则在功能、价格、体积、功耗、上市时间等方面有特殊要求.因此Java语言受速度和代码容量的限制,本身并不适合于嵌入式系统的应用.但Sun公司并不愿意放弃这个发展潜力巨大的应用市场,对Java进行改进后发表了J2ME(Java2 Micro Edition).它是Java API的一个子集,只包含了Java的关键特性,是专门针对对内存具有苛刻要求的嵌入式系统而设计的.J2ME粗略地将应用对象划分为两大类:内存在128KB512KB之间的设备和内存大于512KB的设备,根据不同的类别提供不同的用户接口和软件包.第2章 ARM处理器结构和ARM指令集2.1 ARM处理器结构ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,该企业设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件.技术具有性能高、成本低和能耗省,适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等.ARM处理器的框架如图2-1所示乘法器指令解码地址自增器nRESETnMREQSEQABORTnIRQnFIQnRWMAS1:0LOCKnCPICPACPBnWAITMCLKnOPCBIGENDISYNCnTRANSnM4:0桶形移位器32 位 ALU写数据 寄存器读数据 寄存器地址寄存器寄存器A31:0ABE及控制 逻辑PC Update解码站指令 解码IncrementerPCABusBBus图2-1ARM处理器架构2.2 寄存器和处理器模式1.ARM 有7个基本工作模式:User:非特权模式,大部分任务执行在这种模式.限制你的内存访问并且你不能直接读取硬件设备正常程序执行的模式FIQ:当一个高优先级(fast)中断产生时将会进入这种模式高速数据传输和通道处理IRQ:当一个低优先级(normal)中断产生时将会进入这种模式通常的中断处理Supervisor:当复位或软中断指令执行时将会进入这种模式供操作系统使用的一种保护模式Abort: 当存取异常时将会进入这种模式虚拟存储及存储保护Undef: 当执行未定义指令时会进入这种模式软件仿真硬件协处理器System: 使用和User模式相同寄存器集的特权模式特权级的操作系统任务2.寄存器组在26位体系下,ARM 处理器有二十七个寄存器,其中一些是在一定条件下使用的,所以一次只能使用十六个.寄存器 0 到寄存器 7 是通用寄存器并可以用做任何目的.不象 80x86 处理器那样要求特定寄存器被用做栈访问,或者象 6502 那样把数学计算的结果放置到一个累加器中,ARM 处理器在寄存器使用上是高度灵活的. 寄存器 8 到 12 是通用寄存器,但是在切换到 FIQ 模式的时候,使用它们的影子(shadow)寄存器. 寄存器 13 典型的用做 OS 栈指针,但可被用做一个通用寄存器.这是一个操作系统问题,不是一个处理器问题,所以如果你不使用栈,只要你以后恢复它,你可以在你的代码中自由的占用(corrupt)它.每个处理器模式都有这个寄存器的影子寄存器. 寄存器 14 专职持有返回点的地址以便于写子例程.当你执行带连接的分支的时候,把返回地址存储到 R14 中.同样在程序第一次运行的时候,把退出地址保存在 R14 中.R14 的所有实例必须被保存到其他寄存器中(不是实际上有效)或一个栈中.这个寄存器在各个处理器模式下都有影子寄存器.一旦已经保存了连接地址,这个寄存器就可以用做通用寄存器了. 寄存器 15 是程序计数器.它除了持有指示程序当前使用的地址的二十六位数之外,还持有处理器的状态. 为更清晰一些, 提供下列图表: User 模式 SVC 模式 IRQ 模式 FIQ 模式 APCSR0 - R0 - R0 - R0 a1R1 - R1 - R1 - R1 a2R2 - R2 - R2 - R2 a3R3 - R3 - R3 - R3 a4R4 - R4 - R4 - R4 v1R5 - R5 - R5 - R5 v2R6 - R6 - R6 - R6 v3R7 - R7 - R7 - R7 v4R8 - R8 - R8 R8_fiq v5R9 - R9 - R9 R9_fiq v6R10 - R10 - R10 R10_fiq slR11 - R11 - R11 R11_fiq fpR12 - R12 - R12 R12_fiq ipR13 R13_svc R13_irq R13_fiq spR14 R14_svc R14_irq R14_fiq lr- R15 / PC - pc最右侧的列是 APCS 代码使用的名字.APCS,ARM 过程调用标准(ARM Procedure Call Standard),提供了紧凑的编写例程的一种机制,定义的例程可以与其他例程交织在一起.最显著的一点是对这些例程来自哪里没有明确的限制.它们可以编译自 C、 Pascal、也可以是用汇编语言写成的. APCS 定义了: 对寄存器使用的限制. 使用栈的惯例. 在函数调用之间传递/返回参数. 可以被回溯的基于栈的结构的格式,用来提供从失败点到程序入口的函数(和给予的参数)的列表.程序计数器构造如下图2-2: 2731N Z C V Q2867I F T mode1623 815 54024fsxc U n d e f i n e dJ图2-2 程序计数器构造条件位:N = 1-结果为负,0-结果为正或0Z = 1-结果为0,0-结果不为0C =1-进位,0-借位V =1-结果溢出,0结果没溢出Q 位:仅ARM 5TE/J架构支持指示增强型DSP指令是否溢出J 位仅ARM 5TE/J架构支持J = 1: 处理器处于Jazelle状态中断禁止位:I = 1: 禁止 IRQ.F = 1: 禁止 FIQ.T Bit仅ARM xT架构支持T = 0: 处理器处于 ARM 状态T = 1: 处理器处于 Thumb 状态Mode位(处理器模式位):0b10000User0b10001FIQ0b10010IRQ0b10011Supervisor0b10111Abort0b11011Undefined0b11111System当处理器执行在ARM状态:所有指令 32 bits 宽所有指令必须 word 对齐所以 pc值由bits 31:2决定, bits 1:0 未定义 (所以指令不能halfword / byte对齐).当处理器执行在Thumb状态:所有指令 16 bits 宽所有指令必须 halfword 对齐所以 pc值由bits 31:1决定, bits 0 未定义 (所以指令不能 byte对齐).当处理器执行在Jazelle状态:所有指令 8 bits 宽处理器执行 word 存取一次取4条指令2.3 ARM指令集2.3.1 ARM存贮访问指令ARM存贮访问指令如下表2-1: 表2-1 ARM存贮访问指令助记符说明操作条件码位置MUL Rd,Rm,Rs32位乘法指令RdRm*Rs (RdRm)MULcondSMLA Rd,Rm,Rs,Rn32位乘法指令RdRm*Rs+Rn (RdRm)MLAcondSUMULL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*RsUMULLcondSUMLAL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)UMLALcondSSMULL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*RsSMULLcondSSMLAL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)SMLALcondS2.3.2 数据处理指令数据处理指令如下表2-2 表2-2 数据处理指令助记符号说明操作条件码位置MOV Rd,operand2数据转送Rd-operand2MOV condSMVN Rd,operand2数据非转送Rd-(NOT)operand2MVN condSADD Rd,Rn,operand2加法运算指令Rd-Rn+operand2ADD condSSUB Rd,Rn,operand2减法运算指令Rd-Rn-operand2SUB condSRSB Rd,Rn,operand2逆向减法指令Rd-operand2-RnRSB condSADC Rd,Rn,operand2带进位加法Rd-Rn+operand2+carryADC condSRSC Rd,Rn,operand2带进位减法Rd-Rn-perand2-(NOT)CarryRSC condSAND Rd,Rn,operand2带进位逆向减法Rd-Rn&operand2AND condSORR Rd,Rn,operand2逻辑或操作指令Rd-Rn|operand2ORR condSEOR Rd,Rn,operand2逻辑异或操作指令Rd-Rnoperand2EOR condSBIC Rd,Rn,operand2位清除指令Rd-Rn(operand2)BIC condCMP Rd,Rn,operand2比较指令标志N、Z、C、V-Rn-operand2CMP condCMN Rd,Rn,operand2负数比较指令标志N、Z、C、V-Rn+operand2CMN condTST Rd,Rn,operand2位测试指令标志N、Z、C、V-Rn&operand2TST condTEQ Rd,Rn,operand2相等测试指令标志N、Z、C、V-Rnoperand2TEQ cond2.3.3 乘法指令 乘法指令如下表2-3: 表2-3 乘法指令助记符说明操作条件码位置MUL Rd,Rm,Rs32位乘法指令RdRm*Rs (RdRm)MULcondSMLA Rd,Rm,Rs,Rn32位乘法指令RdRm*Rs+Rn (RdRm)MLAcondSUMULL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*RsUMULLcondSUMLAL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*Rs+(RdLo,RdHi)UMLALcondSSMULL RdLo,RdHi,Rm,Rs64位无符号乘法指令(RdLo,RdHi)Rm*RsSMULLcondSSMLALcondSSMLALcondSSMLALcondSSMLALcondS2.3.4 跳转指令跳转指令如下表2-4: 表2-4 跳转指令助记符说明操作条件码位置B label跳转指令PclabelBcondBL label带链接的跳转指令LRPC-4,PClabelBLcondRX Rm带状态切换的跳转指令PClable,切换处理状态BXcond2.3.5 杂项指令杂项指令如下表2-5: 表2-5 杂项指令助记符说明 操作条件码位置SWI immed_24软中断指令产生软中断,处理器进入管理模式SWIcondMRS Rd,psr读状态寄存器指令Rdpsr,psr为CPSR或SPSRMRScondMRS psr_fields,Rd/#immed_8r写状态寄存器指令Psr_fieldsRd/#immed_8r,psr为CPSR或SPSRMSRcond2.4 本章小结Thumb指令可以作是ARM指令压缩形式的子集,是针对代码密度的问题而提出的,它具有16位的代码密度.Thumb不是一个完整的体系结构,不能指望处理只执行Thumb指令而不支持ARM指令集.Thumb指令集没有协处理器指令.ARM和Thumb之间切换使用BX 指令.Thumb指令与ARM指令在实现上差别不大,在此就不再对Thumb指令集进行详细的介绍了.第3章 C/OS-的移植3.1 移植的要求和准备这一章介绍如何将C/OS-移植到不同的处理器上.所谓移植,就是使一个实时内核能在某个微处理器或微控制器上运行.为了方便移植,大部分的C/OS-代码是用C语言写的;但仍需要用C和汇编语言写一些与处理器相关的代码,这是因为C/OS-在读写处理器寄存器时只能通过汇编语言来实现.由于C/OS-在设计时就已经充分考虑了可移植性,所以C/OS-的移植相对来说是比较容易的.C/OS-II功能强大,支持56个用户任务,其内核为占先式,支持信号量、邮箱、消息队列等多种常用的进程间通信机制,现已成功应用到众多商业嵌入式系统中,是一个成熟稳定的实时内核.与大多商用RTOS不同的是,C/OS-II公开所有的源代码,90%的代码使用标准的ANSI C语言书写,程序可读性强、移植性好;同时它可免费获得,即使商业应用也只收取少量的许可费用.因此,对C/OS-II实时操作系统的学习研究、开发、应用具有重要意义.要使C/OS-正常运行,处理器必须满足以下要求: 处理器的C编译器能产生可重入代码. 用C语言就可以打开和关闭中断. 处理器支持中断,并且能产生定时中断(通常在10至100Hz之间). 处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈. 处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令如果用户理解了处理器和C编译器的技术细节,移植C/OS-的工作实际上是非常简单的.前提是您的处理器和编译器满足了C/OS-的要求,并且已经有了必要工具.移植工作包括以下几个内容: 用#define设置一些常量的值(OS_CPU.H) 声明10个数据类型(OS_CPU.H) 用#define声明三个宏(OS_CPU.H) 用C语言编写六个简单的函数(OS_CPU_C.C) 编写四个汇编语言函数(OS_CPU_A.ASM)3.2 移植具体过程3.2.1 C/OS-的软硬件结构体系Samsung S3C44B0X微处理器是三星公司专为手持设备和其它嵌入式应用提供的高性价比的微控制器解决方案.它使用ARM公司的16位/32位RISC结构,内核是ARM7TDMI,工作在66MHz,片上集成了以下部件:8K Cache、外部存储器控制器、LCD控制器、4个DMA通道、2个UART、1个多主I2C总线控制器、1个I2C总线控制器,以及5通道PWM定时器和1个内部定时器、8通道12位ADC等,能够与常用的外围设备实现无缝连接,功能强大.目前,国内应用较为广泛. C/OS-应用程序C/OS-处理器无关代码OS-CORE.C OS-Q.COS-MBOX.C OS-MEN.COS-TASK.C C/OS-.COS-TIME.C C/OS-.HOS-SEM.CC/OS-设置(应用相关)OS-CFG.HINCLUDES.HC/OS-处理器相关代码OS_CPU.H OS_CPU_A.ASMOS_CPU_C.CC/OS-编译器相关定义存储器系统时钟外围设备处 理 器图3-1 C/OS-软硬件体系结构图3.1说明了C/OS-II的软硬件体系结构.应用程序处于整个系统的顶层,每个任务都可以认为自已独

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论