嵌入式系统原理及应用教学大纲_第1页
嵌入式系统原理及应用教学大纲_第2页
嵌入式系统原理及应用教学大纲_第3页
嵌入式系统原理及应用教学大纲_第4页
嵌入式系统原理及应用教学大纲_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式系统原理及应用教学大纲第1章前言1-1什么是嵌入式系统用一种通俗的说法来描述:“凡是与应用产品结合在一起的、具有专门用途的、带有特定接口的、配有专用软件的、满足特定要求的微处理器系统都可以叫做嵌入式系统”。由此看来,我们曾经接触过的单片机系统都属于嵌入式系统的范畴。学习嵌入式系统应具备的基础学习嵌入式系统应具备:“计算机原理”、“C语言程序设计”、“计算机接口技术”、“单片机原理”等计算机基础知识。进一步:应学习并掌握“数据结构”,“操作系统原理”等课程的基本知识。1-2嵌入式系统的“复杂”和“神秘”之处初次接触嵌入式系统的人,会觉得其非常复杂和神秘。这是因为嵌入式系统所涉及的知识领域非

2、常广泛,使用的软件工具、语言工具众多。因此,给人以非常“复杂”和“神秘”和高不可攀的感觉。实际上,对于已经具备了“计算机原理”、“C语言程序设计”、“计算机接口技术”、“单片机原理”等计算机基础知识的人而言,对掌握嵌入式系统的原理以及开发过程直至开发出自己的产品并不是什么高不可攀的事情。重要的是理清脉络、掌握核心基础知识。不可否认,嵌入式系统有其难以理解和复杂的一面,任何一门课或教材都不可能完全涵盖所有相关内容。因此,对其核心内容的深刻理解、融会贯通,能够举一反三就显得十分重要。1-3学习嵌入式系统的方法如何在较短的时间内掌握嵌入式系统,笔者根据多年嵌入式系统教学、科研的体会提出几点学习嵌入式

3、系统的经验与读者分享:课完整地听一次相关课程,会使你在最短的时间内了解嵌入式系统的全貌。书因人而异地选择若干本“好书”仔细研读,包括说明书、操作手册。问多向有经验的相关人员咨询。多问一句话,也许会节约你n天时间。思多思考,为什么是这样。多体会,为什么要这样。网通过网络寻找问题的答案。你遇到的问题别人可能已经遇到过且给出了解答或者会给出对你有益的提示。猜利用已经掌握的知识对未知的事情进行合理的猜测、假设与尝试会使你进步更快。做只有亲自做,才知道是怎么回事。记录建立自己的学习文件,记录遇到的问题,用自己的语言记录下问题解决的方法或别人解决类似问题的方法。语言良好的英语能力会使你更准确地理解原文说明

4、书所描述的内容并且可以帮助你利用网络共享全球相关资源。共享在嵌入式学习中,充分利用开源代码,能共享的资源一定共享。如操作系统的相关函数、驱动程序、相关的程序段等。如果用通俗的语言来概括嵌入式系统的学习过程就是下面几个循环周期的组合:学习、实践、熟练、发现问题、思考、寻找答案、验证;再学习、再实践、再熟练、再发现问题、再思考、再寻找答案、再验证。按使用说明书(手册)操作、体会、思考;再操作、再体会、再思考。询问、思考、验证;再询问、再思考、再验证。阅读相关材料和图书、思考、验证;再阅读、再思考、再验证。利用已经掌握的知识对未知的事情进行合理的猜测与假设、思考、验证;再猜测与假设、再思考、再验证。

5、最后一件事,也是最重要的,就是坚持、坚持、再坚持!第2章将ARM微处理器S3C2440作为高档单片机的开发与应用目前,嵌入式微处理器的体系结构有30多个系列,主流体系结构有ARM、MIPS、PowerPC、X86等。其中,ARM微处理器是使用最为广泛的嵌入式微处理系列,占据了嵌入式微处理器约80的市场。这里的所谓“高档”指的是S3C2440的功能较我们学习过的单片机更丰富一些,其宏观工作原理和开发过程与普通单片机无异。学习方法也是一样的,不外乎存在这样几个环节:硬件环境、软件环境、开发环境、具体开发。2-1S3C2440的硬件资源配置显然,S3C2440就是一款带有特定接口,当配备配有专用软件

6、后即可组成满足特定要求的嵌入式系统的微处理器。与我们接触过的单片机硬件相比更复杂一些。2-2S3C2440对存储器的组织图2-2为S3C2440存储器组织示意图。根据启动方式(OM1:0引脚选择)的不同,S3C2440对存储器的组织有两种方式。无论采用哪一种启动方式,S3C2440都将存储器分为下述4个区域:内部静态随机存储器区域Boot SRAM。内部特殊功能寄存器区域SFR。外部静态只读存储器区ROM/静态随机存储器区SRAM。外部静态随机存储器区SRAM/外动态随机存储器区域SDRAM。S3C2440是一个32位CPU,按理讲可直接寻址范围为232=4G。但S3C2440只有27根地址线

7、ADDR0:26引出,即可直接寻址范围只有227=128M。为了扩大寻址范围,S3C2440采用了将存储区分块(Bank)寻址的方法,利用块选线nGCS7:0使寻址范围扩大到了1G。从图2-2中可以看出:无论采用哪一种启动方式,每个存储区分块区间及分块最大容量是固定的。无论采用哪一种启动方式,内部特殊寄存器区域地址是固定的。无论采用哪一种启动方式,如果用户要使用SDRAM,其地址必须安排在地址为0 x300000000 x40000000(Bank6、Bank7)的空间内,以保证在硬件正确连接的条件下,SDRAM可以正常工作。2-3S3C2440对寄存器的组织S3C2440内部有一个当前程序状

