基于ARM的步进电机控制系统设计_第1页
基于ARM的步进电机控制系统设计_第2页
基于ARM的步进电机控制系统设计_第3页
基于ARM的步进电机控制系统设计_第4页
基于ARM的步进电机控制系统设计_第5页
已阅读5页,还剩66页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

图书分类号密级毕业设计论文基于ARM的步进电机控制系统设计DESIGNOFSTEPPINGMOTORCONTROLSYSTEMBASEDONTHEARM学生学号20070501136学生姓名XXXX学院名称XXXX专业名称XXX指导教师XX2011年6月8日徐州工程学院毕业设计论文I徐州工程学院学位论文原创性声明本人郑重声明所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用或参考的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标注。本人完全意识到本声明的法律结果由本人承担。论文作者签名日期年月日徐州工程学院学位论文版权协议书本人完全了解徐州工程学院关于收集、保存、使用学位论文的规定,即本校学生在学习期间所完成的学位论文的知识产权归徐州工程学院所拥有。徐州工程学院有权保留并向国家有关部门或机构送交学位论文的纸本复印件和电子文档拷贝,允许论文被查阅和借阅。徐州工程学院可以公布学位论文的全部或部分内容,可以将本学位论文的全部或部分内容提交至各类数据库进行发布和检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。论文作者签名导师签名日期年月日日期年月日徐州工程学院毕业设计论文II摘要步进电机是一种将电脉冲信号转换成响应角位移或线位移的机电元件,在机电及自动化领域有着广泛的应用。C/OSII是一个完整的、可移植、可固化、可剪裁的占先式实时多任务内核。C/OSII适合小型控制系统,具有执行效率高,占用空间小,实时性能优良和可扩展性能强等特点。因此,研究C/OSII在ARM处理器上的移植就很有意义。本课题主要介绍ARM处理器及其编程模型,以及嵌入式实时操作系统C/OSII的内核结构,从而实现C/OSII在S3C2410上的移植,并在此平台上进行步进电机控制程序设计,控制步进电机启动、停止、正转、反转、加速和减速。关键词ARM;C/OSII;S3C2410;步进电机徐州工程学院毕业设计论文IIIABSTRACTSTEPPINGMOTORISAKINDOFELECTROMECHANICALCOMPONENTTHATISDRIVENINSTEPANGLEORDISPLACEMENTBYELECTRICPULSESIGNALITISUSEDWIDLYINTHEFIELDOFMECHANICALANDELECTRICALENGINEERINGC/OSIIISACOMPLETE,PORTABLE,CANCURE,BUTCLIPPINGOFREALTIMEMULTITASKINGKERNELWONDERFULTYPEC/OSIIISFORSMALLCONTROLSYSTEMS,WITHTHEIMPLEMENTATIONOFHIGHEFFICIENCY,SMALLFOOTPRINT,REALTIMEPERFORMANCEANDSUPERIORSCALABILITYANDSTRONGFEATURESTHEREFORE,INTHISCASESTUDYINGC/OSIIINTHEARMPROCESSORONTHETRANSPLANTHASAVERYIMPORTANTVALUEANDSIGNIFICANCETHEPAPERMAINLYINTRODUCESARMPROCESSORANDITSPROGRAMMINGMODEL,ANDEMBEDDEDREALTIMEOPERATINGSYSTEMC/OSIIKERNELSTRUCTURE,SOASTOREALIZETHEC/OSIIINTHETRANSPLANT,ANDINTHISPLATFORMSTEPPINGMOTORCONTROLSYSTEMDESIGN,CONTROLTHESTEPPINGMOTORTOSTART,STOP,FORWARD,REVERSE,SPEEDUPANDSLOWDOWNKEYWORDSARMC/OSIIS3C2410STEPPINGMOTOR徐州工程学院毕业设计论文I目录1绪论111ARM简介112嵌入式C/OSII113步进电机简介214课题研究主要内容及论文结构安排22C/OSII内核结构321内核保护机制322任务4221任务状态4222任务控制块5223任务调度523中断处理524时钟节拍525C/OSII的初始化和启动63硬件系统831JXARM92410系统832S3C2410处理器介绍8321S3C2410内部结构8322S3C2410功能单元9323S3C2410系统特点9324S3C2410工作模式1133系统硬件模块12331基本模块13332其它模块1334系统硬件资源分配14341地址空间分配以及片选信号定义14342外部中断分配15343A/D端口分配15344RAM空间组织15345FLASH空间组织164C/OSII在ARM上的移植1741移植条件1742移植过程17421OS_CPUH的移植17徐州工程学院毕业设计论文II422OS_CPUC的移植18423OS_CPU_AS的移植215步进电机控制程序设计2651系统总体设计方案2652步进电机控制原理2653步进电机驱动电路设计2653步进电机控制程序设计276系统调试3461ADTIDE开发环境3462超级终端3463系统调试36结论39致谢40参考文献41附录42附录1JXARM92410实验系统42附录2程序部分源码43徐州工程学院毕业设计论文11绪论11ARM简介ARMADVANCEDRISCMACHINES是一家专门从事基于RISC(精简指令集)技术芯片设计开发的公司,成立于1990年11月,前身为英国剑桥的ACORN计算机有限公司。ARM公司是设计公司,是知识产权(IP)供应商,本身不生产芯片,靠转让设计许可由合作伙伴来生产各具特色的芯片。世界上许多著名的半导体、软件和OEM厂商通过购买技术知识产权1P内核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。20世纪90年代以来,ARM32位嵌入式RISC处理器的应用扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位,形成了32位RISC微处理器的实际标准。ARM芯片作为32位RISC微处理器具有RISC体系的一般特点,如1、具有大量的寄存器,大多数数据操作都在寄存器中完成。2、寻址方式灵活简单,执行效率高。3、通过载入和存储指令访问存储器。4、采用固定长度的指令格式。除此之外,ARM体系也了一些别的技术,在保证高性能的同时尽量减小芯片体积,降低芯片功耗。这些技术包括1、所有的指令都可以条件执行,以提高指令执行的效率。2、同一条数据处理指令中包含算术逻辑单元处理和移位处理。3、使用地址自动增加(减少)来优化程序中的循环处理。4、载入和存储指令可以批量传输数据,从而提高数据传输效率。ARM处理器一般都具有体积小、功耗少、成本低、性能高的优点,具有16/32位双指令集及全球众多的合作伙伴的保证供应,从而,在嵌入式系统领域得到了广泛的应用。12嵌入式C/OSIIC/OSII是一个完整的、可移植、固化、裁剪的占先式实时多任务内核。它总是运行最高优先级的就绪任务,每个任务被赋予了唯一的优先级,使用自己独立的堆栈。C/OSII提供了许多系统服务,如邮箱机制、队列机制、信号量机制、固定大小的内存分区以及时间相关的函数等。目前,C/OSII已经应用在很多领域,比如医疗设备、发动机控制、网络设备、自动提款机及工业机器人等。C/OSII最大的特点就是它的源代码开放,这是其它商业实时内核无法比拟的。它是针对嵌入式应用而设计的,而且,在设计之初就充分考虑到了它的可移植性,它的大部分源代码都是用高可移植性的ANSIC编写的。C/OSII可以移植到很多的处理器上,徐州工程学院毕业设计论文2它能运行在大部分的8BITS,16BITS,32BITS,甚至64BITS的微处理器和DSP上,目前C/OSII已在超过40种不同架构的微处理器上运行。13步进电机简介步进电机最早在1920年由英国人开发,1950年代后期晶体管的发明也逐渐应用在步进电机上。步进电动机的发展与计算机工业和数字控制技术密切相关,产品按结构划分有磁阻式、永磁式和混合型等多种形式。近年来,伴随着微电子技术大功率电力电子器件及驱动技术的进步,发达国家已普遍使用性能优越的混合式步进电机。步进电机又称脉冲电机或阶跃电机,国外一般称为STEPMOTOR或者STEPPINGMOTOR,是一种将电脉冲信号转换成角位移或者线位移的一种机电元件,在机电及自动化领域有着广泛的应用。其具有控制简单、误差不累积、电机结构简单、可靠性高等特点,在开环控制领域有着越来越重要的应用前景。14课题研究主要内容及论文结构安排本课题主要研究ARM处理器及其编程模型,及嵌入式实时操作系统C/OSII的内核结构,实现C/OSII在ARM上的移植,并在此平台上进行步进电机控制程序设计,控制步进电机启停、正反转及加减速。论文结构安排如下第一章简单的介绍ARM、C/OSII及步进电机。第二章详细介绍C/OSII的内核结构。主要介绍任务、中断处理、时钟节拍、C/OSII的初始化和启动等知识。第三章介绍硬件系统,包含S3C2410处理器简介、硬件模块、系统硬件资源分配等内容。第四章分析移植条件,实现C/OSII在S3C2410上的移植。第五章进行步进电机驱动电路设计,编写步进电机的控制程序。第六章对系统进行调试,并给出调试结果。徐州工程学院毕业设计论文32C/OSII内核结构C/OSII操作系统的多任务内核,负责管理各个任务。内核提供的基本服务是任务切换,使用实时内核可以大大简化应用系统的设计,通过实时内核可以将应用程序分成若干个任务,由实时内核来管理它们。C/OSII硬件和软件的体系结构见图21。应用程序软件C/OSII与处理器无关的代码OS_CORECUCOS_IICOS_MBOXCOS_QCOS_MEMCOS_TASKCOS_SEMCOS_TIMECC/OSII与应用程序相关的代码OS_CFGHINCLUDESHC/OSII与处理器相关的代码OS_CPUHOS_CPU_AASMOS_CPU_CCCPU时钟图21C/OSII体系结构21内核保护机制在多任务与中断并存的实时操作系统中,为了保护核心区代码,C/OSII的内核需要在存取代码核心区时禁止中断,存取完成后再将中断重新打开,以免出现多个任务或中断服务程序同时进入该代码区。中断禁止时间是实时内核的一项最重要的指标,因为它影响着系统对实时事件的响应能力。C/OSII试图将这段中断禁止时间减至最小。但是,这在很大程度上还取决于系统的CPU结构,以及编译器生成的代码质量。C/OSII定义了两个宏OS_ENTER_CRITICAL和OS_EXIT_CRITICAL来实现对中断的允许和禁止,关中断和开中断是为了保护临界段代码,这些代码与处理器有关,是需要移植的代码。OS_ENTER_CRITICAL和OS_EXIT_CRITICAL可以有3种不同的实现方法方法1DEFINEOS_CRITICAL_METHOD1这是最简单的一种实现OS_ENTER_CRITICAL和OS_EXIT_CRITICAL的方法。如果用户在中断禁止的情况下调用了一个C/OSII函数,而在从一个C/OSII函数返回时,中断将被允许。但是,如果用户在调用C/OSII之前已禁止了中断,而一般在调用返回以后仍要求禁止中断。方法2DEFINEOS_CRITICAL_METHOD2徐州工程学院毕业设计论文4这种实现方法在实现OS_ENTER_CRITICAL时,是将禁止的中断状态保留在堆栈中,然后禁止中断。而OS_EXIT_CRITICAL的实现只需简单地将中断状态从堆栈中恢复出来。无论是在中断禁止时,还是中断允许时调用C/OSII服务,都可以在该调用前后保留中断状态。方法3DEFINEOS_CRITICAL_METHOD3有些编译器提供了一些功能扩展,允许用户获取CPU状态(PSW),并可将它存入函数的局部变量中。于是,这一变量被重新恢复到PSW中,就可以用伪码表示。22任务221任务状态实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,被赋予一定的优先级,有它自身的一套CPU寄存器和自己的栈空间。多任务运行的实现实际上是靠CPU在许多任务之间转换和调度。CPU只有一个,轮番服务于一系列任务中的某一个。每个任务都处在5种状态之中,这5种状态是休眠态、就绪态、运行态、挂起态和被中断态。在任一给定的时刻,任务的状态一定是在这五种状态之一。C/OSII控制下的任务状态转换见图22。图22任务的状态休眠态指任务驻留在程序空间之中,还没有交给C/OSII管理。把任务交给C/OSII是通过调用下述两个函数之一OSTASKCREATE或OSTASKCREATEEXT。当任务一旦建立,这个任务就进入就绪态准备运行。多任务机制是由调用OSSTART来启动的。OSSTART必须在启动期间被调用一次,从而OSTASKDEL挂起运行ISR准备休眠OSTASKDELOSMBOXPOSTOSQPOSTOSQPOSTFRONTOSSEMPOSTOSTASKRESUMEOSTIMEDLYRESUMEOSTIMETICKOSMBOXPENDOSQPENDOSSEMPENDOSTASKSUSPENDOSTIMEDLYOSTIMEDLYHMSMOSSTARTOSINTEXITOS_TASK_SWINTERRUPTOSINTEXITTASKISPREEMPTEDOSTASKDELOSTASKCREATEOSTASKCREATEEXT徐州工程学院毕业设计论文5启动在初始代码中创建好的最高优先级任务。正在运行的任务也可能需要通过调用OSFLAGPEND、OSMUTEXPEND、OSMBOXPEND、或OSQPEND等来等待一个事件的发生。假如事件一直没有出现,调用这些函数的任务将一直被置于等待状态,直到事件出现。除非有任务中断或在C/OSII中禁止了中断,一个运行中的任务总是可以被中断的。被中断了的任务就进入了中断服务态ISR。响应中断时,正在执行的任务被挂起,中断服务子程序控制了CPU的使用权。中断服务子程序可能会报告一个或多个事件的发生,而使一个或多个任务进入就绪态。在这种情况下,从中断服务子程序返回之前,C/OSII要判定,被中断的任务是否还是就绪态任务中优先级最高的。如果中断服务子程序使一个优先级更高的任务进入了就绪态,则新进入就绪态的这个优先级更高的任务将得以运行,否则原来被中断了的任务才能继续运行。当所有的任务都在等待事件发生或等待延迟时间结束,C/OSII执行空闲任务IDLETASK,执行OSTASKIDLE函数。222任务控制块一旦任务建立了,任务控制块OS_TCBSTASKCONTROLBLOCKS将被赋值。任务控制块是一个数据结构,当任务的CPU使用权被剥夺时,C/OSII用它来保存该任务的状态。当任务重新得到CPU使用权时,任务控制块能确保任务从当时被中断的那一点继续执行。OS_TCBS全部驻留在RAM中。任务建立的时候,OS_TCBS就被初始化了。223任务调度UC/OS总是运行进入就绪态任务中优先级最高的那一个。确定哪个任务优先级最高以及应该哪个任务运行了,这些工作都是由调度器完成的,任务级的调度是由函数OSSCHED完成的,中断级的调度是由另一个函数OSINTEXT完成。23中断处理C/OSII中,中断服务子程序要用汇编语言来写。然而,如果用户使用的C语言编译器支持在线汇编语言的话,用户可以直接将中断服务子程序代码放在C语言的程序文件中。用户中断服务子程序1保存全部CPU寄存器;2调用OSINTENTER或OSINTNESTING直接加1;3执行用户代码做中断服务;4调用OSINTEXIT;5恢复所有CPU寄存器;6执行中断返回指令。徐州工程学院毕业设计论文624时钟节拍C/OSII需要提供周期性信号源,用于实现时间延时和确认超时。节拍率应在每秒10次到100次之间,或者说10到100HZ。时钟节拍率越高,系统的额外负荷就越重。时钟节拍的实际频率取决于应用程序的精度。时钟节拍源可以是专门的硬件定时器,也可以是来自50/60HZ交流电源的信号。必须在多任务系统启动以后再开启时钟节拍器,也就是在调用OSSTART之后。换句话说,在调用OSSTART之后做的第一件事是初始化定时器中断。通常,容易犯的错误是将允许时钟节拍器中断放在系统初始化函数OSINIT之后,在启动多任务系统启动函数OSSTART之前。这里潜在地危险是,时钟节拍中断有可能在C/OS启动第一个任务之前发生,此时C/OS是处在一种不确定的状态之中,用户应用程序有可能会崩溃。C/OSII中的时钟节拍服务是通过在中断服务子程序中调用OSTIMETICK实现的。时钟节拍中断服务子程序必须用汇编语言编写,因为在C语言里不能直接处理CPU的寄存器。时钟节拍中断服务子程序的示意代码如下VOIDOSTICKISRVOID保存处理器寄存器的值调用OSINTENTER或是将OSINTNESTING加1调用OSTIMETICK调用OSINTEXIT恢复处理器寄存器的值执行中断返回指令25C/OSII的初始化和启动1初始化在调用C/OSII的任何其它服务之前,C/OSII要求首先调用系统初始化函数OSINIT。OSINIT初始化C/OSII所有的变量和数据结构见OS_COREC。OSINIT建立空闲任务,这个任务总是处于就绪态的。空闲任务OSTASKIDLE的优先级总是设成最低,即OS_LOWEST_PRIO。如果统计任务允许OS_TASK_STAT_EN和任务建立扩展允许都设为1,则OSINIT还得建立统计任务OSTASKSTAT并且让其进入就绪态。OSTASKSTAT的优先级总是设为OS_LOWEST_PRIO1。调用OSINIT之后,一些C/OSII变量和数据结构之间的关系。其解释是基于以下假设的在文件OS_CFGH中,OS_TASK_STAT_EN是设为1的。徐州工程学院毕业设计论文7在文件OS_CFGH中,OS_LOWEST_PRIO是设为63的。在文件OS_CFGH中,最多任务数OS_MAX_TASKS是设成大于2的。以上两个任务的任务控制块(OS_TCBS)是用双向链表链接在一起的。OSTCBLIST指向这个链表的起始处。当建立一个任务时,这个任务总是被放在这个链表的起始处。换句话说,OSTCBLIST总是指向最后建立的那个任务。链的终点指向空字符NULL也就是零。因为这两个任务都处在就绪态,在就绪任务表OSRDYTBL中的相应位是设为1的。还有,它们的相应位是在OSRDYTBL的同一行上,即属同一组,故OSRDYGRP中只有1位是设为1的。C/OSII还初始化了4个空数据结构缓冲区。每个缓冲区都是单向链表,允许C/OSII从缓冲区中迅速得到或释放一个缓冲区中的元素。注意,空任务控制块在空缓冲区中的数目取决于最多任务数OS_MAX_TASKS,这个最多任务数是在OS_CFGH文件中定义的。C/OSII自动安排总的系统任务数OS_N_SYS_TASKS见文件C/OSIIH。控制块OS_TCB的数目也就自动确定了。当然,包括足够的任务控制块分配给统计任务和空闲任务。2启动多任务的启动是用户通过调用OSSTART实现的。然而,启动C/OSII之前,用户至少要建立一个应用任务。初始化和启动C/OSII程序清单VOIDMAINVOIDOSINIT/初始化C/OSII/通过调用OSTASKCREATE或OSTASKCREATEEXT创建至少一个任务OSSTART/开始多任务调度OSSTART永远不会返回/徐州工程学院毕业设计论文83硬件系统31JXARM92410系统JXARM92410教学实验系统是一套软、硬件集成的,基于ARM的完整的教学实验系统。本课题也是借助于JXARM92410系统,从而实现对步进电机的控制。其结构见附录1。32S3C2410处理器介绍S3C2410是由SAMSUNG公司推出的16/32位RISC微处理器,它片内集成ARM920T内核,018UM工艺的CMOS标准宏单元和存储器单元。它的低功耗、简洁和全静态设计特别适用于对成本和功耗敏感的应用,同时采用了一种新型的高级微控制器总线结构(AMBA)。321S3C2410内部结构S3C2410内部结构见图31。徐州工程学院毕业设计论文9图31S3C2410内部结构322S3C2410功能单元1内部18V,存储器33V,外部I/O33V,16KB数据CACHE,16KB指令CACHE,MMU。2内置外部存储器控制器SDRAM控制和芯片选择逻辑。3LCD控制器,一个LCD专业DMA。44个带外部请求线的DMA。53个通用异步串行端口IRDA10,16BYTETXFIFOAND16BYTERXFIFO,2通道SPI。6一个多主I2C总线,一个I2S总线控制器。7SD主接口版本10和多媒体卡协议版本211兼容。8两个USBHOST,一个USBDEVICEVER11。94个PWM定时器和一个内部定时器。10看门狗定时器。11117个通用I/O。1256个中断源。1324个外部中断。14电源控制模式标准、慢速、休眠、掉电。158通道10位ADC和触摸屏接口。16带日历功能的实时时钟。17芯片内置PLL。18设计用于手持设备和通用嵌入式系统。1916/32位RISC体系结构,使用ARM920TCPU核的强大指令集。20带MMU的先进的体系结构支持WINCE、EPOC32、LINUX。21指令缓存CACHE)、数据缓存、写缓存和物理地址TAGRAM,减小了对主存储器带宽和性能的影响。22ARM920TCPU核支持ARM调试的体系结构。23内部先进的位控制器总线AMBAAMBA20,AHB/APB。323S3C2410系统特点1体系结构为手持设备和通用嵌入式应用提供片上集成系统解决方案;16/32位RISC体系结构和ARM920T内核强大的指令集;ARM体系结构存储器管理单元(MMU),用于支持WINDOWSCE,EPOC32和LINUX;令高速存储缓冲器ICACHE,数据高速存储缓冲器DCACHE,写缓冲器和物理地址TAGRAM,减少主存带宽响应带来的影响;采用徐州工程学院毕业设计论文10ARM920TCPU内核支持ARM调试体系结构;内部高级微控制器总线结构(AMBA)(AMBA20,AHB/APB)。2系统管理器支持大/小端模式;寻址空间每BANK128MB(总共1GB);支持可编程的每BANK8/16/32位的数据总线带宽;从BANK0到BANK6都采用固定的起始地址;BANK7具有可编程的BANK起始地址和大小;8个存储器BANK,其中6个适用于ROM,SRAM和其他,另外2个适用于ROM/SRAM和同步DRAM;所有的存储器BANK都具有可编程的操作周期;支持外部等待信号延长总线周期;支持关闭时的SDRAM自刷新模式;支持各种型号的ROM引导NOR,NAND闪存,EEPROM,或其他。3NAND闪存启动引导支持从NAND闪存存储器的启动;采用4KB内部缓冲器进行启动引导;支持启动之后NAND存储器仍然作为外部存储器使用。4CACHE存储器64项全相连模式,采用独立的ICACHE(16KB)和DCACHE(16KB);每行8字长度,其中每行带有一个有效位和两个脏(DIRTY)位;伪随机数或轮转循环替换算法;采用写穿式(WRITETHROUGH)或回写式(WRITEBACK)操作来更新主存储器;写缓冲器可以保存16个字的数据和4个地址。5时钟和电源管理片上MPLL和UPLL;采用UPLL产生操作USB主机/设备的时钟;MPLL产生最大266MHZ(在20V内核电压下)提供MCU所需要的时钟;通过软件可以有选择性地为每个功能模块提供时钟。6中断控制器55个中断源(1个看门狗定时器,5个定时器,9个UARTS,24个外中断源,4个DMA,2个RTC,2个ADC,1个IIC,2个SPI,1个SDI,2个USB,1个LCD和1个电池故障);电平/边沿触发模式可编程外部中断源;支持为紧急中断请求提供快速中断服务。7脉冲带宽调制定时器4通道16位具有PWM功能的定时器,1通道16位内部定时器,可基于DMA或中断工作;可编程的占空比周期、频率和极性;死区发生器;支持外部时钟源。8实时时钟全时钟特性毫秒、秒、分、时、日期、星期、月和年;32768KHZ工作频率;具有报警中断;具有节拍中断。9通用I/O端口24个外部中断端口;多个输入/输出端口。徐州工程学院毕业设计论文1110串行口3通道UART,可以基于DMA模式或中断模式工作;支持5位、6位、7位或者8位串行数据发送/接收支持外部时钟作为UART的运行时钟(UEXTCLK);可编程的传输波特率;支持红外线接口(IRDA10);具有测试用的环回模式;每个通道都具有内部64字节的发送FIFO和64字节的接收FIFO。11DMA4通道的DMA控制器;支持存储器到存储器、I/O端口到存储器、存储器到I/O端口和I/O端到到I/O端口的DMA传输;采用突发传输模式加快传输速率。12A/D转换和触摸屏接口8通道多路复用模数转换器ADC;最大500KBPS传输和10位的转换精度;内部集成直接触摸屏接口的FET。13TFT彩色显示屏支持彩色TFT的每像素1、2、4或8位调色显示;支持16BBP、24BBP无调色真彩显示;支持多种分辩率的液晶屏。14看门狗定时器16位看门狗定时器;中断请求或定时器溢出时系统复位。15IIC总线接口1通道多主控制IIC总线;可进行8位串行、双向数据传输、标准模式下数据传输速度可达100KBPS,快速模式下可达到400KBPS。16IIS总线接口1通道音频IIS总线接口,可基于DMA方式工作;串行,每通道8/16位数据传输;发送和接收具备128字节队列(64字节发送队列加64字节接收对列);支持IIS格式和MSBJUSTIFIED数据格式。17AC97音频编码器接口支持16位采样模式;1通道的立体声PCM输入和1通道的立体声PCM输出。18USB主、从设备2个USB主设备接口;1个USB从设备接口;兼容USBV11标准。19SD主机接口正常、中断、DMA数据传输模式(以字节、半字和字方式);DMA并发访问支持;兼容SD存储卡协议10版;兼容SDIO卡协议10版;64字节发送和接收队列;兼容MMC卡协议211版。20SPI接口发送和接收具有28位的移位寄存器;可以基于DMA或中断模式工作。21工作电压徐州工程学院毕业设计论文12内核电压18V最高200MHZ;20V最高266MHZ;存储器和I/O端口电压33V。324S3C2410工作模式S3C2410采用了先进的ARM920T内核,它是由ARMADVANCEDRISCMACHINES公司研制的。1处理工作状态从程序员的角度上看,ARM920T可以工作在下面两种工作状态下的一种ARM状态执行32位的字对齐的ARM指令;THUMB状态执行16位的半字对齐的THUMB指令。2切换状态进入THUMB状态,可以通过执行BX指令,同时将操作数寄存器的状态位0位为1来实现。当处理器从THUMB状态进入异常IRQ,FIQ,UNDEF,ABORT,SWI等,在异常处理返回时,也会自动进入THUMB状态。进入ARM状态,可以通过执行BX指令,并且操作数寄存器的状态位0位为0来实现。当处理器进入异常IRQ,FIQ,RESET,UNDEF,ABORT,SWI等时,PC指针保持在异常模式下的LINK寄存器中,并从异常向量地址处开始执行处理程序。3存储空间的格式ARM920T将存储器空间视为从0开始由字节组成的线性集合,字节0到3中保存了第一个字,字节4到7中保存第二个字,依此类推,ARM920T对存储的字,可以按照小端LITTLEENDIAN或大端BIGENDIAN的方式对待。大端格式字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端格式与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。4指令长度指令可以是32位长度在ARM状态下或16位长度在THUMB状态。5数据类型ARM920T支持字节8位,半字16位和字32位数据类型。字必须按照4字节对齐,半字必须是2字节对齐。6操作模式ARM920T支持7种操作模式;用户模式USER模式,运行应用的普通模式;快速中断模式FIQ模式,用于支持数据传输或通道处理;中断模式IRQ模式,用于普通中断处理;超级用户模式SVC模式,操作系统的保护模式;徐州工程学院毕业设计论文13异常中断模式ABT模式,输入数据后登入或预取异常中断指令;系统模式SYS模式,是操作系统使用的一个有特权的用户模式;未定义模式UND模式,执行了未定义指令时进入该模式。外部中断,异常操作或软件控制都可以改变中断模式。大多数应用程序都时是在用户模式下运行。进入特权模式是为了处理中断或异常请求或操作保护资源服务的。33系统硬件模块ARM92410系统的硬件部分包括基本模块、调试模块、通讯模块、人机交互模块、A/DD/A模块、工业控制模块、IDE/CF/SD/MMC接口模块、GPRS模块、GPS模块。331基本模块1SDRAM存储器主板包含64MBSDRAM。由两片16位数据宽度的SDRAM存储器组成,地址从0X300000000X33FFFFFFF;2FLASH存储器主板包含32MBNORFLASH存储器和8MBNANDFLASH,NORFLASH内部存放启动代码BOOTLOADER、LINUX内核映象、IIS测试声音文件等。其数据宽度为32位,地址从0X000000000X01FFFFFF;NANDFLASH中包含一个CRAMFS文件系统,在LINUX中使用;3串行通讯口主板包含3个UART接口UART0和UART1用作RS232串行接口,UART2用作RS485接口。UART0在BOOTLOADER、演示程序、LINUX和多个实验中用于人机交互通过超级终端以及文件传输;4IIS录放音接口主板有一个可以基于DMA操作的IIS总线接口,可进行立体声录放音;5IIC总线接口与24C08芯片接口,可以存放一些固定的配置数据;64个STEP跑马灯可独立软件编程;76个七段数码管6个共阳七段数码管;8外部中断测试一个按键用于外部中断0的测试;9复位按键按键用于CPU复位;10两通道通用DMA,两通道具有外部请求引脚的外设DMA;11五个PWM定时器和一个内部定时器;12看门狗定时器;138通道10BITADC。332其它模块1调试模块标准JTAG接口20针标准JTAG接口,该接口用于高速仿真调试;简易JTAG调试接口直连标准计算机并口,调试接口,该接口用于简易仿真调试。徐州工程学院毕业设计论文142通讯模块以太网通讯接口10M以太网卡;USB接口两个USBHOST接口,可以挂接U盘、USB鼠标、USB摄像头等USB设备。遵循USB11标准;标准计算机打印口并口。3人机交互模块显示器/触摸屏57英寸,STN256色LCD显示器,320240按键44按键;PS/2键盘和鼠标接口;USB鼠标和键盘接口。4A/DD/A模块10BITA/D模块5工业控制模块两相步进电机驱动;RS485总线接口;CAN总线接口。6IDE/CF/SD/MMC接口模块标准IDE硬盘接口;标准CF卡接口;SD/MMC卡接口。7GPRS模块GPRS无线通讯模块。8GPS模块GPS全球定位系统模块。34系统硬件资源分配341地址空间分配以及片选信号定义FLASH、键盘、数码管等的地址空间分配见表31。表31S3C2410地址空间分配表地址区间说明数据宽度位读/写属性0X000000000X001FFFFFFFLASH存储器地址TE28F12816M字节232R/W0X10000000控制键盘扫描及跑马灯8W0X10000002读入键盘扫描值8R0X10000004数码管数据寄存器8W0X10000006数码管扫描控制寄存器8W0X100800000X100807FFCF卡MEMORY模式属性寄存器8/16R/W徐州工程学院毕业设计论文150X100808000X100808FFCF卡MEMORY模式公共寄存器8/16R/W0X100C00000X100C07FFCF卡I/O模式8/16R/W0X100C00000X100C00FFIDE读写地址空间8/16R/W0X180003000X1800031F网络接口芯片RTL8019AS读写16R/W0X28000000并口控制寄存器8W0X28000000并口状态寄存器8R续表31地址区间说明数据宽度位读/写属性0X28000002并口数据缓存器8R/W0X28000004控制寄存器08W0X28000006控制寄存器18W0X28080000控制寄存器28W0X20000000读密码8R0X300000000X33FFFFFFSDRAM存储器地址空间HY57V56162032M字节232R/W342外部中断分配S3C2410中断控制器接收56个中断源的中断请求。中断源由如DMA控制器、UART、IIC等内部外设提供。这些中断源中,UARTN和EINTN中断以或逻辑输入到中断控制器的。当从内部外设和外部中断请求引脚接收到多个中断请求时,经过中断仲裁后,中断控制器向ARM920T请求FIQ或者IRQ中断。仲裁过程与硬件优先级有关,仲裁结果写入中断请求寄存器。中断请求寄存器帮助确定哪个中断产生。S3C2410的外部中断分配见表32。表32S3C2410外部中断分配表中断口说明INT0IDE中断INT1扩充口中断INT2中断测试INT3中断测试343A/D端口分配S3C2410A/D端口功能分配见表33。表33S3C2410A/D端口分配表A/D口说明备注AIN0A/D采集口测试0用于A/D测试AIN1A/D采集口测试1用于A/D测试AIN5采集触摸屏的Y坐标用于触摸屏徐州工程学院毕业设计论文16AIN7采集触摸屏的X坐标用于触摸屏344RAM空间组织存储空间的定制是嵌入式系统开发的一个特色,我们可以根据自己的需要自行规定内存的使用。在本系统中,SDRAM地址范围从0X300000000X33FFFFFF共64MBYTES。在不同的程序中,SDRAM空间范围被分配成不同的区域用于不同的用途,下表是测试程序所用的一个默认分配方式,它的代码空间和数据空间分配见表34表34用户程序SDRAM空间分配表开始地址结束地址用途0X300000000X33FF0000程序区0X33FF00000X33FF8000栈0X33FFFF000X33FFFFFF中断向量表345FLASH空间组织FLASH地址范围从0X000000000X01FFFFFF共32MBYTES。其空间组织见表35。表35FLASH空间分配表开始地址结束地址用途0X000000000X00040000BOOTLOADER(UBOOT)代码0X000400000X00080000UBOOT环境变量0X000800000X00100000用户程序区0X001000000X00200000LINUX内核映象文件ZIMAGE0X002000000X00600000LINUXRAMDISK映象文件RAMDISKGZ0X007000000X10800000用户程序/数据区0X010800000X01800000JFFS2/CRAMFS文件系统区0X018000000X01FFFFFF用户程序/数据区徐州工程学院毕业设计论文174C/OSII在ARM上的移植41移植条件所谓移植,就是使一个实时内核能在某个微处理器或微控制器上运行。为了方便移植,大部分的C/OSII代码是用C语言写的;但仍需要用C和汇编语言写一些与处理器相关的代码,这是因为C/OSII在读写处理器寄存器时只能通过汇编语言来实现。由于C/OSII仅是一个内核式操作系统,并且在设计时就已经充分考虑了可移植性,所以C/OSII的移植相对来说是比较容易的。要使C/OSII正常运行,处理器必须满足以下1处理器的C编译器能产生可重入代码。2用C语言就可以打开或关闭中断。3处理器支持中断,并且能产生定时中断(通常在10100HZ之间)。4处理器支持能够容纳一定量数据的硬件堆栈。5处理器有将堆栈指针和其他CPU寄存器读出并存储到堆栈或内存中的指令。42移植过程对C/OSII的移植实际上就是对与处理器有关的代码进行重写或修改。移植工作包括以下几个内容1用DEFINE设置一个常量的值(OS_CPUH文件中)。2声明10个数据类型(OS_CPUH文件中)。3用DEFINE声明3个宏(OS_CPUH文件中)。4用C语言编写6个简单的函数(OS_CPU_CC文件中)。5编写4个汇编语言函数(OS_CPU_AASM文件中)。421OS_CPUH的移植C/OSII在特定处理器上的移植工作绝大部分集中在多任务切换的实现上,因为这部分代码主要用来保存和恢复处理器现场,许多操作如读写寄存器操作不能用C语言,只能使用特定的处理器的汇编语言来完成。将C/OSII移植到ARM处理器上,修改三个和体系结构相关的文件即可,代码量大约是500行。这三个文件是OS_CPU_CC、OS_CPU_CH以及OS_CPU_AS,下面将分别说明。1数据类型定义该文件中定义了本系统中所使用的数据类型,这部分的修改是和所用的编译器相关的,不同的编译器会使用不同的字节长度来表示同一数据类型,比如INT,同样在X86平台上,如果用GNU的GCC编译器,则编译为4个字节,而使用MSVC则编译为2个徐州工程学院毕业设计论文18字节。我们这里使用的是GNU的GCC。此外,该文件还定义了堆栈单位,它定义了在处理器现场保护和恢复时所使用的数据类型,它必须和处理器的寄存器长度一致。相关的数据类型定义如下TYPEDEFUNSIGNEDCHARBOOLEANTYPEDEFUNSIGNEDCHARINT8U/无符号8位整数/TYPEDEFSIGNEDCHARINT8S/有符号8位整数/TYPEDEFUNSIGNEDINTINT16U/无符号16位整数/TYPEDEFSIGNEDINTINT16S/有符号16位整数/TYPEDEFUNSIGNEDLONGINT32U/无符号32位整数/TYPEDEFSIGNEDLONGINT32S/有符号32位整数/TYPEDEFFLOATFP32/单精度浮点数/TYPEDEFDOUBLEFP64/双精度浮点数/TYPEDEFUNSIGNEDINTOS_STK/堆栈入口宽度为16位/DEFINEBYTEINT8S/有符号8位整数/DEFINEUBYTEINT8UDEFINEWORDINT16SDEFINEUWORDINT16UDEFINELONGINT32SDEFINEULONGINT32U2ARM处理器相关宏定义该文件还定义了ARM处理器中退出临界区和进入临界区的宏定义,如下DEFINEOS_ENTER_CRITICALARMDISABLEINTDEFINEOS_EXIT_CRITICALARMENABLEINT3堆栈增长方向处理器的堆栈增长方式有两种从上向下和从下向上。此处选择1表示从上向下增长高地址到低地址,反之0表示从下向上增长。DEFINEOS_STK_GROWTH1422OS_CPUC的移植1任务堆栈初始化该函数由OSTASKCREATE或OSTASKCREATEEXT调用,用来初始化任务的堆栈并返回新的堆栈指针STK。初始状态的堆栈模拟发生一次中断后的堆栈结构。在ARM体系结构下,任务堆栈空间由高至低依次将保存着PC、LR、R12、R11、R10、R1、R0、CPSR、SPSR。堆栈初始化工作结束后,OSTASKSTKINIT返回新的堆栈栈顶指针,OSTASKCREATE或OSTASKCREATEEXT将指针保徐州工程学院毕业设计论文19图41OSTASKSTKINIT初始化后的堆栈内容关系存在任务的OS_TCB中。OSTASKSTKINIT初始化后的堆栈内容见图41。PCLRR12R11R0CPSRSPSRSPSR高地址低地址增长方向任务堆栈初始化函数如下所示VOIDOSTASKSTKINITVOIDTASKVOIDPD,VOIDPDATA,VOIDPTOS,INT16UOPTUNSIGNEDINTSTKOPTOPT/这里OPT没有使用/STKUNSIGNEDINTPTOS/载入堆栈指针/为新建的任务初始化任务堆栈/STKUNSIGNEDINTTASK/对PC的任务起始地址/STKUNSIGNEDINTTASK/对LR的任务起始地址/处理器寄存器内容/STK0/R12/STK0/R11/STK0/R10/STK0/R9/STK0/R8/STK0/R7/STK0/R6/STK0/R5/STK0/R4/STK0/R3/STK0/R2/STK0/R1/徐州工程学院毕业设计论文20STKUNSIGNEDINTPDATA/参数值R0/STKSVC32MODE|0X0/处理器状态CPSRIRQ,FIQ禁止/STKSVC32MODE|0X0/处理器状态SPSRIRQ,FIQ禁止/RETURNVOIDSTK2系统HOOK函数在这个文件里面还需要实现几个操作系统规定的HOOK函数,这些函数为用户定义函数,它将在相应的操作系统调用后执行由用户定义的这些HOOK函数,执行特定的用户操作,如果没有特殊需求,则只需要简单地将它们都实现为空函数就可以。这些函数包括OSTASKCREATEHOOKOSTASKDELHOOKOSTASKSWHOOKOSTASKSTATHOOKOSTIMETICKHOOK当用OSTASKCREATE或OSTASKCREATEEXT建立任务的时候就会调用OSTASKCREATEHOOK。当C/OSII设置完了自己的内部结构后,会在调用任务调度程序之前调用OSTASKCREATEHOOK。该函数被调用的时候中断是禁止的。因此用户应尽量减少该函数中的代码以缩短中断的响应时间。当任务被删除的时候就会调用OSTASKDELHOOK。当发生任务切换的时候调用OSTASKSWHOOK。不管任务切换是通过OSCTXSW还是OSINTCTXSW来执行的都会调用该函数。OSTASKSTATHOOK每秒钟都会被OSTASKSTAT调用一次。OSTASKTIMEHOOK在每个时钟节拍都会被OSTASKTICK调用。3中断级任务切换函数该函数由OSINTEXIT和OSEXINTEXIT调用。它是在时钟中断ISR中断服务例程中发现有高优先级任务等待的时钟信号到来,则需要在中断退后并不返回被中断任务,而是直接调度就绪的高优先级任务执行。这样做的目的主要是能够尽快地让高优先级的任务得到响应,保证系统的实时性能。该函数通过设置一个全局变量NEED_TO_SWAP_CONTEXT标志以表示在中断服务程序中进行任务切换

温馨提示

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

评论

0/150

提交评论