




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、(1)嵌入式控制系统的定义和分类:嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。嵌入式系统就是一个具有特定功能或用途的计算机软硬件结合体。实际上,嵌入式控制系统是和单片机的产生和发展分不开的。嵌入式系统的特点:v 应用的特定性和广泛性v 技术、知识、资金的密集性v 高效性v 较长的生命周期v 高可靠性v 软硬一体,软件为主v 无自举开发能力(需独立开发系统)(2)交叉编译:交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓 平台,实际上包含两个概念:体系结构(Architecture
2、)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。(3)嵌入式系统的两种设计方法:1. 目标机上安装某种嵌入式操作系统v Linux操作系统,由于代码简练、功能强大、内核公开等优点,获得广泛应用。 直接在宿主机上安装linux操作系统 Windows上通过虚拟机安装linux操作
3、系统2.目标机上不安装操作系统v 在这种情况下,我们把ARM9 只当成是32位单片机。使用Code Warror IDE对其进行开发,整个开发过程和开发MCS-51单片机一样,非常简单。v ADS(ARM Developer Suite)是ARM公司推出的新一代ARM开发工具,目前最新版本是ADS1.2。ADS使用Code Warror IDE 集成开发环境替代了老的开发工具,使用AXD做为调试工具,现代集成开发环境的一些特点,如源文件编辑器语法高亮和窗口驻留功能都有体现。v ADS使用并口通过JTAG仿真器与“目标机”相连,实现在线调试和仿真。(4)CISC和RISC:复杂指令集CPU内部为
4、将较复杂的指令译码,也就是指令较长,分成几个微指令去执行,正是如此开发程序比较容易(指令多的缘故),但是由于指令复杂,执行工作效率较差,处理数据速度较慢,PC 中 Pentium的结构都为CISC CPU。RISC是精简指令集CPU,指令位数较短,内部还有快速处理指令的电路,使得指令的译码与数据的处理较快,所以执行效率比CISC高,不过,必须经过编译程序的处理,才能发挥它的效率,我所知道的IBM的 Power PC为RISC CPU的结构,CISCO 的CPU也是RISC的结构。咱们经常见到的PC中的CPU,Pentium-Pro(P6)、Pentium-II,Cyrix的M1、M2、AMD的
5、K5、K6实际上是改进了的CISC,也可以说是结合了CISC和RISC的部分优点。比较内容CISCRISC指令系统复杂,庞大简单,精简指令数目一般大于200一般小于100指令格式一般大于4一般小于4寻址方式一般大于4一般小于4指令字长不固定等长可访存指令不加限制只有LOAD/STORE指令各种指令使用频率相差很大相差不大各种指令执行时间相差很大绝大多数在一个周期内完成优化编译实现很难较容易程序源代码长度较短较长控制器实现方式绝大多数为微程序控制绝大多数为硬布线控制软件系统开发时间较短较长ARM处理器是一种低功耗、高性能的32位RISC (精简指令系统)处理器。本章将从其结构入手、分析目前流行的
6、ARM920T核硬件结构和编程。(5)ICE:ICE是一种专用的设备,配有专用于特定CPU芯片的接头。将ICE的接头骑在CPU芯片上并加以固定,使它的每一条引线与CPU芯片上的对应引线接触,就可以监测CPU芯片各条引线上的逻辑电平。ICE(Integrated Collabration Environments)集成协调环境是虚拟团队所处的工作环境。v TDMI的基本含义如下: T 支持16位压缩指令集Thumb(Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出,具有16bit的代码密度。Thumb指令体系并不完整,只支持通用功能,必要时仍需要使用ARM指令 )。 D
7、 支持片上Debug。 M 内嵌硬件乘法器(Multiplier)。 I 嵌入式ICE,支持片上断点和调试。(7)冯诺依曼结构:体系结构:(1)采用存储程序方式,指令和数据不加区别混合存储在同一个存储器中,(数据和程序在内存中是没有区别的,它们都是内存中的数据,当EIP指针指向哪 CPU就加载那段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断. 在现在CPU的保护模式中,每个内存段都其描述符,这个描述符记录着这个内存段的访问权限(可读,可写,可执行).这最就变相的指定了哪个些内存中存储的是指令哪些是数据)指令和数据都可以送到运算器进行运算,即由指令组成的程序是可以修改的。(2)存
8、储器是按地址访问的线性编址的一维结构,每个单元的位数是固定的。(3)指令由操作码和地址组成。操作码指明本指令的操作类型,地址码指明操作数和地址。操作数本身无数据类型的标志,它的数据类型由操作码确定。(4)通过执行指令直接发出控制信号控制计算机的操作。指令在存储器中按其执行顺序存放,由指令计数器指明要执行的指令所在的单元地址。指令计数器只有一个,一般按顺序递增,但执行顺序可按运算结果或当时的外界条件而改变。(5)以运算器为中心,I/O设备与存储器间的数据传送都要经过运算器。(6)数据以二进制表示。编辑本段特点:(1)计算机处理的数据和指令一律用二进制数表示(2)顺序执行程序计算机运行过程中,把要
9、执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。(3)计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。(8)ARM920T处理器的主要特征如下:v ARM9TDMI内核,ARM v4T架构。v 两套指令集:ARM高性能32位指令集和Thumb高代码密度16位指令集。v 5级流水线结构,即取指(F)、指令译码(D)、执行(E)、数据存储访问(M)和写寄存器(W)。v 16K字节数据缓存,16K字节指令缓存。v 写缓冲器:16字的数据缓冲器。v 标准的ARMv4存储器管理单元(MMU
10、):区域访问许可,允许以1/4页面大小对页面进行访问,16个嵌入域,64个输入指令TLB及64个输入数据TLB。v 8位、16位、32位的指令总线与数据总线。ARM9系列微处理器在高性能和低功耗方面有非常突出特点: 5级流水线结构,指令执行效率更高。 提供1.1MIPS/MHz的哈佛结构。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口。 全性能的MMU,支持WindowsCE,Linux,PalmOS等多种主流嵌入式操作系统。v ARM体系结构中的字长:v 字(Word),在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般
11、为16位。v 半字(Half Word),在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。v 字节(Byte),在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。v 指令长度可以是32位(ARM状态下),也可以为16位(Thumb状态下)。v 大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。v 地址低位存储值的高位v 地址高位存储值的低位v 最直观的字节序(不要考虑对应关系,只需要把内存地址从左到右按照由低到高的顺序写出,把值按照通常的高位到低位的顺序写出,两者对照,一个字节一个字节的填充进去 )v 小端格式:低地
12、址中存放的是字数据的低字节,高地址存放的是字数据的高字节。 v 地址低位存储值的低位v 地址高位存储值的高位 v 最符合人的思维的字节序(因为从人的第一观感来说低位值小,就应该放在内存地址小的地方,也即内存地址低位。)big endianLittle endian(13)ADS是ARM集成开发环境,它主要包括编译器、链接器、调试器、C和C+库等,是ARM公司推出的新一代ARM集成开发工具。最新版本是ADS1.2,该版本支持包括Windows和Linux在内的多种操作环境。ADS1.2的组成如下:编译器v ADS提供多种编译器,以支持ARM和Thumb(在ARM体系中数据和指令采用16位字长)指
13、令的编译,主要有:v armcc:是ARM C编译器。v tcc:是Thumb C编译器。v armcpp:是ARM C+编译器。v tcpp:是Thumb C+编译器。v arm asm:是ARM和Thumb的汇编语言编译器。 链接器v armlink是ARM链接器。该命令既可以将编译得到的一个或多个目标文件和相关的一个或多个库文件进行链接,生成一个可执行文件,也可以将多个目标文件链接成一个目标文件,以供进一步的链接。 符号调试器v armsd是ARM和Thumb的符号调试器,能进行源码级程序调试。用户可以在用C或汇编语言写的代码中进行单步调试、设置断点、查看变量值和内存单元的内容。from
14、ELFv 将ELF格式的文件转换为各种格式的输出文件,包括BIN(二进制)格式映像文件、Motorola32位S格式映像文件、Intel32位格式映像文件和Verilog十六进制文件。FromELF命令也能够为输入映像文件产生文本信息,例如代码和数据长度。armarv armar是ARM库函数生成器,它将一系列ELF格式的目标文件以库函数的形式集合在一起。用户可以把一个库传递给一个链接器以代替几个ELF文件。CodeWarriorCodeWarrior集成开发环境(IDE)为管理和开发项目提供了简单多样化的图形用户界面,用户可以使用ADS的CodeWarriorIDE为ARM和Thumb处理器
15、开发用C、C+或者ARM汇编语言编写的程序代码。今后我们要经常使用CodeWarrior集成开发环境(IDE)来开发我们的C语言程序。调试器v ADS中含有3个调试器,即AXD、Armsd和ADW/ADU。v 在ARM体系中,可以选择多种调试方式,如Multi-ICE(Multi-processor In-Circuit Emulator)、ARMulator或Angel。v Multi-ICE是一个独立的产品,是ARM公司自己的JTAG在线仿真器,不是由ADS提供的。v ARMulator是一个ARM指令集仿真器,集成在ARM的调试器AXD中,提供对ARM处理器的指令集的仿真,为ARM和Th
16、umb提供精确的模拟。用户可以在硬件尚未做好的情况下开发程序代码,利用模拟器方式调试。v Angel是ARM公司常驻在目标机Flash中的监控程序,只需通过RS-232C串口与PC主机相连,就可以对基于ARM架构处理器的目标机进行监控器方式的调试。C和C+库ADS提供ANSI C库函数和C+库函数,支持被编译的C和C+代码。用户可以把C库中的与目标相关的函数作为自己应用程序中的一部分,重新进行代码的实现。这就为用户带来了极大的方便。JTAG概述v 在使用AXD对项目进行调试时,整个软件调试工作都是在“宿主机”上进行的,但程序的运行是在“目标”机上实现的。“宿主机”和“目标”之间通过计算机并口使
17、用一种叫JTAG的仿真器相连接,实现信息的上传和下载。Nor和Nand Flash的区别和使用v 程序调试结束,要将其可执行文件烧写(或称固化)到目标机中某种Flash中运行。Flash也叫非易失快闪存储器。v Nor和Nand是现在市场上两种主要的非易失闪存技术。Intel公司于1988年首先开发出Nor Flash技术。 操作效率差别。v NOR的读速度比NAND稍快一些。v NAND的写入速度比NOR快很多。v NAND的擦除速度远比NOR的快。v 大多数写入操作需要先进行擦除操作。v NAND的擦除单元更小,相应的擦除电路更少。接口差别v NOR flash带有SRAM接口,有足够的地
18、址引脚来寻址,可以很容易地存取其内部的每一个字节。v NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。v NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以很容易的取代硬盘或其他块设备。容量和成本 。NAND flash的单元尺寸几乎是NOR器件的一半。v NOR flash占据了容量为116MB闪存市场的大部分,而NAND flash只是用在8128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、Se
19、cure Digital、PC Cards和MMC存储卡市场上所占份额最大。可靠性和耐用性。v 对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。寿命(耐用性)在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。位交换。v 所有flash器件都受位交换现象的困扰。在某些偶然情况下,一个比特位会发生反转或被报告反转了。NAND发生的次数要比NOR多。 NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。 易用性。v 可以非常直接地使用基于NOR的闪存,可以像存储器那样连接
20、,并可以在上面直接运行代码。软件支持。v 在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序。许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。 v 由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。项目NORflashNANDflash特点芯片内执行系统RAM中传输效率高中写入/
21、擦除操作的典型时间5s4ms擦除器件时块大小64128KB832KB接口SRAM接口I/O口寿命(耐用性)十万次一百万次ARM使用C语言编程基本规则v 在应用系统的程序设计中,若所有的编程任务均由汇编语言来完成,其工作量巨大,并且不易移植。由于ARM的程序执行速度较高,存储器的存储速度和存储量也很高,因此,C语言的特点得以充分发挥,使得应用程序的开发时间大为缩短,代码的移植十分方便,程序的重复使用率提高,程序架构清晰易懂,管理较为容易等等。因此,C语言的在ARM编程中具有重要地位。 汇编语言的子程序应满足下面3个条件:v .在子程序编写时,必须遵守相应的ATPCS规v . 堆栈的使用要遵守相应
22、的ATPCS规则;v . 在汇编编译器中使用atpcs选项。 系统的基本初始化内容一般包括:v . 分配中断向量表v . 初始化存储器系统 v . 初始化各工作模式的堆栈v . 初始化有特殊要求的硬件模块v . 初始化用户程序的执行环境v . 切换处理器的工作模式AMBA、AHB、APB 总线特点v AMBA规范主要包括AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。 v AMBA 2.0规范包括四个部分:AHB、ASB、APB和Test Methodology。AHB的相互连接采用了传统的带有主模
23、块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。下面将简要介绍比较重要的AHB和APB总线。S3C2410处理器体系结构 v ARM920T核,16位/32位RISC结构和ARM精简指令集;v . ARM MMU,支持Windows CE, Linux等操作系统;v . 指令Cache、数据Cache、写缓冲;v . 支持ARM调试结构,片上ICE支持JTAG调试方式 S3C2410处理器管理系统v 支持大端(Big Endian)/小端(Little Endian)模式;v . 地址空间为每个内存块12
24、8MB(一共1CB),每个内存块支持8/16/32位数据总线编程;v . 8个内存块,6个用于ROM、SRAM和其它,2个用于ROM/SRAM/SDRAM;v . 1个起始地址和大小可编程的内存块 (Bank7);v . 7个起始地址固定的内存块(Bank0Bank6);v . 所有内存块可编程寻址周期;v . 支持SDRAM自动刷新模式;v . 支持多种类型ROM启动,包括NOR/NAND Flash、EEPROM等。 S3C2410处理器时钟和电源管理v 1时钟v S3C2410的主时钟由外部晶振或者外部时钟提供,选择后可以提供3种时钟信号,v 分别是CPU使用的FCLK、AHB总线使用的
25、HCLK和APB总线使用的PCLK。v 2. 时钟源选择v 对时钟源的选择是通过OM1:2实现的,如表3-1所示。v 3. 时钟控制逻辑v S3C2410支持HCLK、FCLK和PCLK的按比率选择,其比率是通过时钟分频寄存器CLKDIV中的HDIVN和PDIVN控制的,如表3-2所示。S3C2410的中断源v S3C2410有56个中断源。在56个中断源中,有32个中断源提供中断控制器,其中,外部中断EINT4EINT7通过“或”的形式提供一个中断源送至中断控制器,EINT8EINT23也通过“或”的形式提供一个中断源送至中断控制器。 v INT_ADC A/D转换中断;v INT_TC 触
26、摸屏中断;v INT_ERR2 UART2收发错误中断;v INT_TXD2 UART2发送中断;v INT_RXD2 UART2接受中断;v INT_ERR1 UART1收发错误中断;v INT_TXD1 UART1发送中断;v INT_RXD1 UART1接受中断;v INT_ERR0 UART0收发错误中断;v INT_TXD0 UART0发送中断;v INT_RXD0 UART0接受中断。v 中断控制逻辑(interrupt controller logic)的任务是在片内和外部中断源组成的多重中断发生时,选择其中一个中断,通过FIQ (快速中断请求)或IRQ(通用中断请求)向CPU内
27、核发出中断请求。中断挂起寄存器和中断源挂起寄存器v S3C2410有两个中断挂起寄存器:中断挂起寄存器(INTPND)见表4-3;中断源挂起寄存器(SRCPND)见表4-4。当中断源向CPU申请中断时,SRCPND寄存器的相应位被置1,表明哪一个中断源向CPU申请了中断;如果当前没有优先级与此中断源相等或高于的中断服务在执行,并该中断没被屏蔽,此中断会被响应,INTPND相应位会被置1v 当一个中断源向CPU申请中断时,它首先要在自己所在的子中断仲裁器组进行仲裁比较,如果此中断仲裁器组中没有和它同级别或高于它的中断源向CPU申请中断,则它进入主中断仲裁器组和其他组的优先中断源进行仲裁比较,决定
28、能否向CPU申请中断。v 在S3C2410系统中,外部中断专门有外部中断控制寄存器(EXTINTN0 EXTINTN2)、外部中断屏蔽寄存器(EINTMASK)、外部中断挂起寄存器(EINTPEND)进行控制。v 外部中断屏蔽寄存器(EINTMASK)控制外部中断的允许和禁止。功能见表4-12。vv 外部中断挂起寄存器EINTPEND,表示当前正在响应的中断服务程序是外部中断中哪一个申请的。外部中断挂起寄存器EINTPEND的定义见表4-13。v中断程序编写中需注意问题v 1中断初始化 一般在系统复位后和中断程序执行结束,要对中断挂起寄存器初始化,可按如下方法进行,以免写入不正确数据引起错误。
29、 rSRCPND = rSRCPND; rINTPND = rINTPND; S3C2410串行通信(UART)单元v S3C2410 UART单元提供3个独立的异步串行通信接口,皆可工作于中断和DMA模v 式。使用系统时钟最高波特率达230. 4 kb/s,如果使用外部设备提供的时钟,可以达到更高的速率。每一个UART单元包含一个16字节的FIFO发送缓冲器和一个16字节的FIFO接收缓冲器,用于数据的接收和发送。v S3C2410X UART支持可编程波特率、红外发送/接收( 只UART2 )、1个或2个停止位、5位/6位/7位/8位数据宽度和奇偶校验。v 波特率由一个专用的UART波特率
30、分频寄存器(UBRDIVn)(n=02)控制,计算公式如下 UBRDIVn=(int)ULK/(波特率 16)1或者 UBRDIVn=(int) PLK/(波特率 16)1UART线路控制寄存器ULCONnv 该寄存器的位6决定是否使用红外模式,位5、位4和位3决定校验方式,位2决定停止位长度,位1和位0决定每帧的数据位数。具体如表6-1所示:v发送寄存器UTXH和接收寄存器URXH这两个寄存器存放发送和接收的数据,当然只有1字节(8位数据)。需要注意的是,在发生溢出错误时,接收的数据必须被读出来,否则会引发下次溢出错误。UART通信程序例子v UART通信电平可有三种形式,TTL电平,RS2
31、32或RS485。嵌入式控制系统大多具有小、巧、轻、灵、薄的特点,许多传感器和S3C2410一体或距离很近,没有干扰,例如多参数监护仪等医疗设备,为简化电路,可采用TTL电平直接与S3C2410相连。v 如果通信距离在几十米左右并是点对点通信可采用RS232接口,否则只能采用RS485通信。在工程上UART通信大多采用三线制(发送连对方接收、接收连对方发送,双方共地)。本节在介绍RS232接口电路的同时给出了一个UART通信程序实例。RS232接口电路v 本实验平台的电路中,UART0与S3C2410连接电路如图6-1所示,UART0只采用两根接线RXD0和TXD0 (RS232只能实现点对点
32、通信,且两点要共地),因此只能进行简单的数据传输及接收。UART0采用美信332电平转换器(MAX332)做电平转换 S3C2410的A/D、D/A转换控制v S3C2410集成了8通道10位A/D转换器,该转换器可以通过软件设置为休眠模式,可以节省能量消耗,最大转换速率为500ksps(kilo Samples per Second 表示每秒采样千次,是转化速率的单位)。A/D转换数据寄存器及各位的定义如表7-2所示。A/D转换数据寄存器及各位的定义如表7-2所示。A /D转换控制程序的编制步骤v 1. 设置A/D转换的时钟频率v A/D转换的时钟频率freq取决于ADCCON13:6的PR
33、SCVL的值,PRSCVL的值可计算如下:v PRSCVL=PCLK/freq -1;v 2. 启动转换:v rADCCON=0x01; /启动ADCv 3. 判转换结束:v While(rADCCON&0x01); / 检查Endble start位是否为低v While(rADCCON&0x8000); /检查ECFLG位是否变高v 4令READ_START=1 (ADCCON1=1),启动读功能,从数据寄存器ADCDAT0中读出数据 实时时钟在嵌入式系统中的作用v 在一个嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时、分、秒和年、月、日。即使系统处于关机状态下,它也能够正常工作(通
34、常采用后备电池供电,可靠工作十年),其外围也不需要太多的辅助电路,典型的例子就是只需要一个高精度的晶振。v 在嵌入式系统中,实时时钟主要用来显示时间。它具有以下特点:v 时钟数据采用BCD编码或二进制表示;v 能够对闰年的年、月、日进行自动处理;v 具有告警功能,当系统处于关机状态时,能产生告警中断;v 具有独立的电源输入;v 提供毫秒级的时钟中断(时钟滴答中断),该中断可用于嵌入式操作系统的内核时钟1实时时钟控制寄存器RTCCONv 该寄存器及其各位的定义如表9-1所示:v 在正常使用S3C2410的实时时钟前,一定要对S3C2410的实时时钟控制寄存器RTCCON进行正确的设置,例如,使能
35、、BCD时钟选择、计数方式等等。2告警控制寄存器RTCALMv 该寄存器及其各位的定义如表9-2所示:v 使用告警控制寄存器RTCALM,可以把S3C2410的实时时钟用来做定时器和闹钟。3滴答(时间片)时钟计数器v 滴答时钟计数主要用在需要在固定时间产生中断的场合,滴答时钟计数器中的值在每个滴答周期自动减1,到0时产生中断。中断周期:v Period=(n+1)/128v 其中Period单位为秒,n为RTC时钟中断计数,n=1128v 该寄存器及其各位的定义如表9-3所示:4告警时间寄存器v 包括年、月、日、时、分、秒。它们都以BCD的格式表示,告警时间寄存器如表9-4所示:5实时时钟寄存
36、器v 该寄存器包括年、月、日、时、分、秒。它们都以BCD的格式表示,实时时钟寄存器见表9-5。6. 秒循环复位寄存器RTCRSTv 为了适应某些专门场合使用,S3C2410 RTC设置了秒循环复位寄存器RTCRST,它可以在程序规定的秒时间内循环复位,RTCRST寄存器的配置见表9-6。什么是脉宽调制(Pulse-Width Modulation)v 在嵌入式控制系统中,有许多场合需要直流电机做驱动,我们知道,直流电机给定直流电压就可以旋转,给定的电压高,电机转速就高;给定的电压低,电机转速就慢,这样控制给定电压大小就可以控制电机的转速。S3C2410的脉宽调制和PWM控制v S3C2410有
37、5个16位定时器,其中定时器0,1,2,3具有脉冲宽度调制(PWM)功能,定时器4具有内部定时作用,但是没有输出引脚。定时器0具有死区生成器,可以控制大电流设备。v 定时器T0和T1共用一个8位预定标器,定时器T2,T3和T4共用另一个8位预定标器,每个定时器都有一个时钟分频器,信号分频输出有5种模式(1/2、1/4、1/8、1/16和外部时钟TCLK)。定时器结框如图11-1所示。v 每一个定时器都有一个自己的用定时器时钟驱动的16位减法计数器。当减法计数器减到0时,就会产生一个定时器中断来通知CPU ,定时器操作完成。当定时器减法计数器减到0时,相应的TCNTBn的值被自动重载到减法计数器
38、中继续下次操作。然而,如果定时器停止了,比如在运行时通过清除TCON中定时器使能位来中止定时器的运行,则TCNTBn的值不会被重载到减法计数器中。v TCMPBn的值用于脉冲宽带调制(PWM)。当定时器的减法计数器的值和TCMPBn的值相等时,定时器输出改变输出电平。因此,比较寄存器决定了PWM的占空比。S3C2410定时器特性:v . 5个16位定时器;v . 2个8位预定标器和2个4位分频器;v . 可编程改变PWM输出占空比;v . 自动重载模式或者单个脉冲输出模式;v . 具有死区生成器;v . 自动重载与双缓冲。以下几个步骤给出了更新过程:v . 向TCNTBn和TCMPBn写入初始
39、值。v . 置位相应定时器的手动更新位,不管是否使用倒相功能,推荐设置倒相位v . 启动定时器,清除手动更新位。v A:允许自动重载功能,TCNTBn=160 , TCMPBn=110。置位手动更新位,配置倒相位,手动更新位被置位后,TCNTBn和TCMPBn的值被自动装人了TCNTn和TCMPn。之后,设置TCNTBn和TCMPBn分别等于80和40.v B: 启动定时器清零手动更新位,取消倒相功能,允许自动重载,定时器开始启动减法计数。v C: 当TCNTn和TCMPn的值相等时,TOUT输出电平由低变高。v D: 当TCN Tn的值等于0时产生中断,并在下一个时钟到来时把TCNTBn的值
40、装人v 暂存器中。v E: 在中断服务子程序中,把80和40分别装入TCNTBn和TCMPBn。v F: 当TCNTn和TCMPn的值相等时,TOUT输出电平由低变高。v G、H: 当TCNTn = 0时,产生中断,把TCNTBn(80)和TCMPBn(60)的值分别自动装入TCNTn和TCMPn,并在在中断服务子程序中,禁止自动重载和中断请求来中止定时器运行。v I: 当TCNTn和TCMPn的值相等时,TOUT输出电平由低变高。v J、K: 尽管TCNTn=0,但是定时器停止运行,也不再发生自动重载操作,因为定时器自动重载功能被禁止, 不再产生新的中断。死区生成器v 当PWM控制用于电源设
41、备时需要用到死区功能。这个功能允许在一个没备关闭和另一个设备开启之间插入一个时间间隔。这个时间间隔可以防止两个设备同时关闭、同时开启或一个关闭的同时另一个开启。v TOUT0是定时器0的PWM输出,假定nTOUT0是TOUT0的倒相信号。如果死区功能被允许,TOUT0和nTOUT0的输出波形就变成了TOUT0_DZ和nTOUT0_DZ。如图11-4所示。nTOUT0_DZ可在TOUT1脚上产生。v 有了死区间隔,TOUT0_DZ和nTOUT0_DZ关闭和开启就不会同时进行。v 死区间隔时间可以通过软件设定,达到防止两个设备同时动作目的。PWM输出控制v 1。输出电平倒相 PWM在不改变占空比情
42、况下,输出电平还可以倒相,即把输出电平取反。在PWM控制寄存器中有一个逆变位,通过修改逆变位值可方便的实现倒相。v 2。编程改变输出频率 PWM的输出频率很容易改变,具体见下面程序:定时器输入时钟频率:v fTCLK=(fPCLK/(Prescaler+1)/dividerv 其中,Prescaler为预定标值(0255);分频器divider(表11-3中的4选1开关)的分频值为2、4、8和16。v PWM输出时钟频率=定时器输入时钟频率(fTCLK)/ 定时器计数缓冲器值(TCNTB)v PWM输出占空比=定时器比较缓冲器值(TCMPB)/定时器计数缓冲器值(TCNTB)11.3.3 减法
43、缓冲寄存器和比较缓冲寄存器v 定时器减法缓冲寄存器(TCNTBn)和比较缓冲寄存器(TCMPBn)定义如表11-4所列3.4 make工具和Makefile规则3.4.1make和Makefile概述什么是Makefile?或许很多Windows的程序员都不知道这个东西,因为那些Windows的集成开发环境都做了这个工作,但要做一个专业的程序员,必须了解Makefile。会不会写Makefile,从一个侧面说明了一个程序员是否具备完成大型软件工程的能力。因为,Makefile关系到了整个工程的编译规则。一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了
44、一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,3.4.2Makefile文件内容Makefile主要包含了以下五个部分:(1) 显式规则。 (2) 隐晦规则。(3) 变量的定义。 (4) 文件指示。 (5) 注释。Makefile规则以下用一个示例来说明Makefile的书写规则。一个工程中有a.c、b.c两个文件。甚至于进行更复杂的功能操作。Makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。Makefile带来的好处就是自动化编译。一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。什么是make?m
45、ake是一个命令工具,用于解释Makefile中的指令。make工作原理Linux下GNU的Make工作流程如下: 查找当前目录下的Makefile文件; 初始化Makefile文件中的变量; 分析Makefile中的所有规则; 为所有的目标文件创建依赖关系; 根据依赖关系决定哪些目标文件要重新生成; 执行生成命令。可见,make命令执行时,需要一个Makefile文件,以告诉make命令需要怎样的去编译和连接程序。此外,make还有丰富的命令行选项,可以完成各种不同的功能。表3-5列出了常用make命令行选项。宿主机(Host)是一台通用计算机(如PC机或者工作站),功能较强,各种Linux
46、 发行版本可以直接在PC机上安装,功能十分强大。它不仅能够支持各种处理器和外围设备接口,而且提供了图形化的用户交互界面和丰富的开发环境,更重要的是Linux 系统性能稳定。它为开发者提供了以下功能: 非常稳定的多任务操作系统; 丰富的设备驱动程序支持和网络工具; 强大的Shell; 本地编译器; 编辑器; 图形化的用户界面。arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。交叉调试(Cross Debug)又常常被称为远程调试(Remote Debug),是一种允许调试器以某种方式控制目标机上被调试进程的运行方式,并具有查看和修改目标机上内存单元、寄存器以及被调试进
47、程中变量值等各种调试功能的调试方式。JTAG口JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路测试接口(TAP,Test Access Port),通过JTAG 测试工具对芯片的核进行测试。它是联合测试行动小组(JTAG,Joint Test Action Group)定义的一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。目前大多数比较复杂的器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI和TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。因为JTAG 接口的时钟一般在116 MHz
48、之间,所以传输速率可以很快。但是实际的数据传输速度要取决于仿真器与主机端的通讯速度和传输软件。交叉开发工具链包括交叉编译器、交叉连接器和交叉调试器,这些交叉开发工具链是嵌入式系统开发的必备工具,它是要安装在宿主机(PC)上的。1. 普通文件rootlocalhost # ls -lh install.log-rw-r-r- 1 root root 53K 03-16 08:54 install.log2. 目录文件rootlocalhost # ls lh总用量 14M-rw-r-r- 1 root root 2 03-27 02:00 fonts.scale-rw-r-r- 1 root r
49、oot 53k 03-16 08:54 install.log-rw-r-r- 1 root root 14M 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpmdrwxr-xr-x 2 1000 users 4.0k 04-04 23:30 mkuml-2004.07.17drwxr-xr-x 2 root root 4.0k 04-19 10:53 mydirdrwxr-xr-x 2 root root 4.0k 03-17 04:25 Public3. 字符设备或块设备文件进入/dev目录,列一下文件,如下:rootlocalhost # ls l
50、h /dev/ttycrw-rw-rw- 1 root tty 5, 0 04-19 08:29 /dev/ttyrootlocalhost # ls -lh /dev/hda1brw-r- 1 root disk 3, 1 2006-04-19 /dev/hda14. 套接口文件当启动MySQL服务器时,会产生一个mysql.sock的文件。rootlocalhost # ls -lh /var/lib/mysql/mysql.socksrwxrwxrwx 1 mysql mysql 0 04-19 11:12 /var/lib/mysql/mysql.sock5. 符号链接文件rootlo
51、calhost # ls -lh setup.loglrwxrwxrwx 1 root root 11 04-19 11:18 setup.log - install.logShell简介Shell是一种具备特殊功能的程序,它是介于使用者和Linux 操作系统核心程序(kernel)间的一个接口。Shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,Shell就是围绕内核的外层,如图2-16所示。从Shell或其他程序向Linux操作系统传递命令的时候,内核就会做出相应的反应。Shell是一个命令语言解释器,它拥有自己内建的Shell命令集,Shell也能被
52、系统中其他应用程序所调用。用户在提示符下输入的命令都由Shell先解释然后传给Linux核心。挂载文件系统命令 mount权限:所有用户。使用方法:mount 参数 设备 挂载目录(挂载点)说明:在命令行中使用mount命令挂载文件系统。 umount权限:所有用户。使用方法:umount 参数 设备 挂载目录(挂载点)说明:在命令行中使用umount命令卸载文件系统。-t 指定挂载文件系统类型。其他常用命令(1) clear命令:清屏命令,清除屏幕上的内容。(2) init 0 命令:关闭虚拟机命令,可以防止直接关闭虚拟机电源导致数据崩溃。(3) reboot命令:重新启动虚拟机。(4) i
53、nsmod命令:向内核添加模块,如驱动模块。(5) rmmod命令:向内核添加模块,如rmmod获至宝rtl8139删除名为rtl8139的驱动模块。(6) startx:进入Linux虚拟机图形界面。(7) Ctrl+C:中断Shell命令。(8) adduser:添加用户命令。(9) userdel:删除用户命令。流水线(Pipeline)技术:几个指令可以并行执行 提高了CPU的运行效率 内部信息流要求通畅流动1、为什么采用高速缓存 微处理器的时钟频率比内存速度提高快得多,高速缓存可以提高内存的平均性能。2、高速缓存的工作原理 高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。
54、 CPU高速缓存控制器CACHE主存数据数据地址嵌入式Linux由以下三个部分组成为:l Bootloader(引导加载器)l 内核l 根文件系统在嵌入式Linux软件系统的开发中,一般将软件分为启动引导程序(Bootloader)、操作系统内核(OS Kernel)、根文件系统(File System)、图形窗口系统(GUI)和应用程序(AP)等几个部分,其中前三部分是一个可运行的嵌入式系统必不可少的, 它们在开发的过程中,被分别独立地编译链接或打包为一个二进制目标文件,然后下载(烧录)到嵌入式系统的ROM(一般是Flash)中。后两部分如果有的话,通常也是和根文件系统一起打包后烧录到Flash中。在嵌入式L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025黑龙江齐齐哈尔市富裕县信访局招聘公益性岗位人员2人模拟试卷附答案详解(完整版)
- 企业员工考核与绩效管理表
- 2025年极性微晶玻璃项目提案报告
- 景区承包经营合同
- 山东省济南市2024-2025学年高一上学期开学学情检测地理地理试题(解析版)
- 江西省景德镇市2024-2025学年高三下学期第三次质检地理试题(解析版)
- 2025年金湖县事业单位公开招聘人员96人考前自测高频考点模拟试题及参考答案详解
- 2025年度吉林大学公开招聘教师(1号)(105人)模拟试卷及一套答案详解
- 2025广西玉林容县公安局第一次公开招聘警务辅助人员23人模拟试卷及一套参考答案详解
- 医学研究领域责任承诺书(5篇)
- 2024年蚌埠五河县事业单位选调工作人员考试真题
- 2025年医院领导竞聘面试题与参考答案
- 黑龙江省高等教育教学成果奖申请书
- 2025中矿金石实业有限公司社会招聘备考考试题库附答案解析
- 2025年屠检考务试卷及答案
- (正式版)DB65∕T 4260-2019 《薰衣草优 质种苗组培快繁生产技术规程》
- 五金材料知识培训课件
- 冀北调度证考试题库及答案
- 23《富贵不能淫》(公开课一等奖创新教学设计)统编版语文八年级上册
- 校园科技教育主题班会活动方案
- 绿色食品认证合同协议
评论
0/150
提交评论