8、态寄存器CPSR(Current Program Status Register),完成设置系统的工作方式、反映运算结果状态等工作。S3C2440程序状态寄存器CPSR的内容如图2-3所示。图2-3 当前程序状态寄存器CPSRCPSR31:28为标志位,用于控制指令操作和程序走向。CPSR7:0为控制位,用于决定S3C2440处于7种工作模式中的哪一种工作模式(由CPSR4:0决定)以及是否响应中断(由CPSR7:5决定)等。S3C2440内部还有一组作为操作数参与运算、保存运算结果等工作的通用寄存器R0R14。R15为程序指针寄存器,也可写作PC,其值总是指向下一条指令的地址。S3C2440

9、通用寄存器组如图2-4所示。图2-4 S3C2440通用寄存器组其中的某些寄存器除了可作为通用寄存器外还担负着某种特殊的功能,如R13堆栈指针寄存器,也可写作SP:栈操作时的堆栈指针寄存器。R14连接寄存器,也可写作LR:调用函数时将返回地址自动保存在其中。这类寄存器的共同特点是:只有名字,没有地址。实际上,S3C2440的物理寄存器不止上述的17个寄存器,而是37个。图2-4中带阴影的寄存器表示在原寄存器后有一个备份寄存器,俗称影子寄存器,表示在指定工作模式下所特有的寄存器。S3C2410正常工作时为User模式。当进入某个指定模式后,对相应的寄存器操作就变成了该模式下对指定通用寄存器以及对

10、该模式下影子寄存器的操作。例如:如果S3C2440进入FIQ工作模式,可操作的寄存器包括R1R14。其中对R8R14的操作变成了对其影子寄存器R8_fiqR14_fiq的操作,而R8R14的数据保持不变。此时运算结果对CPSR的影响也变成了对其影子寄存器SPSR_fiq的影响,CPSR保持不变。2-4S3C2440对特殊功能寄存器SFR的组织正如我们所看到的,S3C2440集成了大量的外部设备接口。对每一种外部设备接口的功能设置、信息交换、状态读取等操作都是通过读写与之对应的寄存器进行的,从而形成了可编程接口,使接口功能大大增强。对外部设备接口而言,这类寄存器通常包括:控制寄存器、状态寄存器和

11、数据寄存器三大类,而且一个外部设备接口寄存器的地址通常是连续的。微处理器对外部设备接口寄存器地址的编址方式有两种:一种是IO映射方式(IO mapped),又称IO独立编址。另一种是内存映射方式(Memory mapped),又称IO与内存统一编址。具体是哪一种编址方式则取决于微处理器的体系结构。S3C2440对这类寄存器统称为特殊功能寄存器SFR实际上就是对应接口的控制寄存器、状态寄存器和数据寄存器。其特点是:寄存器等长均为32位,每个寄存器占用一个字地址(不一定每一位都有用)。地址固定从0 x48000000开始,每个外部设备接口的地址是固定的。与内存统一编址对寄存器的操作如同对内存操作。

12、每个外部设备接口的寄存器组地址连续。以B组通用IO口为例:控制寄存器GPBCON地址为0 x56000010,完成对指定IO位的设置。数据寄存器GPBDAT地址为0 x56000014,如果对应位被设置成普通IO功能,则对应位的读写就是对应引脚的IO。如果对应位被设置成非IO功能,则该引脚完成指定功能。上拉电阻允许寄存器GPBUP地址为0 x56000018,如果对应位被设置成普通IO功能,则GPBUP的对应位表示是否接入上拉电阻。对输入而言,如果设置接入上拉电阻,则外部的开关量或OC门输出可直接接入对应引脚而无需再接上拉电阻。对输出而言,如果设置不接入上拉电阻,则对应引脚的输出是一个OC门输

13、出。当选用非IO功能时,对应IO引脚的上拉功能应被禁止。2-5S3C2440的启动方式随着S3C2440外部引脚OM1:0设置的不同,启动方式也不同,分为Nand Flash启动和Nor Flash启动。Nand Flash与Nor Flash嵌入式系统中广泛采用的只读存储器通常分为Nor Flash和Nand Flash两种。他们之间由于内部结构和制造工艺的差异而导致有以下几个主要的不同点:成本不同。同容量存储器,Nor Flash成本更高。写入、擦除速度不同。Nand Flash的写入和擦除速度更快。读取速度不同。Nor Flash读取速度更高。与微处理器的接口不同。Nor Flash的数

14、据线和地址线是分开的(串行Nor Flash除外),可与微处理器直接相连,而Nand Flash的数据线和地址线是共用的,需要特殊的接口与微处理器相连。读取方式不同。Nor Flash基于字节寻址读取数据,对Nor Flash内容的读取操作类似于对RAM的读取操作,可以实现芯片内执行(XIP ,eXecute In Place)。而Nand Flash基于页寻址读取数据,对Nor Flash内容的读取操作类似于对硬盘的读取操作。可靠性不同。Nor Flash的可靠性更高。为了保证Nand Flash也可以可靠地工作,在Nand Flash的设计操作中提供了ECC(Error Checking

15、and Correcting)校验操作,以确保读写数据的正确性。S3C2440的Nor Flash启动如图2-2所示,当选择OM1:0=01或10时,系统复位后,程序指针指向位于绝对地址0 x00位置的Nor Flash并执行其中的程序。在Nor Flash启动状态下,Nor Flash相当于EPROM或EEPROM。如果选择Nor Flash启动,配置一个所需容量的Nor Flash和一些必要的外围器件,就构成了一台具有4K字节RAM的32位高档单片机。S3C2440的Nand Flash启动如图2-2所示,当选择OM1:0=00时,系统复位后,Nand Flash的前4K字节内容被加载到内

