




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 明白嵌入式系统设计的三个阶段:分析、测试、实现2、 了解目前典型的嵌入式实时系统实时操作系统(rtos:realtime operation system)实时操作系统是一段在嵌入式系统启动后首先执行的背景程序,用户的应用程序是运行于rots之上的各个任务,rits根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在rtos支持的系统中,每个任务均有一个优先级,rtos根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。常见的嵌入式操作系统 嵌入式Linux,Win CE,VxWorks,uC/OS-113、 明白RISC指令系统的相关知识,以及基于RISC架构的ARM微处理器的一般特点RISC:精简指令集(Reduced Instruction Set Computer)其目标是设计出在高时钟频率下单周期执行,简单而有效地指令集。只实现使用频率最高的指令;确保快速高效的执行每一条指令;处理器硬件结构设计更简单。RISC基本设计思想:减小CPI: CPUtime=Instr_Count * CPI * Clock_cycle;精简指令集:保留最基本的,去掉复杂、使用频度不高的指令;采用Load/Store结构,有助于减少指令格式,统一存储器访问方式;采用硬接线控制代替微程序控制。ARM内核采用RISC体系结构,因此具有RISC的结构特点:具有大量的通用存储器;独特的装载/保存结构;简单的寻址模式;统一和固定长度的指令格式。此外还有以下特点:每条数据处理指令可同时包含算术逻辑单元的运算和移位处理,实现ALU和移位器的最大利用;使用地址自增和自减的寻址方式优化程序循环;装载/保存指令对数据的批量传输,实现最大数据吞吐量;大多数指令的条件执行;实现最快速的代码执行。四、ARM处理器支持的工作运行模式,及各种运行模式的意义(处理器模式、说明、备注) 用户 (usr)正常程序执行模式、不能直接切换到其它模式;系统 (sys)运行操作系统的特权任务、与用户模式类似,但具有可以直接切换到其它模式等特权;快中断(fiq)支持高速数据传输及通道处理、FIQ异常响应时进入此模式; 中断 (irq)用于通用中断处理、IRQ异常响应时进入此模式; 管理 (svc)操作系统保护模式、系统复位和软件中断响应时进入此模式;中止 (abt)用于支持虚拟内存和/或存储器保护、在ARM7TDMI没有大用处;未定义 (und)支持硬件协处理器的软件仿真、未定义指令异常响应时进入此模式。五、微处器的流水线技术、基本寻址方式。了解其它的微处理器的特点(XScale微处理器、StrongARM微处理器、SecurCore微处理器)微处器的流水线技术的基本思想是将一个重复的时序分解成若干个子过程,而每一个子过程都可有效地在其专用功能段上与其他子过程同时执行。流水线要求可分成若干相互联系的子过程,实现子过程的功能所需要时间尽可能相等。按完成的功能分类可分为单功能流水线和多功能流水线,按统一时间内各段之间的连接方式分类可分为静态流水线和动态流水线,按数据表示分类可分为标量流水线和向量流水线处理器。主要指标:吞吐率(单位时间里执行的指令数),建立时间(从流水线开始工作到达到最大吞吐率所用的时间)ARM9TDMI的流水线分3级,分别为:取指:从寄存器装载一条指令;译码:识别将要被执行的指令;执行:处理指令并将结果写回寄存器三级流水线结构的指令执行顺序 在第1个周期,PC指向指令1,此时指令1进入三级流水线的取指阶段。在第2个周期,PC指向指令2,此时指令1进入三级流水线的译码阶段,同时取出指令2。在第3个周期,PC指向指令3,此时指令1进入三级流水线的执行阶段,指令2进入译码阶段,取出指令3。在第4个周期,指令1执行完成,指令2和指令3流水线推进一级,同时开始指令4的取指处理。ARM9的五级流水线指令分解(1)IF取指(insturction fetch),从指令高速缓存(I-cache)获取下一条指令(2)RD读取寄存器(read register),读取该指令的源寄存器域指定的CPU寄存器的内容。(3)ALU算术逻辑单元(arithmetic/logic unit)在一个时钟周期内完成算术或者逻辑操作(浮点运算和整数乘除无法在一个时钟周期内完成,对其处理有所不同,后面会讲到这一点)。(4)MEM访问内存(memory),该阶段指令可以读写数据高速缓存(D-cache)中的内存变量。平均而言,每四条指令中就有三条指令在该阶段没有任何操作,但是为每条指令都分配了这一阶段以确保不会出现两条指令同时需要访问数据高速缓存的情形(5)WB写回寄存器(write back),将操作结果值写道寄存器堆中。XScale IntelXscale微控制器则提供全性能、高性价比、低功耗的解决方案,支持16位Thumb指令并集成数字信号处理指令。主要应用于手提式通讯和消费电子类设备。StrongARM ARMv4版体系结构是目前应用最广的ARM体系结构,在v3版上进一步扩充,指令集中增加了以下功能:增加了系统模式;增加了16位Thumb指令集;完善了软件中断SWI指令的功能;不再支持26位寻址模式SecurCore专为安全需要而设计,提供了完善的32位RISC技术的安全解决方案。灵活的保护单元,以确保操作系统和应用数据的安全。采用软内核技术,防止外部对其进行扫描探测。可集成用户自己的安全特性和其他协处理器。主要应用:对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。6、 嵌入式系统的存储器系统基础知识1、 存储器的层次结构计算机系统的存储器被组织成一个6个层次的金字塔形的层次结构,如图4.1.1所示,位于整个层次结构的最顶部S0层为CPU内部寄存器S1层为芯片内部的高速缓存(cache)内存S2层为芯片外的高速缓存(SRAM、DRAM、DDRAM)S3层为主存储器(Flash、PROM、EPROM、EEPROM)S4层为外部存储器(磁盘、光盘、CF、SD卡)S5层为远程二级存储(分布式文件系统、Web服务器)在这种存储器分层结构中,上面一层的存储器作为下一层存储器的高速缓存。CPU寄存器就是cache的高速缓存,寄存器保存来自cache的字;cache又是内存层的高速缓存,从内存中提取数据送给CPU进行处理,并将CPU的处理结果返回到内存中;内存又是主存储器的高速缓存,它将经常用到的数据从Flash等主存储器中提取出来,放到内存中,从而加快了CPU的运行效率。嵌入式系统的主存储器容量是有限的,磁盘、光盘或CF、SD卡等外部存储器用来保存大信息量的数据。在某些带有分布式文件系统的嵌入式网络系统中,外部存储器就作为其他系统中被存储数据的高速缓存。2、 高速缓存在主存储器和CPU之间采用高速缓冲存储器(cache)被广泛用来提高存储器系统的性能,许多微处理器体系结构都把它作为其定义的一部分。cache能够减少内存平均访问时间。Cache可以分为统一cache和独立的数据程序cache。在一个存储系统中,指令预取时和数据读写时使用同一个cache,这时称系统使用统一的cache。如果在一个存储系统中,指令预取时使用的一个cache,数据读写时使用的另一个cache,各自是独立的,这时称系统使用了独立的cache,用于指令预取的cache称为指令cache,用于数据读写的cache称为数据cache。当CPU更新了cache的内容时,要将结果写回到主存中,可以采用写通法(write-through)和写回法(write-back)。写通法是指CPU在执行写操作时,必须把数据同时写入cache和主存。采用写通法进行数据更新的cache称为写通cache。写回法是指CPU在执行写操作时,被写的数据只写入cache不写入主存。仅当需要替换时,才把已经修改的cache块写回到主存中。采用写回法进行数据更新的cache称为写回cache。当进行数据写操作时,可以将cache分为读操作分配cache和写操作分配cache两类。对于读操作分配cache,当进行数据写操作时,如果cache未命中,只是简单地将数据写入主存中。主要在数据读取时,才进行cache内容预取。对于写操作分配cache,当进行数据写操作时,如果cache未命中,cache系统将会进行cache内容预取,从主存中将相应的块读取到cache中相应的位置,并执行写操作,把数据写入到cache中。对于写通类型的cache,数据将会同时被写入到主存中,对于写回类型的cache数据将在合适的时候写回到主存中。3、 存储管理单元MMUMMU(Memory Manage Unit, 存储管理单元)在CPU和物理内存之间进行地址转换,将地址从逻辑空间映射到物理空间,这个转换过程一般称为内存映射。MMU主要完成以下工作:(1)虚拟存储空间到物理存储空间的映射。采用了页式虚拟存储管理,它把虚拟地址空间分成一个个固定大小的块,每一块称为一页,把物理内存的地址空间也分成同样大小的页。MMU实现的就是从虚拟地址到物理地址的转换。(2)存储器访问权限的控制。(3)设置虚拟存储空间的缓冲的特性。嵌入式系统中常常采用页式存储管理。页表是存储在内存中的一个表,页表用来管理这些页。页表的每一行对应于虚拟存储空间的一个页,该行包含了该虚拟内存页对应的物理内存页的地址、该页的访问权限和该页的缓冲特性等。从虚拟地址到物理地址的变换过程就是查询页表的过程。例如在ARM嵌入式系统中,使用系统控制协处理器CP15的寄存器C2来保存页表的基地址。基于程序在执行过程中具有局部性的原理,在一段时间内,对页表的访问只是局限在少数几个单元。根据这一特点,增加了一个小容量(通常为816字)、高速度(访问速度和CPU中通用寄存器相当)的存储部件来存放当前访问需要的地址变换条目,这个存储部件称为地址转换后备缓冲器(Translation Look aside Buffer,TLB)。当CPU访问内存时,首先在TLB中查找需要的地址变换条目,如果该条目不存在,CPU在从位于内存中的页表中查询,并把相应的结果添加到TLB中,更新它的内容。当ARM处理器请求存储访问时,首先在TLB中查找虚拟地址。如果系统中数据TLB和指令TLB是分开的,在取指令时,从指令TLB查找相应的虚拟地址,对于内存访问操作,从数据TLB中查找相应的虚拟地址。嵌入式系统中虚拟存储空间到物理存储空间的映射以内存块为单位来进行。即虚拟存储空间中一块连续的存储空间被映射到物理存储空间中同样大小的一块连续存储空间。在页表和TLB中,每一个地址变换条目实际上记录了一个虚拟存储空间的内存块的基地址与物理存储空间相应的一个内存块的基地址的对应关系。根据内存块大小,可以有多种地址变换。嵌入式系统支持的内存块大小有以下几种:段(section)大小为1MB的内存块;大页(Large Pages)大小为64KB的内存块;小页(Small Pages)大小为4KB的内存块;极小页(Tiny Pages)大小为1KB的内存块。极小页只能以1KB大小为单位不能再细分,而大页和小页有些情况下可以在进一步的划分,大页可以分成大小为16KB的子页,小页可以分成大小为1KB的子页。MMU中的域指的是一些段、大页或者小页的集合。每个域的访问控制特性都是由芯片内部的寄存器中的相应控制位来控制的。例如在ARM嵌入式系统中,每个域的访问控制特性都是由CP15中的寄存器C3中的两位来控制的。 MMU中的快速上下文切换技术(Fast Context Switch Extension, FCSE)通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性能。在嵌入式系统中,I/O操作通常被映射成存储器操作,即输入输出是通过存储器映射的可寻址外围寄存器和中断输入的组合来实现的。I/O的输出操作可通过存储器写入操作实现;I/O的输入操作可通过存储器读取操作实现。这些存储器映射的I/O空间不满足cache所要求的特性,不能使用cache技术,一些嵌入式系统使用存储器直接访问(DMA)实现快速存储。存储器是嵌入式系统硬件的重要组成部分,用来存放嵌入式系统工作时所用的程序和数据。嵌入式系统的存储器由片内和片外两部分组成。4、 嵌入式系统存储分类1按在系统中的地位分类在微机系统中,存储器可分为主存储器(Main Memory简称内存或主存)和辅助存储器(Auxiliary Memory,Secondary Memory,简称辅存或外存)。内存是计算机主机的一个组成部分,一般都用快速存储器件来构成,内存的存取速度很快,但内存空间的大小受到地址总线位数的限制。内存通常用来容纳当前正在使用的或要经常使用的程序和数据,CPU可以直接对内存进行访问。系统软件中如引导程序、监控程序或者操作系统中的基本输入输出部分BIOS都是必须常驻内存。更多的系统软件和全部应用软件则在用到时由外存传送到内存。外存也是用来存储各种信息的,存放的是相对来说不经常使用的程序和数据,其特点是容量大。外存总是和某个外部设备相关的,常见的外存有软盘、硬盘、U盘、光盘等。CPU要使用外存的这些信息时,必须通过专门的设备将信息先传送到内存中。2按存储介质分类根据存储介质的材料及器件的不同,可分为磁存储器(Magnetic Memory),半导体存储器、光存储器(Optical Memory)及激光光盘存储器(Laser Optical Disk)。3按信息存取方式分类存储器按存储信息的功能,分为随机存取存储器(Random Access Memory,RAM)和只读存储器(Read Only Memory,ROM)。随机存取存储器是一种在机器运行期间可读、可写的存储器,又称读写存储器。随机存储器按信息存储的方式,可分为静态RAM(Static RAM,SRAM),动态RAM(Dynamic RAM,DRAM)及准静态RAM(Pseudostatic RAM,简称PSRAM)。在机器运行期间只能读出信息,不能随时写入信息的存储器称为只读存储器。只读存储器按功能可分为掩模式(ROM)、可编程只读存储器(Programmable ROM,PROM)和可改写的只读存储器(Erasable Programmable ROM,EPROM)。5、 数据的大小端存储格式大多数计算机使用8位的数据块做为最小的可寻址的存储器单位,称为一个字节。存储器的每一个字节都用一个唯一的地址来标识。对于一个多字节类型的数据,在存储器中有两种存放方法。一种是低字节数据存放在内存低地址处,高字节数据存放在内存高地址处,称为小端字节顺序存储法;另一种是高字节数据存放在低地址处,低字节数据存放在高地址处,称为大端字节顺序存储法。七、三星S3C2410处理器知识:1、结构与特点1)体系结构 采用ARM920T CPU内核,具有16/32位RISC体系结构和强大的指令集,为手持设备和通用嵌入式应用提供片上集成系统解决方案; 增强的ARM体系结构MMU,支持WinCE、EPOC 32和Linux; 使用指令Cache、数据Cache、写缓冲器和物理地址TAG RAM减少主存储器带宽和反应时间对性能的影响; ARM920T CPU内核支持ARM调试体系结构; 内部采用先进的微控制器总线体系结构(AMBA)(AMBA2.0,AHB/APB)。2)系统管理器 支持小大端方式。 地址空间:每bank 128 MB(byte)(总共1GB)。 每个bank支持可编程的8/16/32位数据总线宽度。 bank0bank6都采用固定的bank起始地址。 bank7具有可编程的bank起始地址和大小。 8个存储器bank: 一6个用于ROM、SRAM及其他; 一2个用于ROM、SRAM和同步DRAM。 所有的存储器bank都具有可编程的访问周期。 支持使用外部等待信号来填充总线周期。 支持掉电时的SDRAM自刷新模式。 支持各种类型的ROM启动(booting),包括NOR/NAND Flash和EEPROM等。3)NAND Flash Boot Loader(启动装载) 支持从NAND Flash存储器的启动。 采用4 KB内部缓冲器用于启动引导。 支持启动之后NAND存储器仍然作为外部存储器使用。4)Cache存储器 I-Cache(16 KB)和D-Cache(16 KB)为64路组相联Cache。 每行8字长度,其中每行带有一个有效位和两个脏位(dirty bits)。 采用伪随机数或循环替换算法。 采用写直达(Write-through)或写回(Write-back)Cache操作来更新主存储器。 写缓冲器可以保存16个字的数据值和4个地址值。5)时钟和电源管理 片上MPLL和UPLL: 一UPLL产生用于USB主机设备操作的时钟; 一MPLL产生操作MCU的时钟,时钟频率最高可达266 MHz(2.0V内核电压)。 通过软件可以有选择地为每个功能模块提供时钟。 电源模式包括正常、慢速、空闲和掉电模式: 一正常模式为正常运行模式; 一慢速模式为不加PLL的低时钟频率模式; 一空闲模式只停止CPU的时钟; 一掉电模式切断所有外设和内核的电源。 可以通过EINT15:0或RTC报警中断从掉电模式中唤醒处理器。6)中断控制器 55个中断源(1个看门狗定时器、5个定时器、9个UART、24个外部中断、4个DMA、2个RTC、2个ADC、1个I2C、2个SPI、1个SDI、2个USB、1个LCD和1个电池故障); 支持电平边沿触发模式的外部中断源; 可编程的电平边沿触发极性; 为紧急中断请求提供快速中断服务(FIQ)支持。7)具有脉冲宽度调制(PWM)的定时器 具有PWM功能的4通道16位定时器,可基于DMA或中断操作的1通道16位内部定时器; 可编程的占空比周期、频率和极性; 能产生死区; 支持外部时钟源。8)RTC(实时时钟) 完整的时钟特性:秒、分、时、日期、星期、月和年; 工作频率32.768 kHz; 具有报警中断; 具有时钟滴答中断。9)通用I/O口 24个外部中断口; 多路复用的I/O口。10)UART 3通道UART,可以基于DMA模式或中断模式操作; 支持5位、6位、7位或者8位串行数据发送接收(Tx/Rx); 支持外部时钟作为UART的运行时钟(UEXTCLK); 波特率可编程; 支持IrDA 1.0; 支持回环(Loopback)测试模式; 每个通道内部都具有16字节的发送FIFO和16字节的接收FIFO 。11)DMA控制器 4通道的DMA控制器; 支持存储器到存储器、I/O到存储器、存储器到I/O和I/O到I/O的传送; 采用突发传送模式提高传送速率。12)AD转换和触摸屏接口 8通道多路复用ADC; 转换速率最大为500 KSPS(Kilo Samples Per Second,每秒采样千点),10位分辨率。13)LCD控制器STN LCD显示特性 支持3种类型的STN LCD显示屏:4位双扫描、4位单扫描和8位单扫描显示类型; 对于STN LCD支持单色模式、4级灰度、16级灰度、256彩色和4 096彩色; 支持多种屏幕尺寸,典型的屏幕尺寸有:640480,320240,160160; 最大虚拟屏幕大小是4 MB; 在256彩色模式下支持的最大虚拟屏幕尺寸是:4 0961 024,2 0482 048,1 0244 0960或者其它尺寸。14.) TFT(Thin Film Transistor,薄膜场效应晶体管)彩色显示特性 彩色TFT支持1、2、4或8bpp(bit per pixel,每像素所占位数)调色显示; 支持16bpp无调色真彩显示; 在24bpp模式下支持最大16M彩色TFT; 支持多种屏幕尺寸,典型的屏幕尺寸有:640480,320320,160160或者其它尺寸; 最大虚拟屏大小是4 MB; 在64彩色模式下支持的最大虚拟屏幕尺寸是:2 0481 024或者其它尺寸。15)看门狗定时器 16位看门狗定时器; 定时器溢出时产生中断请求或系统复位。16)I2C总线接口 1通道多主机I2C总线; 串行、8位、双向数据传送,在标准模式下数据传送速率可达100kb/s,在快速模式下可达400kb/s。17)I2S总线接口 1通道音频I2S总线接口,可基于DMA方式操作; 串行,每通道8/16位数据传输;串行,每通道8/16位数据传输; 发送和接收(Tx/Rx)具备128字节FIFO(64字节发送FIFO64字节接收FIFO); 支持I2S格式和MSB-justified数据格式。18)USB主设备 2个USB主设接口; 遵从OHCI Revl.0标准; 兼容USB Verl.1标准。19)USB从设备 1个USB从设接口; 具备5个USB设备端口; 兼容USB Verl.1标准。20)SD主机接口 兼容SD存储卡协议1.0版; 兼容SDIO卡协议1.0版发送和接收采用字节FIFO; 基于DMA或中断模式操作; 兼容MMC卡协议2.11版。21)SPI接口 兼容2通道SPI协议2.11版; 发送和接收采用2字节的移位寄存器; 基于DMA或中断模式操作。22)工作电压 内核电压:1.8V,最高工作频率200 MHz(S3C2410A-20);2.0 V,最高工作频率266 MHz(S3C2410A-26)。 存储器和I/O电压:3.3 V。23)封装 采用272-FBGA封装。24 )采取流水线技术2、 复位后的存储器映射S3C2410A复位后,存储器的映射情况如图3.2.1所示,bank6和bank7对应不同大小存储器不使用NAND Flash作为启动ROM 使用NAND Flash作为启动ROM注意:SROM表示是ROM或SRAM类型的存储器;SFR指特殊功能寄存器。图3.2.1 S3C2410A复位后的存储器映射3、 I/O口配置及各种寄存器的定义 1)S3C2410A的IO口配置S3C2410A共有117个多功能复用输入输出端口(I/O口),分为端口A端口H 8组,其中8组I/O口按照其位数的不同又可分为:端口A(GPA)是1个23位输出口;端口B(GPB)和端口H(GPH)是2个11位I/O口;端口C(GPC)、端口D(GPD)、端口E(GPE)和端口G(GPG)是4个16位I/O口;端口F(GPF)是1个8位I/O口。为了满足不同系统设计的需要,每个I/O口可以很容易地通过软件对进行配置。每个引脚的功能必须在启动主程序之前进行定义。如果一个引脚没有使用复用功能,那么它可以配置为I/O口。注意:端口 A除了作为功能口外,只能够作为输出口使用。S3C2410A的I/O口配置情况如表3.4.13.4.7所列 2)S3C2410A的IO口寄存器在S3C2410A中,大多数的引脚端都是复用的,所以对于每一个引脚端都需要定义其功能。为了使用I/O口,首先需要定义引脚的功能。每个引脚端的功能通过端口控制寄存器(GPnCON)来定义(配置)。与配置I/O口相关的寄存器包括:端口控制寄存器(GPACONGPHCON)、端口数据寄存器(GPADATGPHDAT)、端口上拉寄存器(GPBUPGPHUP)、杂项控制寄存器以及外部中断控制寄存器(EXTINTN)等。在掉电模式,如果GPF0GPF7和GPG0GPG7用作为唤醒信号,那么这些端口必须配置为中断模式。如果端口配置为输出口,数据可以写入到端口数据寄存器(PnDAT)的相应位中;如果将端口配置为输入口,则可以从端口数据寄存器(PnDAT)的相应位中读出数据。端口上拉寄存器用于控制每组端口的上拉电阻为使能/不使能。如果相应位设置为0,则表示该引脚的上拉电阻使能;为1,则表示该引脚的上拉电阻不使能。如果使能了端口上拉寄存器,则不论引脚配置为哪种功能(输入、输出、DATAn、EINTn等),上拉电阻都会起作用。杂项控制寄存器用于控制数据端口的上拉电阻、高阻状态、USB Pad和CLKOUT的选择。24个外部中断通过不同的信号方式被请求。EXTINTn寄存器用于配置这些信号对于外部中断请求采用的是低电平触发、高电平触发、下降沿触发、上升沿触发还是双边沿触发。有8个外部中断有数字滤波器。仅16 EINT引脚端(EINT15:0)用来作为唤醒源。所有GPIO寄存器的值在掉电模式下都会被保存。外部中断屏蔽寄存器EINTMASK不能阻止从掉电模式唤醒,但是如果EINTMASK正在屏蔽的是EINT15:4中的某位,则可以实现唤醒,不过寄存器SRCPND的位EINT4 和EINT8 23在刚刚唤醒后不能设置为1。4、 中断控制与编程1)中断处理在ARM系统中,支持复位、未定义指令、软中断、预取中止、数据中止、IRQ和FIQ 7种异常,每种异常对应于不同的处理器模式,有对应的异常向量(固定的存储器地址)。在ARM系统中,一旦有中断发生,正在执行的程序都会停下来,通常都会执行如下的中断步骤:(1)保存现场。保存当前的PC值到R14,保存当前的程序运行状态到SPSR。(2)模式切换。根据发生的中断类型,进入IRQ模式或FIQ模式。(3)获取中断服务子程序地址。PC指针跳到异常向量表所保存的IRQ或FIQ地址处,IRQ或FIQ的异常向量地址处一般保存的是中断服务子程序的地址,PC指针跳入到中断服务子程序,进行中断处理。 (4) 多个中断请求处理。在ARM系统中,可以存在多个中断请求源,比如串口中断、AD中断、外部中断、定时器中断及DMA中断等,所以可能出现多个中断源同时请求中断的情况。为了更好地区分各个中断源,通常为这些中断定义不同的优先级别,并为每一个中断设置一个中断标志位。当发生中断时,通过判断中断优先级以及访问中断标志位的状态来识别哪一个中断发生了,进而调用相应的函数进行中断处理。(5)中断返回,恢复现场。当完成中断服务子程序后,将SPSR中保存的程序运行状态恢复到CPSR中,R14中保存的被中断程序的地址恢复到PC中,继续执行被中断的程序。 2)S3C2410A的中断控制器S3C2410A采用ARM920T CPU内核,ARM920T CPU的中断包含有IRQ和FIQ。IRQ是普通中断,FIQ是快速中断,FIQ的优先级高于IRQ。FIQ中断通常在进行大批量的复制、数据传输等工作时使用。S3C2410A通过对程序状态寄存器(PSR)中的F位和I位进行设置控制CPU的中断响应。如果设置PSR的F位为1,则CPU不会响应来自中断控制器的FIQ中断;如果设置PSR的I位为1,则CPU不会响应来自中断控制器的IRQ中断。如果设置PSR的F位或I位设置为0,同时将中断屏蔽寄存器(INTMSK)中的相对应位设置为0,CPU响应来自中断控制器的IRQ或FIQ中断请求。中断屏蔽寄存器用于指示中断是否禁止。如果设置中断屏蔽寄存器中的相对应屏蔽位为1,表示相对应的中断禁止;如果设置为0,表示中断发生时将正常执行中断服务。如果发生中断时相对应的屏蔽位正好为1,则中断挂起寄存器中的相对中断源挂起位将置1。S3C2410A有SRCPND(中断源挂起寄存器)和INTPND(中断挂起寄存器)两个中断挂起寄存器。SRCPND和INTPND两个挂起寄存器用于指示某个中断请求是否处于挂起状态。当多个中断源请求中断服务时,SRCPND寄存器中的相应位设置为1,仲裁过程结束后INTPND寄存器中只有1位被自动设置为1。S3C2410A中的中断控制器能够接收来自56个中断源的请求,这些中断源来自DMA控制器、UART、I2C及外部中断引脚等。从表3.5.1可以看出,S3C2410A共有32个中断请求信号。S3C2410A采用了中断共享技术,INT_UARTO、INT_UART1、INT_UART2、EINT8_23和EINT4_7为多个中断源共享使用的中断请求信号。中断请求的优先级逻辑是由7个仲裁器组成的,其中包括6个一级仲裁器和1个二级仲裁器,如图3.5.1所示。每个仲裁器是否使能由寄存器PRIORITY6:0决定。每个仲裁器可以处理46个中断源,从中选出优先级最高的。优先级顺序由寄存器PRIORITY20:7的相应位决定。 S3C2410A的中断编程实例本小节介绍一个通过定时器1控制一个led灯每1秒钟改变一次状态,需要完成的主要工作如下。(1)对定时器1初始化,并设定定时器的中断时间为1,具体代码参见Timer1_init( )函数。void Timerl_init(void)rGPBCON = rGPBCON&0xfffffffc|0x00000001; /用哪个口的哪一位或几位去做这样的一个工作。 rGPBDAT= rGPBDAT |0x001;rTCFG0 = 255;rTCFG1 = 04;rTCNTB1 = 48828; /在pclk = 50MHz下,1s的记数值rTCNTB1 = 50000000/4/256=48828;rTCMPB1 0x00;rTCON (1+11) | (19) | (08);/禁用定时器1,手动加载rTCON (1+11) | (09) | (18);/启动定时器1,自动装载(2)为了使CPU响应中断,在中断服务子程序执行之前,必须打开ARM920T的CPSR中的I位,以及相应的中断屏蔽寄存器中的位。打开相应的中断屏蔽寄存器中的位,是在TimerlINT Init()函数中实现的,具体代码如下。void TimerlINT_Init(void) /定时器接口使能if(rINTPNDBIT_TIMERI) rSRCPND | = BIT_TIMER1;pISR_TMER1=(int)Timerl_ISR; /写入定时器1中断服务子程序的入口地址rINTMSK (BIT_TIMERI); /开中断;(3)等待定时器中断,通过一个死循环,如“while(1);”实现等待过程。(4)根据设置的定时时间,产生定时器中断。中断发生后,首先进行现场保护,然后转人中断的入口代码处执行。该部分代码通常使用汇编语言编写。在执行中断服务程序之前,要确保HandleIRQ地址处保存中断分发程序IsrIRQ的入口地址,代码如下。ldr r0, HandleIRQldr r1, IsrIRQstr r1,r0接下来将执行IsrIRQ中断分发程序,具体代码如下。IsrIRQsub sp,sp,#4; /为保存PC预留堆栈空间stmfd sp!,r8r9ldr r9, INTOFFSETldr r9,r9; /加载INTOFFSET寄存器值到r9ldr r8,HandleEINT0; /加载中断向量表的基地址到r8add r8,r8,r9,lsl #2; /获得中断向量ldr r8, r8; /加载中断服务程序的入口地址到r8str r8,sp,#8; /保存sp,将其作为新的pc值ldmfd sp!,(r8-r9,pc; /跳转到新的pc处执行,即跳转到中断服务子程序执行(5)执行中断服务子程序,该子程序实现led灯每一秒钟改变一次状态。看到LEDl灯闪烁一次,则说明定时器发生了一次中断。具体实现见函数Timerl_ISR()。int f ;void _ _irq Timer1_ISR(void)If (f= = 0) rGPBDAT = rGPBDAT | 0x001;f=1;else if (f= = 1) rGPBDAT= rGPBDAT &0x0;f=0;rSRCPND |= BIT_TIMER1;rINTPND |= BIT_TIMER1;(6)从中断返回,恢复现场,跳转到被中断的主程序继续执行,等待下一次中断的到来。如果使用两个LED控制的情况下,可以将代码进行适当修改。rGPGCON rGPGCON0xfff0ffff | 0x00050000;/配置第8、第9位为输出引脚 rGPGDAT rGPGDAT0xeff | 0x200; /第8位输出为低电平第9位输出高电平rGPGDATrGPGDATOxdff | 0x100; /第8位输出为高电平第9位输出低电平5、 掌握算法基础,能利用处理器自身特点设计高效算法程序8、 A/D转换器工作原理及评价指标,计数器的工作原理A/D(数/模)转换的方法和原理:A/D转换器(数/模转换器)完成电模拟量到数字量的转换。实现A/D转换的方法有很多,常用的方法有计数法、双积分法和逐次逼近法计数式A/D转换器的原理:计数式A/D转换器结构。其中,vi是模拟输入电压,vo是D/A转换器的输出电压,c是控制计数端,当c=1时,计数器开始计数,c=0,则停止计数。D0d7是数字量输出,数字输出量同时驱动一个D/A转换器。A/D转换器的主要指标:1)分辨率2)精度(绝对精度、相对精度、转换时间、量程)九、嵌入式系统的任务管理知识1、进程进程(process)是在描述多道系统中并发活动过程引入的一个概念。进程和程序是两个既有联系又有区别的概念,两者不能混为一谈。例如:一个程序主要由代码和数据两部分内容组成。而进程是正在执行的程序,它是由程序和该程序的运行上下文两部分内容组成。程序是静态的,而进程是一个动态的,变化的。进程和程序之间并不是一一对应的。一个进程在运行的时候可以启动一个或多个程序,同一个程序也可能由多个进程同时执行。程序可以以文件的形式存放在硬盘或光盘上,作为一种软件资源长期保存。而进程则是一次执行过程,它是暂时的,是动态地产生和终止的。 一个进程通常包含有以下几个方面的内容: 相应的程序:进程是一个正在运行的程序,有相应程序的代码和数据。 CPU上下文:程序在运行时,CPU中含有PC(Program Counter,程序计数器)、PSW(Program Status Word, 程序状态字)、通用寄存器、段寄存器、栈指针寄存器等各种寄存器的当前值内容,例如:在PC中记录的将要取出的指令的地址,在PSW中用于记录处理器的运行状态信息,通用寄存器存放的数据或地址;段寄存器存放的程序中各个段的地址;栈指针寄存器记录的栈顶的当前位置。 一组系统资源:包括操作系统用来管理进程的数据结构、进程的内存地址空间、进程正在使用的文件等。 总而言之,进程包含了正在运行的一个程序的所有状态信息。进程具有动态性,进程是一个正在运行的程序,程序的运行状态都在不断地变化,如PC寄存器的值、堆和栈的内容、通用寄存器存放数据和地址等。进程具有独立性,一个进程是一个独立的实体,占有计算机的系统资源,每个进程都有自己的运行上下文和内部状态,在它运行的时候独立于其他的进程。进程具有并发性,在系统中同时有多个进程存在,它们相互独立地运行。2、 线程线程(thread)是一个比进程更小的能独立运行的基本单位。所谓的线程,就是进程当中的一条执行流程。从资源组合的角度来看,进程把一组相关的资源组合起来,构成了一个资源平台(资源环境),其中包括运行上下文、内存地址空间、打开的文件等,在图8.3.2中用深色的方框来表示。从程序运行的角度来看,进程就是一个正在运行的程序,在图8.3.2中用一条带有箭头的线段来表示。从图8.3.2可见,可以把进程看成是程序代码在这个资源平台上的一条执行流程(线程),也就是可以认为进程等于线程加上资源平台。如图8.3.2所示,在一个进程当中,或者说在一个资源平台上,可以同时存在多个线程。可以用线程来作为CPU的基本调度单位,使得各个线程之间可以并发执行。对于同一个进程当中的各个线程来说,运行在相同的资源平台上,可以共享该进程的大部分资源(如内存地3、 任务调度算法1)任务调度概述在多道程序操作系统中,当有两个或多个任务同时处于就绪状态时,而系统中只有一个CPU而且这个CPU己经空闲下来了,就会出现多个任务同时去竞争这个CPU的情况。通常利用调度器(scheduler)选择就绪队列中的那些任务中的一个去运行,调度器是CPU这个资源的管理者。调度器在决策过程中所采用的算法称为调度算法。 一般来说,在一个新的任务被创建时、在一个任务运行结束时、在一个任务由于I/O操作、信号量或其他原因被阻塞时、在一个I/O中断发生时、在一个时钟中断发生时这五种调度时机都可能会发生任务的调度。任务调度存在可抢占调度(preemptive)和不可抢占调度(nonpreemptive)两种调度方式。(1)在可抢占调度方式,当一个任务正在运行的时候,出现调度时机当中的五种情况之一,都有可能会发生调度。调度程序可以去打断它,并安排另外的任务去运行。实时操作系统大都采用可抢占的调度方式。(2)在不可抢占调度方式,一个任务长时间地占用着CPU系统也不会强制它中止。当出现新任务创建、任务运行结束及任务被阻塞的调度时机时,有可能会发生调度。而对于发生的各种中断,并不会去调用调度程序,而是在中断处理完成后,又会回到刚才被打断的任务中继续执行。在嵌入式操作系统中,存在着许多的调度算法,每一种算法都有各自的优点和缺点。可以根据响应时间、周转时间、调度开销、公平性、均衡性、吞吐量等指标来评价一个调度算法的好坏。其中: 调度器为一个就绪任务进行上下文切换时所需的时间,以及任务在就绪队列中的等待时间称为响应时间( response time )。 一个任务从提交到完成所经历的时间称为周转时间(turnaround time )。 调度器在做出调度决策时所需要的时间和空间开销称为调度开销(overhead)。 公平性(fairness )是指大致相当的两个任务所得到的CPU时间也应该是大致相同的。另外,要防止饥饿(starvation)情况出现,即某一个任务始终得不到处理器去运行。 均衡性(balance)是指要尽可能使整个系统的各个部分(CPU,I/O)都忙起来,提高系统资源的使用效率。 单位时间内完成的任务数量称为吞吐量(throughput )。对于一个调度算法来说,这些指标中一些是共存的,而另一些是相互牵制的,这些指标不可能全部都实现,而是需要根据系统的要求,综合权衡和折中选择。 2)先来先服务算法(First Come First Served,FCFS)FCFS(First Come First Served,先来先服务算法)是一种最简单的调度算法。 FCFS的基本思想就是按照任务到达的先后次序来进行调度,它是一种不可抢占的调度方式。FCFS也叫做FIFO(First In First Out,先进先出算法)。FCFS的最大优点就是简单,易于理解也易于实现。缺点是一批任务的平均周转时间取决于各个任务到达的顺序,如果短任务位于长任务之后,那么将增大平均周转时间3)短作业优先算法(Shortest Job First,SJF)在SJF(Shortest Job First,短作业优先算法)中,在各个任务在开始执行前,事先预计好各任务的执行时间,调度算法根据这些预计时间,安排执行时间较短的任务优先执行。可以证明,对于一批同时到达的任务,采用SJF算法将得到一个最小的平均周转时间。SJF算法有不可抢占方式和可抢占方式两种实现方案。在不可抢占方式,只有任务运行完毕或者是被阻塞时,才会让出CPU进行新的调度。而在可抢占方式,当前任务正在运行的时候,来了一个比它执行时间更短的任务,而且它的运行时间要小于当前正在运行的任务的剩余时间,那么这个新任务就会抢占CPU去运行。这种方法也称为SRTF(Shortest Remaining Time First,最短剩余时间优先算法)4)时间片轮转算法(Round Robin,RR)RR算法如图8.3.6所示。在RR(Round Robin,时间片轮转算法)中,把系统当中的所有就绪任务按照先来先服务的原则进行排列,然后,在每次调度的时候,处理器分派给队列当中的第一个任务一小段CPU执行时间(time slice,时间片)。当这个时间片结束的时候,如果任务还没有执行完的话,将会发生时钟中断,调度器将会暂停当前任务的执行,并把这个任务送到就绪队列的末尾,然后再执行当前的队列的第一个任务。如果一个任务在分配给它的时间片结束前就已经运行结束了或者是被阻塞了,那么它就会立即让出CPU给其他的任务。采用RR算法,各个就绪任务平均地分配CPU的使用时间,例如有n个就绪任务,那么每个任务将得到1/n的CPU时间。采用RR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京工具式马道施工方案
- 世界肾脏日活动策划方案
- 残疾人社区营销活动方案
- 广东文旅水景施工方案
- 药品安全培训会议药监局课件
- 景观方案阶段设计合同5篇
- 《2024 秋季学期开学第一天学生安全方案》
- 图书馆管理系统系统分析
- 建筑单位大门建设方案设计
- 中国农业现代化发展策略
- 2025年军休服务管理机构招聘面试中常见陷阱问题解析与应对方法
- 信息系统维护与升级管理模板
- 2025年南京市事业单位招聘考试卫生类临床医学专业知识试题
- 图解2025年9月10日第41个教师节全文
- 低空旅游项目基础设施建设与可行性研究报告
- 2025至2030年中国晶质石墨深加工行业市场调查研究及投资战略咨询报告
- 船舶电气小知识培训课件
- 普及鸽子的课件
- 浙江省G12名校协作体2025学年第一学期9月高三上学期开学联考地理试卷
- Unit 2 My friends (Period 1) 课件2025-2026学年人教版英语四年级上册
- 2025版酒店租赁经营合作协议模板:2025年度版
评论
0/150
提交评论