毕业设计 - 电子密码锁

发布时间 : 星期四 文章毕业设计 - 电子密码锁更新完毕开始阅读

(4)具有外部请求引脚的4通道DMA;

(5)3通道UART(IRDA1.0,16-Byte Tx FIFO和16-Byte Rx FIFO)/2通道SPI;

(6)1通道IIC总线控制器/1通道IIS总线控制器;

(7)1.0版本的SD主机接口和兼容的2.11版本Multi-Media卡协议; (8)2个USB主机/1个USB设备(USB1.1); (9)4通道PWM计时器/1通道内部计时器; (10)看门狗电路;

(11)117个通用I/O口/24通道外部中断源; (12)电源控制:常规、缓慢、空闲和断电模式; (13)8通道10位ADC和触摸屏接口; (14)具有日历功能的实时时钟RTC; (15)具有锁相环的片上时钟发生器。

3.5 基于ARM9平台的电子密码锁系统

ARM采用16/32位双指令系统[7]的微处理器,具有一系列优异的性能,功耗低,使用门的数量少。ARM结构基于精简指令集计算机(RISC)原理设计,实现了高的指令吞吐量;具有出色的实时中断响应和高性价比的处理器宏单元。ARM核中自带了DSP功能,既可以执行算法还可以进行事务处理,并且ARM的处理速度不断增加,现在流行的ARM9内核执行速度己经达到203M左右。ARM的存储空间,可以达到232。由于ARM技术方案架构具备低功耗、高效能、低成本以及小体积等特性,使得ARM得到了众多的知识产权授权用户。基于ARM的技术方案将是最具市场前景和市场优势的解决方案。采用ARM系统可以进行USB驱动、IDE驱动、蜂窝电话、网络设备等多种高端产品的开发。因此基于ARM的电子密码锁系统具有更广阔的市场前景和技术优势。

4 嵌入式操作系统μC/OS-II

随着嵌入式系统复杂程度的不断提高,对CPU处理能力的要求越来越高,在CPU上开发程序的复杂度使得以前针对嵌入式系统的简单控制流程已不适合系统的要求,这就迫使用户使用嵌入式实时操作系统(RTOS)[4]。用户使用RTOS

可以直接调用操作系统提供的函数编写自己的应用程序,无需另行开发,这就大大缩短了开发周期,提高了开发效率。当前通行的较为复杂的嵌入式系统构成如图4-1所示:

应 用 软 件 嵌入式操作系统软件平台 嵌入式系统 以微处理器/微控制器为核心的嵌入式平台

图4-1 嵌入式系统构成图

4.1 μC/OS-II简介

μC/OS-Ⅱ[6]是由Jean.J.Labrosse编写的一个源码公开的嵌入式操作系统[2],这一点对于用户来说可谓利弊各半:好处在于,它是免费的,而且用户可以根据自己的需要对它进行修改;缺点在于,它缺乏必要的支持。它没有功能强大的软件包,用户通常需要编写自己的驱动程序。

μC/OS-Ⅱ与应用程OS_CODE.C OS_Q.C 序相关的代码 OS_FLAG.C OS_SEM.C OS_MBOX.C OS_TASK.C OS_CFG.H μC/OS-Ⅱ与处理器无关的代码 OS_MEN.C μC/OS_Ⅱ.C OS_MUTEX.C μC/OS_Ⅱ.H INCLUDES.H μC/OS-II HAL μC/OS-Ⅱ与处理器相关代码 OS_CPU.H (移植时需要修改) OS_CPU_A.ASM OS_CPU_C.C 图4-2 μC/OS-Ⅱ体系结构图

4.2 μC/OS-Ⅱ系统的特点