16、部RAM(Boot RAM)中,这一动作由S3C2440的硬件设计完成。加载完成后,程序指针指向内部RAM绝对地址0 x00位置并执行被载入的代码。在Nand Flash启动状态下,Nand Flash相当于一块硬盘。如果选择Nand Flash启动,且程序和数据总量不超过4K字节,若配置一个所需容量的Nand Flash和一些必要的外围器件,同样也可以构成一台具有4K字节RAM的32位高档单片机。在对S3C2440微处理器开发之前,除了需要对硬件资源配置,还需对其为我们提供的可编程环境:例如寄存器、存储器、可编程接口、汇编语言等资源进行了解。接下来的事情就是如何对其进行开发。如同开发单片机一

17、样:应具有相应的开发平台,对应的语言汇编程序,高级语言的编译器等。2-6ARM指令系统S3C2440使用的是ARM体系结构定义的指令系统,简称ARM指令系统,属于RISC(Reduce Instruction Set Computer)系统。与X86的CISC系统(Complex Instruction Set Computer)相比有如下几个主要特点:使用等长指令,指令长度均为4个字节。寻址方式少且灵活简单,没有存储器间接寻址方式。只有读数据指令和写数据指令可以访问存储器。指令数目较少、格式、功能比较简洁。指令大量使用寄存器作为操作数。不难看出,这些特点都使得RISC系统的指令执行速度更快。

