




已阅读5页,还剩85页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
版权声明:本课件及其印刷物、视频的版权归成都国嵌信息技术有限公司所有,并保留所有权力:任何单位或个人未经成都国嵌信息技术有限公司书面授权,不得使用该课件及其印刷物、视频从事商业、教学活动。已经取得书面授权的,应在授权范围内使用,并注明“来源:国嵌”。违反上述声明者,我们将追究其,法律责任。,ARM编程实例,ContentsADS集成开发环境S3c2440GPIOLED程序设计必修实验,ADS集成开发环境,学习目的:学习开发板的连接,开发板工具的使用,如ADS1.2集成开发环境的使用,把裸机程序运行起来,宿主机,目标机,交叉开发模型,交叉开发模型,在嵌入式开发过程中有宿主机和目标机的角色之分:宿主机是执行编译、链接嵌入式软件的计算机;目标机是运行嵌入式软件的硬件平台。,ARM裸机程序开发硬件连接模型,如何运行逻辑程序?,仿真器,JTAG口,硬件连接,(1)JTAG小板连Mini2440板的10针JTAG下载口;(2)JTAG小板的并口连宿主机并口,若主机无并口,则需要转换口;(3)Mini440板接电源,开机,一、ADS集成开发环境使用,1.H-JTAG2.ADS,如何设置宿主机软件H-JTAG,JTAG是一种国际标准测试协议,最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(TestAccessPort测试访问口),通过专用的JTAG测试工具对内部节点进行测试。现在,JTAG接口还常用于实现ISP(In-systemProgrammable:在线编程),对FLASH等器件进行编程。,H-JTAG,H-JTAG是一款简单易用的的调试代理软件,包括三个工具软件:H-JTAGServer:实现调试代理的功能H-Flasher:实现FLASH烧写的功能H-JTAGemulator:仿真器,实例演示,安装、配置H-JTAG(1)安装H-JTAG(2)配置:SettingLPTJTAGSetting:,(3)设置初始化脚本:把光盘“Windows平台工具H-JTAG”目录中的FriendlyARM2440.his和H-Flasher_mini2440.hfc文件复制到H-JTAG的安装目录:c:programfilesH-JTAGInitInitScriptLoad打开“FriendlyARM2440.his”装载脚本OK(注意不要选中“EnableAutoInit”);再次检测硬件:ControlDetectTarget,显示成功检测到ARM920T,ADS,ARMADS的全称为ARMDeveloperSuite,它是ARM公司推出的新一代ARM集成开发环境,我们使用的ADS为1.2版本。ADS由命令行开发工具、GUI(GraphicsUserInterface,图形用户界面)开发环境(CodeWarrior和AXD)、支持软件组成。,CodeWarrior,CodeWarriorIDE提供了一个简单通用的图形化用户界面用于管理项目。可以以ARM处理器为对象,利用CodewarriorIDE开发C、C+和ARM汇编代码。可编辑编译源文件,实例演示,CodeWarrior创建工程、编译工程打开一个简单的汇编程序:ads.s,基于该汇编程序创建和编译工程,并调试程序FileNewARMExecutableImage:,将ads.s文件拷贝到工程目录中,但并不代表已进入工程中,还需要添加:ProjectAddFiles,将ads.s添加到工程中。配置:EditDebugRelSettings(参考Mini2440手册)编译:ProjectMake,在hello_DataDebugRel目录中生成了hello.bin可执行文件,AXD,AXD是ADS软件中独立于CodewarriorIDE的图形软件,AXD用于对程序进行调试,相当于GDB。,实例演示,AXD调试汇编程序:(1)启动AXD:,(2)配置:OptionsConfigureTarget:,添加:Add打开C:ProgramFilesH-JTAG目录,找到H-JTAG.dll动态链接库:,如何使用CodeWarrior和AXD调试程序?,ProjectDebug:此时CodeWarrior自动将AXD启动起来,前提是前面配置好,此时PC指针指到汇编入口处:Start下面开始调试:单步工作点击,程序开始单步运行查看寄存器:点击,查看寄存器值,RegisterValue,有Current、User/System、FIQ、IRQ、SVC、Abort、Undef、CP15等多种模式。查看当前模式:随着程序运行,各个寄存器的值在改变,每运行一行代码,PC指针加4,二、S3C2440GPIO,通过实例讲解如何通过裸机编程去控制硬件。,(一)GPIO,GPIO,通用输入输出(GeneralPurposeI/O)的简称,其引脚可以供编程使用。嵌入式系统中,有数量众多但结构简单的外部设备,对这些设备的控制,有时只需要一位控制信号就够了,即只要开/关两种状态就够了。比如:灯亮与灭。对于这些设备的控制,使用传统的串行口或并行口都不合适。因此在微控制芯片上一般都会提供一个“通用可编程I/O接口”,即GPIO。,S3C2440GPIO,S3C2440有130个GPIO口,分为AJ共9组:GPA、GPB、GPC、GPJ。通过设置相应寄存器,可以选择某个GPIO口是用于输入、输出还是其他特殊功能。例如:可以设置GPH6作为一般的输入、输出端口,或者用于串口。,设置GPIO,每组GPIO(GPAGPJ),都可以通过3个寄存器来控制与访问,分别为:GPxCON:GPIO配置寄存器GPxDAT:GPIO数据寄存器GPxUP:上拉电阻使能寄存器(其中x表示A、B、C、D、E、F、G、H、I、J),GPxCON寄存器,属于配置(Configure)寄存器,用于选择GPIO口的功能。其中PORTA与PORTBPORTJ在功能选择方面有所不同。GPACON中每一位对应一个I/O口(共23个)。当某位为0时,相应的I/O口为输出;为1时,相应的I/O引脚为地址线或用于地址控制。(S3C2440芯片手册,”I/OPORTS”),I/OPORTS,首先看GPBCON寄存器,GPBCON中每两位控制一条引脚:00输入;01输出;10特殊功能;11保留。GPCCONGPJCON类似。,GPxDAT寄存器,GPxDAT寄存器用于读/写引脚:当引脚被设置为输入时,通过读该寄存器可知相应引脚电平状态是高还是低;当引脚被设置为输出时,写该寄存器相应的位可令此引脚输出高电平或低电平。以GPB为例,GPxUP寄存器,GPxUP:某位为1时,相应引脚无内部上拉电阻;为0时相应的引脚使用内部上拉电阻。上拉电阻:由于管脚悬空时容易受到外界的电磁干扰,因此通过一个电阻来将此管脚与高电平相连,让其固定在高电平,这样的电阻称之为上拉电阻。,每位对应一个引脚,0相应引脚使用上拉;1无上拉,LED程序设计,LED是开发中最常用的状态指示设备,Mini2440开发板具有4个用户可编程LED,它们直接与CPU的GPIO相连接,低电平有效(点亮),详细的资源占用如下表:,Mini2440硬件布局,LED原理图,(1)先将相应的引脚设置为输出模式通过设置控制寄存器来实现(2)再向相应的引脚输出低电平即可点亮LED灯通过向数据寄存器写入相应的值来实现,LED设计思想,实例分析与演示LED全亮全灭控制程序,整个工程由四个文件组成2440init.s、Main.c、2440lib.c、2440slib.s,2440init.s是开发板上电后首先要运行的汇编程序,功能是配置相应的寄存器,包括对CPU内部的多个寄存器的配置,以实现对内存、中断、堆栈的配置,为C语言的运行建立环境。C语言运行是需要条件的,如首先要用到堆栈,如果不把堆栈设置好,C语言将无法运行。,Main.c(1)Led_port_init();对GPBCON进行设置,rGPBCON11111111111111000000001111111111与rGPBCON进行“与”运算后赋值给rGPBCON寄存器,相当于将D17D10清零。,(2)控制亮灭:通过设置GPBDAT寄存器点亮:使GPB5GPB8输出低电平rGPBDAT=rGPBDAT=XXXX1111XXXXX,编译下载运行程序,新建一个工程文件添加所有的源文件和头文件设置编译链接选项:DebugRelSettings编译、链接、下载到开发板运行,实验一实现跑马灯程序,以二进制方式依次显示0-15,实验二,Contents,S3c2440GPIOLED程序设计ARM中断与异常按键程序设计串口程序设计,CPU运行过程中,如何知道各类外设发生了某些不预期的事件,比如串口收到数据、按键按下等?,ARM中断机制,1.查询方式程序不断地查询各设备的状态,并做出相应的反应。他实现比较简单,常用在比较单一的系统中,比如一个温控系统中可以实用查询方式不断检测温度的变化。缺点是占用CPU资源过高,不适应多任务的系统。,ARM中断机制,2.中断方式当事件发生时,硬件会设置某个寄存器;CPU再每执行完一个指令时,通过硬件查看这个寄存器,如果所关注的事件发生了,则中断当前程序流程,跳转到一个固定的地址处理这个事件,最后返回被中断的程序。它的实现相对复杂,但是效率较高,是常用的方法。,ARM中断机制,ARM七种工作模式,1、用户模式(Usr),用于正常执行程序,2、快速中断模式(FIQ),用于高速数据传输,3、外部中断模式(IRQ),用于通常的中断处理,ARM七种工作模式,4.管理模式(svc),操作系统使用的保护模式5.数据访问终止模式(abt),当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。,6.系统模式(sys),运行具有特权的操作系统任务。7.未定义指令中止模式(und),当未定义的指令执行时进入该模式,可用于支持硬件,每种工作模式下,使用不同的寄存器(图)不同的权限触发条件例1:同是MOVR8,#1指令,在不同的工作模式下对应不同的寄存器,好处是模式切换时,先前模式的寄存器内容就不用保存了。例2:系统模式切换到快速中断模式时,首先要保护现场,即上一个模式的寄存器,由于快速中断模式中R8R14有自己的寄存器,故只需保存R0R7即可,体现了“快速”。,不同的权限,管理模式下可以访问所有的东西,体现为不同的权限,需要配合MMU来使用。,触发条件,上电后,2440CPU处于管理模式svc发生中断就进入IRQ模式还可能出现其他情况,如数据访问终止、未定义指令终止等,中断,中断举例:一个人在家里,怎样知道有客人来?查询:每过5分钟开门查看中断:客人来了按门铃程序想知道按键是否被按下?查询中断中断属于一种异常,发生了一场之后,会有哪些事情发生?CPU会强制进入异常模式,切换寄存器PC自动跳到异常入口异常入口:固定的地址,分析2440init.s文件bResetHandlerbHandlerUndef;handlerforUndefinedmodebHandlerSWI;handlerforSWIinterruptbHandlerPabort;handlerforPAbortbHandlerDabort;handlerforDAbortb.;reservedbHandlerIRQ;handlerforIRQinterruptbHandlerFIQ;handlerforFIQinterrupt,S3C2440中断体系结构,中断处理过程中断发生:保存“别人”的(被中断的)状态中断处理恢复“别人”的状态,中断处理流程:(1)中断控制器汇集各类外设发出的中断信号,然后告诉CPU。(2)CPU保存当前程序的运行环境,然后调用中断服务程序(ISR)来处理中断。,ARM中断机制,ARM中断机制,(3)在ISR中通过读取中断控制寄存器、外设的相关寄存器来识别是哪个中断,并进行相应的处理。(4)清除中断:通过读写相关中断控制寄存器和外设相关寄存器来实现。(5)最后恢复被中断程序的环境,继续执行。,中断控制寄存器,1.SUBSRCPND寄存器(SUBSOURCEPENDING)2.INTSUBMSK寄存器(INTERRUPTSUBMSK)3.SRCPND寄存器(SOURCEPENDING)4.INTMSK寄存器(INTERRUPTMASK)5.INTMOD寄存器(INTRRUPTMODE)6.PRIORITY寄存器7.INTPND寄存器(INTERRUPTPENDING)8.INTOFFSET寄存器(INTERRUPTOFFSET),SUBSRCPND寄存器,(SUBSOURCEPENDING),SUBSRCPND寄存器用来标识INT_RXD0,INT_TXD0等子中断是否发生。S3C2440有这样的15个子中断。每一位对应一个子中断。当这些子中断发生,并且子中断未被屏蔽,则它们当中的若干位则汇集在SRCPND上。例如:SUBSRCPND寄存器中的3个中断INT_RXD0、INT_TXD0、INT_ERR0,只要有一个发生了,且没有被屏蔽,则SRCPND的INT_UART0位被置1.清中断时只要往SUBSRCPND寄存器中某位写入1即可。,INTSUBMSK寄存器用来屏蔽SUBSRCPND寄存器所标示的中断。INTSUBMSK寄存器中某位被设为1时,对应的中断被屏蔽。设为0时,表示中断允许。,INTSUBMSK寄存器,(INTERRUPTSUBMSK),SRCPND中每一位用来表示一个(或一类)中断是否已经发生。SRCPND寄存器操作与SUBSRCPND寄存器相似,若想清除某一位,往此位写入1。SRCPND各个位对应哪个中断,参考S3C2440的数据手册,SRCPND寄存器,(SOURCEPENDING),INTMSK寄存器用来屏蔽SRCPND所标示的中断。INTMSK某位被设置为1时,对应的中断被屏蔽,设置为0时,中断允许。INTMSK只能屏蔽设为IRQ的中断,不能屏蔽设为FIQ的中断。,INTMSK寄存器(INTERRUPTMASK),INTMOD寄存器,(INTRRUPTMODE),当INTMOD寄存器中某位被设置为1时,它对应的中断被设为FIQ,即此中断发生时,CPU将进入快速中断模式,这通常用来处理特别紧急的中断。当某位被置为0时,表示为IRQ中断。注意:同一时间里,INTMOD上只能有一位被设置为1.,INTPND寄存器,(INTERRUPTPENDING),经过中断优先级仲裁器选出优先级高的中断后,这个中断在INTPND寄存器中的相应位被置1,随后,CPU将进入中断处理模式处理它。同一时间内,此寄存器只有一位被置1;在ISR中可以根据这个位确定是那个中断。清除该中断时,往这个位写入1。,这个寄存器用来表示INTPND寄存器中哪位被置1了,即INTPND寄存器中位x为1时,INTOFFSET寄存器的值为x(x为031)。在清除SRCPND、INTPND寄存器时,INTOFFSET寄存器被自动清除。,INTOFFSET寄存器,bResetHandlerbHandlerUndef;handlerforUndefinedmodebHandlerSWI;handlerforSWIinterruptbHandlerPabort;handlerforPAbortbHandlerDabort;handlerforDAbortb.;reservedbHandlerIRQ;handlerforIRQinterruptbHandlerFIQ;handlerforFIQinterruptbEnterPWDN;Mustbe0 x20.,Contents,S3c2440GPIOLED程序设计ARM中断与异常按键程序设计串口程序设计,按键原理图,用户按键,使用中断方式设计一个按键程序,按一次点亮一个LED,实验一,使用查询方式设计一个按键程序,按一次点亮一个LED,实验二,Contents,S3c2440GPIOLED程序设计ARM中断与异常按键程序设计串口程序设计嵌入式Linux技术咨询QQ号:550491596嵌入式Linux学习交流QQ群:65212116,通用异步收发器简称UART,即“UniversalAsynchronousReceiverTransmitter”,它用来传输串行数据:发送数据时CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出;接收数据时,UART检测另一根电线上的信号,将串行数据放在缓冲区中,CPU可读取UART获得的这些数据。,UART基本原理,UART基本原理mini2440的UART:,在使用UART之前要设置波特率、传输格式(有多少个数据位、是否使用校验位、是奇校验还是偶校验、有多少个停止位、是否使用流量控制);对于S3C2440,还要选择所涉及管脚为UART功能、选择UART通道的工作模式为中断模式或者DMA模式。设置好之后往某个寄存器写入数据即可发送,读某个寄存器即可得到接收的数据,可以通过查询状态寄存器或者设置中断模式来获知数据是否发送或接收完毕。,UART初始化,UART寄存器(1)UBRDIVn寄存器(2)ULCONn寄存器(3)UCONn寄存器(4)UFCON寄存器(5)UMCONn寄存器(6)UTRSTATn寄存器(7)UERSTATn寄存器(8)UTXHn寄存器(9)URXHn寄存器,在UART模块中有三个UART波特率除数寄存器UBRDIV0,UBRDIV1和UBRDIV2。存储在波特率除数寄存器UBRDIVn中的值用于决定波特率,如下:UBRDIVn=(int)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能汽车维修工入职考核试卷及答案
- 公司领导安全培训试题及答案解析
- 木雕工岗位操作技能考核试卷及答案
- 高铁列车安全管理题库及答案解析
- 2025年认证基础CCAA试题+答案
- 2025年湖北省中级养老护理资格真题附答案
- 衡水中学模拟试题及答案
- 甘孜社工考试试题及答案
- 托班服务协议书标准版5篇
- 湖北省咸宁市华师元一赤壁学校2025-2026学年高一上学期9月月考地理试题(原卷版)
- 工程结算审核服务方案技术标
- 公司驾驶业务外包管理办法
- 店中店合作协议
- AKAIEWI5000电吹管快速入门(中文说明书)
- 炉外精炼-RH读本
- 部编版语文小学五年级下册第一单元集体备课(教材解读)
- 《数学文化》课程教学大纲
- 动物类折纸eric马头实拍
- 模具设计与制造授课全张课件
- 心血管内科常见疾病诊疗常规
- 深基坑边坡稳定性计算书
评论
0/150
提交评论