μC/OS-Ⅱ是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。通常都是在中断服务程序中使高优先级任务进入就绪态(例如使用发送信号的方法),退出中断服务程序后,将进行任务切换,高优先级任务被执行。μC/OS-Ⅱ,只要把数据处理程序的优先级设定的高一些并在中断服务程序中使它进入就绪态,中断结束后数据处理程序就会被立即执行。这样可以把中断响应时间限制在一定的范围内。对于一些对中断响应时间有严格要求的系统,这是必不可少的。但是如果数据处理程序简单,这样做就未必合适。因为μC/OS-Ⅱ要求在中断服务程序末尾使用OSINTEXIT函数以判断是否进行任务切换,这需要花费一定的时间。

μC/OS-Ⅱ和大家所熟知的Linux等分时操作系统不同,它不支持时间片轮转法。它是一个基于优先级的实时操作系统。每一个任务必须具有不同的优先级(分析它的源码会发现),μC/OS-Ⅱ把任务的优先级当作任务的标识来使用,如果优先级相同,任务将无法区分。进入就绪态的优先级最高的任务首先得到CPU的使用权,只有等它交出CPU的使用权后,其他任务才可以被执行。所以只能说它是多任务,不能说是多进程至少不是人们所熟悉的那种多进程。μC/OS-Ⅱ的这种特性是好是坏,主要看从什么角度来判断了。显而易见,如果只考虑实时性,它当然比分时系统好,它可以保证重要任务总是优先占有CPU。但是在应用系统中,重要任务毕竟是有限的,这就使得划分其他任务的优先权变成了一个让人费神的问题。另外,有些任务交替执行反而对用户更有利。

μC/OS-Ⅱ对共享资源提供了保护机制正如前文所述,μC/OS-Ⅱ是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。对于共享资源(例如串口),μC/OS-Ⅱ也提供了很好的解决办法。一般情况下使用的是信号量的方法。简单地说,先创建一个信号量并对它进行初始化。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量。而一旦它得到了此信号量,那就只有等它使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就

绪态,因为无法得到此信号量,也不能使用该资源。

4.3 μC/OS-Ⅱ的任务

在小型应用中,通常一个嵌入式系统中的程序模块同属于一个统一的任务—对宿主对象进行控制。因此,通常认为在嵌入式系统中只有一个进程,而把这个进程进行分解之后的那些小程序模块,由于他们没有自己的内存空间,所以它们实质上就是线程。在μC/OS-Ⅱ中,习惯把这样的线程叫做任务,或者叫做实时任务。

实时系统中任务的执行大多数都是由外部事件触发的,也就是说,实时操作系统的主要工作就是响应并处理各种外部事件。

从外部事件的形式来看,主要有三种形式: (1)异步事件; (2)周期性事件;

(3)异步事件与周期性事件的组合。

因此,作为实时系统,对于每个事件都应对应有一个处理这个事件的程序模块,这些程序模块就是任务。例如,键盘的每个键被按下时,都应对应一个键处理任务。再如,过程控制中的定时监测系统,就需要一个硬件或软件的定时器控制下,定时、周期地激活相应的实时任务。

由于μC/OS-Ⅱ是一种可剥夺型内核,所以只要没有更高优先级别的任务来抢夺当前任务的处理器使用权,那么当前任务就会一直占用处理器,为此任务的代码应是一个由FOR()语句实现的无限循环。

4.4 μC/OS-Ⅱ任务的存储结构

从应用程序设计的角度来看,μC/OS-Ⅱ的任务就是一个线程,是一个用来解决用户问题的C函数和与之相关联的一些数据结构而构成的一个实体。

从任务的存储结构来看,任务有三个组成部分:任务程序代码、任务堆栈和任务控制块。其中,任务控制块用来保存任务属性;任务堆栈用来保存任务工作环境;任务程序代码是任务的执行部分。如图4-3(a)所示。

任务控制块存放了指向任务执行代码的指针和存放任务私有数据的存储区—任务堆栈的指针,所以任务控制块是系统管理任务的依据。换句话说,系统只要掌握了一个任务的任务控制块,那么通过任务控制块就能找到它的可执行代

联系合同范文客服:xxxxx#qq.com(#替换为@)