18、表2-2 ARM指令集助记符指令功能描述操作描述ADC带进位加法指令Rd: = Rn+Op2+CarryADD加法指令Rd: = Rn+Op2AND逻辑与指令Rd: = Rn AND Op2B跳转指令R15: = addressBIC位清零指令Rd: = Rn AND (NOT Op2)BL带返回的跳转指令R14: = R15,R15: = addressBX带状态切换(ARM/Thumb)的跳转指令R15: = Rn,T bit: = Rn0CMN比较反值指令CPSR flags: = Rn+Op2CMP比较指令CPSR flags: = Rn-Op2EOR异或指令Rd: =( Rn AND

19、 (NOT Op2)OR (Op2 AND (NOT Rn)LDM加载多个寄存器指令Stack manipulation(Pop)LDR存储器到寄存器的数据传输指令Rd: = (address)MLA乘加运算指令Rd: = (RmRs) + RnMOV数据传送指令Rd: = Op2MRS传送CPSR或SPSR的内容到通用寄存器指令Rn: = CPSR或SPSRMSR传送通用寄存器到CPSR或SPSR的指令CPSR: = Rm或SPSR: = RmMUL32位乘法指令Rd: = RmRsMVN数据取反传送指令Rd: = 0FFFFFFFF EOR Op2ORR逻辑或指令Rd: = Rn OR O

20、p2RSB逆向减法指令Rd: = Op2-RnRSC带借位的逆向减法指令Rd: = Op2-Rn-1+CarrySBC带借位减法指令Rd: = Rn-Op2-1+CarrySTM批量内存字写入指令Stack manipulation(Push)STR寄存器到存储器的数据传输指令address: = RdSUB减法指令Rd: = Rn-Op2SWI软件中断指令OS callSWP交换指令Rd: = Rn, Rn := RmTEQ相等测试指令CPSR flags: = Rn EOR Op2TST位测试指令CPSR flags: = Rn AND Op2CPU不同,指令助记符不同,指令格式有差异、。

21、但不外乎就是几件事情要搞清楚:指令功能、指令格式、寻址方式、伪指令的使用、编程框架等。这些与我们学习单片机的过程是一样的属于语言使用说明书的范畴。程序员的任务就是在给定的程序框架内,合理地使用和组织指令使之完成规定的任务。汇编程序的编写到最终在CPU上运行须经几个步骤:编辑、汇编、下载、调试、运行。这些都是在集成开发环境下进行的。对ARM处理器而言,经常使用的是ARM公司提供的ADS集成开发环境。在ADS环境下编写一个汇编语言框架程序(见【例2-1】)通过这个例子,要搞清楚的问题:ADS的使用(设置)方法、汇编程序的生成过程、汇编程序的调试过程、汇编程序在内存中的数据格式。编写一个在Boot

22、RAM中运行的LED驱动程序(见【例2-2】、【例2-3】)当这个程序运行起来后,他告诉了我们一件事情:由于我们处理器具备逻辑运算、算数运算的功能,具备逻辑0、1输出的功能,因此,从理论上讲,所有的程序我们都可以编写出来。如果选择Nand Flash启动方式,将【例2-2】的LED程序写入Nand Flash的0 x00开始的地址内,则开机后该程序会自动运行。制作一个可以自动运行的LED闪烁装置(见【例2-4】)如果将开发板上多余的器件去除,将输出信号放大,既可以做成一个交通灯装置。随着CPU技术的发展,如何降低能耗是衡量CPU性能的重要指标之一。因此,在高端CPU中都设有电源和时钟管理系统,

23、用户可通过编程让CPU处于不同的电源和时钟的工作状态。2-7S3C2440对电源和时钟系统的管理为了减少高频时钟源对外围电路的干扰,通常S3C2440的时钟源采用12MHz晶体振荡器,12MHz震荡信号通过内部锁相环倍频达到指定频率。也可以直接通过外部管脚输入给定频率的脉冲通过内部锁相环倍频达到指定频率。经过倍频输出的信号分别产生4种时钟:FCLK向S3C2440内核ARM920T提供时钟信号。如S3C2440使用的主频为400MHz,就是指的这个时钟信号,1/FCLK即为时钟周期。HCLK为AHB总线上的外部设备接口供给时钟信号。PCLK为APB总线上的外部设备接口供给时钟信号。产生USB设

24、备使用的时钟信号。各时钟频率之间的比值可通过指定寄存器设置。S3C2440的电源和时钟系统管理方案4种工作方式正常模式空闲模式低速模式休眠模式各种工作方式可通过指定寄存器设置。【例2-5】给出了一个以400MHz主频工作,在Boot RAM中执行的LED闪烁驱动程序的例子。通过上面的例子,我们已经基本搞清了S3C2440所提供的硬件环境、软件环境以及对S3C2440的开发环境和具体开发过程。接下来要提出的问题是:当程序代码长度超过4K字节后就不能在Boot RAM内运行了,而应在外扩的SRAM或SDRAM中运行。根据对开发板电路的分析,我们知道在开发板0 x30000000(BANK6)地址开

25、始,已经扩展了64M SDRAM存储器。那么我们的程序可不可以在SDRAM中运行呢?如果可以,那将皆大欢喜,因为这意味我们拥有了较大RAM空间,可以编写较为复杂的应用程序了。看看【例2-6】。【例2-6】表明,如果简单地将程序加载到地址为0 x30000000的SDRAM中书不能运行的。理由是:SDRAM的诸多特征,如:数据传输方式、刷新方式与刷新周期、信号保持时间等都与系统工作的时钟频率以及所选用的SDRAM有关。根据所选用SDRAM型号的不同,需要对相关的时序和工作方式进行配置这一过程称为对SDRAM的初始化。SDRAM没有初始化之前是不能使用的。2-8S3C2440对SDRAM的初始化这

26、个过程非常麻烦,需要准确地理解所选SDRAM芯片说明书中给出的各种参数,以及如何设置S3C2440寄存器的参数与之匹配。S3C2440涉及到SDRAM寄存器有13个。下面的例子是将计算好寄存器参数排成一张表,通过一段程序将各参数填入相关寄存器的程序。执行这段程序后,SDRAM即可使用。MemSetup LDR R0,=SMRDATA;SDRAM初始化数据起始地址 LDR R1,=BWSCON ;BWSCON地址 ADD R2, R0, #52 ;SMRDATA数据结束地址0 LDR R3, R0, #4 ;读出数据 STR R3, R1, #4 ;写入寄存器 CMP R2, R0 ;判断是否结

27、束 BNE %B0;反向返回标号0MOVPC,LR;初始化SDRAM完成,返回SMRDATA DCD 0 x22000000;BWSCON DCD 0 x00000700;BANKCON0 DCD 0 x00000700 ;BANKCON1 DCD 0 x00000700 ;BANKCON2 DCD 0 x00000700 ;BANKCON3 DCD 0 x00000700 ;BANKCON4 DCD 0 x00000700 ;BANKCON5 DCD 0 x00018005 ;BANKCON6 DCD 0 x00018005 ;BANKCON7 DCD 0 x008c04F3;REFRESH

28、 DCD 0 x00000032 ;BANKSIZE DCD 0 x00000030 ;MRSRB6 DCD 0 x00000030 ;MRSRB7END;供引用文件用的汇编结束伪指令【例2-7】是一个在SDRAM中,起始地址为0 x30000000的LED闪烁驱动程序。显然,对一些任务不太复杂或有特殊要求的程序,可以使用汇编语言来编写。但对于任务比较复杂的大型程序而言,如果完全使用汇编语言编写,无疑会给程序员一种灾难降临的感觉:编程效率低下、不易纠错、不易交流、不易移植。我们非常希望能够使用如C、C+等面向过程、面向对象的语言,能够在大量标准库函数的支持下,高效率、高质量地编写程序,完成对嵌

29、入式系统的开发。在ADS环境的支持下,上述想法的实现会变得易如反掌。对程序员而言,要解决的问题不外乎2个:S3C2440启动后如何进入C语言环境、C语言与汇编语言之间参数是如何传递的,遵循的规则是什么。通过对【例2-9】-【例2-13】的跟踪调试,详细回答了这些问题。我们现在之所以可以使用开发板上的Nand Flash下载程序,是因为在安装H-JTEG时,已经安装了对Nand Flash的初始化程序。使得我们可以利用H-JTEG对其进行读、写、擦除等操作。一般情况下,用户不需对Nand Flash再进行初始化。2-9Nand Flash的初始化下面我们简单谈一谈Nand Flash是如何组织数

30、据、是如何初始化的如果将Nand Flash作为S3C2440的一个硬盘,那么应该完成的主要任务就是对指定位置数据的读写、校验和擦除。S3C2440本身集成有Nand Flash控制器,其接口可直接与Nand Flash相接,如图2-11所示。S3C2440通过IO0IO7数据线向Nand Flash发送命令、地址并与之与进行数据交换。K9F2G08 Nand Flash S3C2440的Nand Flash接口图2-11 S3C2440的Nand Flash接口【例2-14】是一个对型号为K9F2G08的 Nand Flash进行初始化和读出的例子。到此,我们似乎已经有了足够的、可利用的S3

31、C2440的资源了:足够的速度、足够的内存、足够的外存、足够的外部设备接口、。实际上,光有这些是不够的。我们还没有涉及到S3C2440中的一个重要资源:中断。一个没有中断参与的程序,必然是功能简单的、效率低下的和非实时处理的程序。S3C2440的中断组织就比我们学习过的单片机的中断组织要复杂很多。2-10S3C2440对中断的组织S3C2440的工作模式S3C2440共有7种工作模式,系统复位时,S3C2440进入管理模式。我们前面所讲述的各种例子都是在管理模式下运行的。而在嵌入式系统中,绝大多数应用程序是在用户模式下执行的。与单片机类似的中断主要有普通中断模式IRQ、快速中断模式FIRQ和指

32、令中断。不同的中断进入不同的工作模式,我们这里主要涉及的工作模式主要有:用户模式USR(User Mode)快速中断模式FIQ(Fast Interrupt Mode)中断模式IRQ(Interrupt Mode)管理模式SVC(Supervisor Mode)其他工作模式主要用于支持操作系统的工作。中断入口是以中断(异常)矢量表的形式出现的。表2-35 S3C2440的中断(异常)矢量表低地址 高地址中断(异常)类型进入模式优先级0 x0000 0 xFFFF0000复位SVC模式10 x0004 0 xFFFF0004读取未定义指令UND模式60 x0008 0 xFFFF0008SWI指

33、令中断SVC模式60 x000C 0 xFFFF000C预取指令终止IABT模式50 x0010 0 xFFFF0010数据终止DABT模式20 x0014 0 xFFFF0014保留未定义未定义0 x0018 0 xFFFF0018中断申请(如果I=0)IRQ模式40 x001C 0 xFFFF001C快速中断申请(如果F=0)FIQ模式3说明:S3C2440中断(异常)矢量表的地址受协处理器CP15的c1寄存器(Control Register)中V位(bit13)的控制。如果V=1,则中断矢量表的地址为0 x000000000 x0000001f;如果V=0,则为0 xffff00000

34、 xffff001f。系统复位后,默认V=1,即中断(异常)矢量表位于低地址。FIQ的响应方式与IRQ有所不同:FIQ不经优先级仲裁;FIQ下备份寄存器较多,可以省去许多保护现场寄存器的操作;在中断矢量表中,FIQ的地址最高,可直接进入中断服务,从而省去了调用子程序的时间。另外,FIQ比IRQ有更高的优先级,如果FIQ和IRQ同时产生,那么FIQ先处理。这些因素都使得对FIQ的响应较对IRQ响应来的快。以指令中断为例,观察中断过程,见【例2-16】。S3C2440对中断源的组织这里指的中断源是由外部接口信号触发而产生IRQ和FIQ中断的中断源。S3C2440支持60个中断源,通过32路中断申请

35、信号,经由二级优先级仲裁器向S3C2440提起IRQ中断。32路中断申请信号,由23路独立中断源和9路复用中断源(内含37个中断源)组成。S3C2440对优先级仲裁器的组织如图2-15所示。图2-15 S3C2440对优先级仲裁器的组织表2-37 S3C2440的复用中断源复用中断申请信号复用中断申请信号的中断源说明EINT4_7外部中断源EINT4、EINT5EINT7外部中断源EINT4EINT23共20个,占用2路中断申请信号,可通过EINTMASK寄存器屏蔽不需要的中断。响应中断后,可通过EINTPEND寄存器判断中断源。其余为子中断源共17个,占用7路中断申请信号。除LCD外的15的

36、子中断源可通过INTSUBMSK寄存器屏蔽不需要的中断。响应中断后,可通过SUBSRCPND寄存器判断中断源。LCD的两路子中断源,可通过LCDINTMSK屏蔽寄存器对其进行屏蔽。响应中断后,可通过LCDSRCPND寄存器判断中断源。EINT8_23EINT8、EINT9EINT23LCD子中断源INT_FrSyn、INT_FiCntINT_CAMINT_CAM_C、INT_CAM_PINT_ADCINT_ADC_S、INT_TCINT_WDT_AC97 INT_WDT、INT_AC97INT_UART0 INT_RXD0、INT_TXD0、INT_ERR0INT_UART1 INT_RXD1

37、、INT_TXD1、INT_ERR1INT_UART2 INT_RXD2、INT_TXD2、INT_ERR2接下来的事情就是对中断控制器的初始化了。【例2-17】汇编语言的中断编程框架示例这个框架程序加载到内存之后,内存的使用状态如图所示。【例2-18】C语言的中断编程框架示例在这个例子中,要特别注意2440Reg_addr.h文件中中断入口散转表的定义。有了上述各节的讲述,对S3C2440的开发框架已经成型,接下来就是对其各种外部设备的使用关键是对外部设备的初始化。2-11 HYPERLINK l _Toc321383251 S3C2440 TFT型液晶显示器的使用对TFT显示器而言,S3C

38、2440 LCD控制器的主要特性如下:支持每像素点1、2、4、8位调色板显示模式;支持16、24位非调色板真彩显示模式;支持分辩率为640 x 480、320 x 240、160 x 160及其它多种规格的LCD;S3C2440内置LCD控制器内集成有支持LPC3600时序的 LTS350Q1-PD1/2反射式和支持LCC3600时序的LTS350Q1-PE1/2透射式TFT LCD时序控制器的标准接口(注: LPC3600、LCC3600是支持三星公司自己LCD产品的两款LCD控制器。PD2、PE2型LCD不带触摸功能)。接口的标准化,意味着凡符合该标准或与之兼容的TFT显示器均可直接配用,

39、无需外接硬件。要想正确使用LCD必须注意3个问题:1、LCD控制时序;2、显示缓存区及LCD彩色模式;3、LCD控制器初始化。 HYPERLINK l _Toc321383252 S3C2440内置LCD控制器介绍 HYPERLINK l _Toc321383253 TFT 型LCD的控制时序LCD有三个重要的时序信号:VSYNC垂直(帧)同步信号。在每进行一个帧的扫描之前,垂直同步信号有效一次,由该信号可以确定LCD的帧频,即每秒屏幕刷新的次数。HSYNC水平(行)同步信号。在每进行一行的扫描之前,水平同步信号有效一次,由该信号可以确定LCD的行频,即每秒屏幕从左到右扫描一行的次数。VCLK

40、像素时钟信号,每扫过一个像素,该信号就有效一次。典型的TFT LCD时序图如图2-20所示。从时序图可以看出,对于一个已知尺寸(水平显示尺寸HOZVAL和垂直显示尺寸LINEVAL已知)的LCD屏,只要确定了VCLK值,行频和帧频就知道了。各信号与LCD屏幕之间关系示意图。 HYPERLINK l _Toc321383254 显示缓存区及TFT LCD彩色模式如上面所述,S3C2440内置LCD控制器支持多种彩色模式。这里,仅对常用的TFT型显示器的16位(R5G6B5格式,也称RGB565格式)和24位(R8G8B8格式,也称RGB888格式)非调色板真彩显示模式做一说明。16位非调色板真彩

41、显示模式是指每像素点由16位二进制数码组成,也称16位位图。根据彩色位分配方式,有多种16位位图格式:R5G6B5、R5G5B5X1(有1位不携带信息)、R5G5B5A1(有1位数据表示透明度)、R4G4B4A4(有4位数据表示透明度)等。对于S3C2440所支持的R5G6B5图像格式而言,图像数据在显示缓存区内的排布方式有两种,如图2-23所示。 方式1 方式2注:SBWP、HWSWP为LCDCON5寄存器对应位设置值图2-23 R5G6B5格式图像数据在显示缓存区内的排布方式R5G6B5格式,以字为单位,每字代表2个显示点(像素)。每个显示点对应的二进制排列为:(高位)RRRRRGGGGG

42、GBBBBB(低位)。对应R、G、B下的数值分别代表R、G、B信号的强度。具体选择哪种图像数据的排布方式,视编程人员的习惯而定。24位非调色板真彩显示模式是指每像素点由24位二进制数码组成,也称24位位图。24位位图格式只有一种:R8G8B8。对于S3C2440所支持的R8G8B8图像格式而言,图像数据在显示缓存区内的排布方式有两种,如图2-24所示。 方式1 方式2注:SBWP、HWSWP、BPP24BL为LCDCON5寄存器对应位设置值图2-24 R8G8B8格式图像数据在显示缓存区内的排布方式R8G8B8格式,以字为单位,每字代表1个显示点(像素)。若按方式1排列,每个显示点对应的二进制

43、排列为:(高位)xxxxxxxxRRRRRRRRGGGGGGGGBBBBBBBB(低位),x表示无效位,对应R、G、B下的数值分别代表R、G、B信号的强度。具体选择哪种图像数据的排布方式,视编程人员的习惯而定。【例2-20】为 HYPERLINK l _Toc321383256 LCD初始化编程示例2-12 HYPERLINK l _Toc321383257 S3C2440的ADC和电阻式触摸屏的使用 HYPERLINK l _Toc321383258 四线电阻式触摸屏的工作原理S3C2440的ADC和触摸屏控制原理图如图2-27所示。 图2-27 ADC和触摸屏控制原理图触摸屏工作时, AV

44、DD在触摸屏控制时序的控制下交替向XP、YP端子施加电压,同时XM、YM端子交替接地。于是,两个导电层分别通过XP(X轴方向,例如位于上层ITO)、YP(Y轴方向,例如位于下层ITO)交替通电。当手指接触屏幕,两层ITO导电层出现一个接触点。若此时在X轴方向导电层(XP, XM)上加上电压,则XM端子接地,同时YM端子与地断开。于是,在YP端子可以测得接触点处的电压,根据该电压即可折算出该处的X坐标。然后,将电压切换到底层电极(YP,YM)上,此时YM端子接地,同时XM端子与地断开。于是,在XP端子可以测得接触点处的电压,根据该电压即可折算出该处的Y坐标。四线电阻式触摸屏的输入坐标识别精度可以

45、做到有效长宽的1/210。X、Y位置电压测量条件如表2-41所示。表2-41 四线电阻式触摸屏X、Y位置电压测量条件XPXMYPYMX位置电压测量外部电压GND(地)AIN5(高阻输入)Hi-Z(高阻状态)Y位置电压测量AIN7(高阻输入)Hi-Z (高阻状态)外部电压GND (地)触摸屏控制时序中还有一种状态用于检测触摸中断。XP端子“上拉”被接输入(相当于XP通过一个电阻接AVDD)、XM端子高阻、YP端子接输入、YM端子接地,则当触摸屏被按下时,XP端子会产生触摸屏中断信号INT_TC。通过控制原理图可以看出,如果关断触摸屏控制时序,使XP、YP端子与电源断开、XM、YM端子与“地”断开

46、,则XP、XM、YP、YM端子就成为普通的ADC输入端子,汇同AIN3:0构成ADC的8路用于一般目的模拟量输入,通过ADCTSC寄存器的设置可以达到这一目的。【例2-21】 HYPERLINK l _Toc321383260 ADC和触摸屏编程示例2-13 HYPERLINK l _Toc321383261 S3C2440中的各类定时器的使用 HYPERLINK l _Toc321383262 看门狗Watch dog的使用S3C2440中有一套看门狗电路,其本质是一个定时器电路(Watch Dog Timer)。图2-28是S3C2440看门狗电路结构图。【例2-22】看门狗测试程序 HY

47、PERLINK l _Toc321383263 实时时钟RTC的使用S3C2440中有一套实时时钟RTC电路【例2-23】实时时钟RTC测试程序2-14 HYPERLINK l _Toc321383264 S3C2440定时器与PWM接口的使用 HYPERLINK l _Toc321383265 定时器与PWM接口的结构PWM信号的生成过程 HYPERLINK l _Toc321383266 定时器与PWM接口初始化【例2-24】 HYPERLINK l _Toc321383267 定时器编程示例 PAGEREF _Toc321383267 h 2-15 HYPERLINK l _Toc321

48、383268 S3C2440 串行接口(UART)的使用 HYPERLINK l _Toc321383269 UART控制器的结构【例2-25】 HYPERLINK l _Toc321383270 串行口的初始化及 HYPERLINK l _Toc321383271 应用举例2-16 HYPERLINK l _Toc321383272 S3C2440 I2C接口的使用开发板上有一块与S3C2440 I2C接口直接连接的EEPROM芯片AT24C08供用户测试I2C总线,也可作为外部存储器使用,其容量为1K字节。AT24C08与S3C2440 I2C接口的连接电路图如图2-34所示。 HYPER

49、LINK l _Toc321383274 I2C接口的读写框图【例2-26】 HYPERLINK l _Toc321383275 I2C接口的编程示例2-17 HYPERLINK l _Toc321383276 S3C2440 DMA控制器的使用DMA(Direct Memory Access),从字面意义上理解就是直接内存存取是一种不经过CPU而直接从内存存取数据的数据交换模式。在需要进行大量数据交换的场合,合理使用DMA,可以大大提高系统的性能。在DMA控制器初始化完成后,就处于待命状态。如果相关IO接口(硬件请求源)或相关程序(软件请求源)提出DMA申请,DMA向总线裁决逻辑提出总线请求

50、,当CPU执行完当前总线周期即可释放总线控制权。之后,在DMA控制器的控制下,由DMA控制器发出读写命令,控制存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。换句话说,此时,由DMA控制器直接掌管相关总线,控制着数据的传输过程。而此时的CPU或等待或只执行内部操作。S3C2440提供了4个DMA通道,他们不仅可以实现内存之间的数据交换,还可以实现内存与外部设备,以及外部设备与外部设备的数据交换。【例2-27】 HYPERLINK l _Toc321383278 DMA控制器编程示例2-18 HYPERLINK l _Toc321383279 S3C2440的内存管理单

51、元MMU现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,需要处理器中的MMU(Memory Management Unit)内存管理单元提供支持。一般而言,如果将S3C2440作为高档单片机使用,完成的功能不太复杂时,无需使用MMU。但如果我们的软件要完成功能比较复杂的应用,则必须在操作系统的支持下完成。此时,就要涉及到MMU的应用。 HYPERLINK l _Toc321383280 MMU的基本概念 HYPERLINK l _Toc321383281 MMU的映射原理MMU工作时,虚拟地址空间被分成大小相同的一组页,每个页有一个页号。同样,物理地

52、址空间也被分成了与页容量相同的一组页框,每个页框有一个页框号。而一个具体的虚拟地址被MMU分为2个部分,第一部分是页号索引,表明该地址位于虚拟地址的第几页,第二部分是相对该页虚拟首地址的偏移量。对16位CPU而言,若将其分成16页,每页4K。显然,应有4位作为页号索引(24=16),剩余的12位作为相对该页虚拟首地址的页内偏移量(212=4096)。以执行指令MOVREG,0 x800C为例,当虚拟地址被送进MMU,其二进制码如图所示。该虚拟地址的页号索引为二进制1000,既该虚拟地址在虚拟内存的第8页。第二部分为二进制000000001100,表示该虚拟地址相对虚拟内存的第8页首地址的偏移为

53、0 xC。经MMU映射后,虚拟内存8号页程序对应页框号为1,其物理地址空间是0 x10000 x1FFF。于是MMU根据下式计算出虚拟地址0 x800C被映射成的物理地址为 物理地址=虚拟内存页的对应页框号页容量(字节)+偏移量=1x4K+0 xC=0 x1000+0 xC=0 x100C同理,若将其分成32页,每页2K字节时,则需有5位作为页号索引(25=32),剩余的11位作为相对该页虚拟首地址的偏移量(211=2048)。 HYPERLINK l _Toc321383282 S3C2440的MMU设置 HYPERLINK l _Toc321383283 段映射 HYPERLINK l _

54、Toc321383284 粗页表映射 HYPERLINK l _Toc321383285 细页表映射 HYPERLINK l _Toc321383286 MMU段映射编程示例2-19 HYPERLINK l _Toc321383287 用Scatter文件组织程序 HYPERLINK l _Toc321383288 什么时候使用Scatter文件使用分散加载描述文件(Scatter文件)编程主要用于下面一些场合:存在复杂的地址映射:例如代码和数据需要分别放在多个区域。存在多种存储器类型:例如包含Flash、ROM、SDRAM,需根据代码与数据的特性把他们放在不同的存储器中。函数的地址固定定位:

55、可以利用Scatter文件实现把某个函数放在固定地址。利用符号确定堆栈位置。内存映射的IO:利用Scatter文件可以实现把某个数据段放指定的地址。【例2-29】 HYPERLINK l _Toc321383289 Scatter文件的编写和应用Scatter文件有多种编法和规则,熟练使用Scatter文件组织我们的程序,会使得程序的编写和组织更加灵活。第3章基于linux操作系统的嵌入式系统开发环境的建立由于S3C2440强大的功能以及丰富的外设接口资源,在第二章学习的基础上我们已经可以利用S3C2440组成一个功能强大的嵌入式系统了。3-1嵌入式系统为什么要配用操作系统一般而言,在8位或1

56、6位嵌入式系统应用中,由于微处理器资源量比较少,当系统所完成的任务比较简单时,程序员可以在应用程序中管理微处理器资源。如果系统所完成的任务比较复杂,特别是采用32位微处理器时,情况就完全不同了。32位微处理器的资源量非常大,处理能力也非常强,如果还是采用手工编写微处理器的管理程序,面对复杂的应用,很难发挥出32位微处理器的处理能力,程序的可靠性也不易保证。由32位嵌入式微处理器S3C2440组成的嵌入式系统就属于这种情况。为了保证系统的可靠运行,同时高效地组织、利用微处理器资源,往往为这类系统加装操作系统,使其成为具有操作系统支持的嵌入式系统。使用操作系统支持嵌入式系统的优点可以归纳为以下几个

57、方面:利用操作系统提供的并发操作机制,可以方便地处理多进程、多线程应用,使复杂程序的编写变得简单。将系统的硬件资源交由操作系统管理。与硬件资源的信息交换通过规范化操作设备文件完成,用户只需按照规定的格式编写应用程序即可方便地使用这些硬件资源。将中断组织、内存管理、文件系统、进程调度等复杂的软件管理工作交由操作系统负责,用户只需按照规定的格式编写应用程序或利用操作系统提供的命令即可使用这些系统软件资源。利用操作系统对网络的完美支持,可以将嵌入式系统快速地纳入网络系统。利用操作系统支持下的各种高级语言,如C、C+、java以及相关专业的程序库,如Opencv、Sql Server等即可方便、快捷、

58、高效地完成复杂任务。如图形图像的处理、数据库管理等。使系统具有较高的可靠性。以上几点都会使嵌入式系统开发人员可以将尽可能多的精力放在应用程序本身,方便、快速地完成应用系统的集成。简言之,配有操作系统的嵌入式系统可以最大限度地利用微处理器的资源、最大限度地实现各类资源共享、最大限度地节省开发时间、最为优化地完成更为复杂的任务。目前,在嵌入式系统上配用的主流操作系统主要有:WinCE、Linux等。针对实时性要求较高的嵌入式系统,可配用嵌入式实时操作系统,如:VxWorks、RTLinux、C/OS-II等。鉴于应用对象和系统组成的不同,嵌入式系统所配用的操作系统应具有下列特点:可裁剪、可支持多种

59、外部设备、软件资源丰富、具有实时性等以满足针对各种需求、组成形式各异的嵌入式系统的需要。3-2建立嵌入式系统开发环境如同第2章中建立S3C2440的ADS开发环境类似,当为S3C2440配上操作系统后,就应该建立相应的开发环境。显然,如果嵌入式系统配用的是Linux操作系统,若要对其进行开发,就应构造Linux操作系统下的开发环境,最终目的就是将我们编写的应用程序,放在嵌入式系统上执行。为什么要建立开发环境?试想,如果我们在PC机上,开发一个供PC机使用的应用程序,可以非常方便地在PC上编程、编译、调试、执行。这是因为PC机上有足够的资源为我们提供了一套完美的开发环境。而嵌入式系统由于其用途与

60、通用计算机的差异,他的配置资源是有限的,虽然可以“借用”终端,使其更像一台完整的计算机,但较小的内存、外存和简单的外设还是限制了其对资源的配置。例如:没有足够的空间配置功能强大的编辑、编译、调试软件,这就使其不能象在PC机上开发程序那样便捷、高效。为此,在进行嵌入式系统开发时,首先要做的事情应该是建立开发环境。目的是为了能够象在PC机上开发应用程序一样便捷、高效地开发嵌入式系统应用程序。3-3建立嵌入式系统开发环境的步骤这个过程是一个非常繁琐的过程,也是嵌入式系统开发人员必须经历的一个过程。一个良好、稳定的开发环境将为后续的工作带来极大方便。在PC机上建立Linux操作系统的虚拟机。目的,在P

温馨提示

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

评论

0/150

提交评论