《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于AT91SAM9260的智能保密柜设计方案
基于AT91SAM9260的智能保密柜设计方案
现代电子技术
刘会文,童小念,王
摘要:  本文基于工业级AT91SAM9260处理器设计了一个智能保密柜嵌入式控制系统。系统采用指纹比对进行物品权限的管理,拍照系统自动记录物品出入情况,系统具有报警功能。该系统嵌入了高性能、多任务的实时操作系统Linux,该操作系统具备源代码开放,内核体积小,占用系统资源少等优点,保证了系统的可靠性和实时性。
Abstract:
Key words :

引言

  金属保密柜管理模式存在人为因素的安全隐患和记录信息不够详细等缺点,若能实现对物品的智能管理,自动记录物品日志,势必能提高保密柜管理的质量和效率。

  本文基于工业级AT91SAM9260处理器设计了一个智能保密柜嵌入式控制系统。系统采用指纹比对进行物品权限的管理,拍照系统自动记录物品出入情况,系统具有报警功能。该系统嵌入了高性能、多任务的实时操作系统Linux,该操作系统具备源代码开放,内核体积小,占用系统资源少等优点,保证了系统的可靠性和实时性。
 

  1 系统硬件设计

  1.1 智能保密柜硬件结构

  智能保密柜系统由上位PC和下位智能保密柜组成,其硬件结构如图1所示。

  

智能保密柜硬件结构

 

  上位PC机可对下位智能保密柜的状态和物品记录信息等进行查询。下位智能保密柜由智能控制计算机、双屏读写器、摄像头、指纹仪、状态灯、数字键盘、振动传感器、电控锁和报警器等部件组成,其功能如下:摄像头用于对保密柜使用人员进行抓拍操作;刷卡器用于保密柜使用人员可刷卡打开相应权限的柜门;指纹读头用于提供更高级别的生物权限管理柜门;数字键盘用于当保密柜使用人员拥有多柜门权限时,输入柜门号;显示屏用于显示操作结果;报警器用于当发生非法操作时报警;双频读写器用于采集涉密载体上双频标签的数据;振动传感器用于传感柜体振动信号,防止非法入侵;智能控制计算机用于控制柜内所有设备,保证智能保密柜能够脱离上位机独立运行。

  物品使用者在借出和归还物品前,先通过指纹采集器输入指纹,中央控制系统通过指纹比对和相应授权信息开启柜门,同时摄像头对使用者进行拍照。使用者此时可以取出和归还物品,当关闭柜门后,中央控制系统启动RFID读写器采集柜内物品信息,并与前次信息对比,自动得出使用者该次操作借出和归还的物品;最后中央控制系统将开门时间、使用者图像、借出和归还物品等相关信息记录到存储区。管理员可以通过上位PC随时查询物品借出和归还的详细记录。该系统还提供非正常情况下的报警功能,以提高安全性。

  1.2 硬件电路层

  该系统中央控制硬件电路逻辑如图2所示。

  

中央控制硬件电路逻辑

 

  中央处理器选用Atmel公司的AT91SAM9260芯片,它基于ARM926EJ-S内核的32位处理器,工作频率为190 MHz,指令运行速度为210 MIPS,内带8 KB指令和8 KB的数据高速缓存,8 KB的SRAM和32 KB的ROM,可在处理器与总线速度之间单周期访问。具有丰富的外围接口,包括USB全速HOST和Device接口、10M/100M BaseT、以太网MAC、图像传感器接口、多媒体卡接口(MCI)、同步串行控制器(SSC)、4个通用同步/异步收发器(USART)、2个两线异步收发器(UARTs)、主/从串行外围接口(SPI),以及1个三通道16 b定时控制器(TC)、2个两线接E1(TWI)、4个10 b ADC、3个32 b并行I/O控制器,外设采用DMA通道。

  上位PC通过RJ-45接口电路接入ARM的UART1口,双频读写器、刷卡器、数字键盘和指纹仪接入RJ-45接口电路,再分别接入ARM的UART2-5口,摄像头通过USB口连接ARM的USB主机端口。ARM输出的电控锁和报警器控制信号,经过ULN2003A运放芯片控制直流小继电器,驱动电控锁和报警器工作。振动传感器通过74L804反相输出到ARM的输入I/O管脚。NANDFLASH直接与ARM的I/O管脚连接。2 嵌入式操作系统

 

  

嵌入式操作系统的三层结构

 

  该系统由内向外可分操作系统层、任务层和硬件电路层三层,如图3所示。嵌入式操作系统是嵌入式系统软硬件资源的控制中心,它组织多个任务共享嵌入式系统的资源。常见的嵌入式实时操作系统有Window CE,VxWorks,μC/OS-Ⅱ,Linux等,后两种操作系统免费公开源代码。

  2.1 嵌入式操作系统方案选择

  为了选择合适的嵌入式操作系统,本文对开源的μC/OS-Ⅱ与Linux操作系统的进程调度、文件系统支持和系统移植等因素进行了分析比较,因为这是设计、应用、移植嵌入式操作系统中的关键。

  (1)进程调度

  进程调度是操作系统协调调度系统中多任务对计算机系统内部资源的争夺使用。作为实时操作系统,μC/OS-Ⅱ采用可剥夺型实时多任务内核,它在任何时候都运行已就绪的最高优先级任务。μC/OS-Ⅱ最多可以支持64个任务,它通过就绪任务表寻找最高优先级任务,并进行任务切换。

  Linux操作系统则每隔一定时间挂起进程,同时系统产生快速和周期性的时钟计时中断,通过调度函数决定调用的进程。Linux操作系统每个进程的task_struct结构中有调度策略、静态优先级、动态优先级、时间片、实时优先级等5个参数,Linux根据调度策略区分实时进程和普通进程,实时进程优先于普通进程运行。Linux操作系统对于同一类型的不同进程,采用不同的标准来选择进程:

  ①普通进程调度。当调度策略的值为SCHED_OTHER时,为普通用户进程,Linux采用动态优先调度标准,选择进程的依据是进程time_sli-ce的值。

  ②实时进程调度。对手实时进程,Linux采用了两种调度策略,即先来先服务调度和时间片轮转调度。当调度策略的值为SCHED_FIFO时,选用先来先服务调度规则。当调度策略的值为SCHED_RR时,选用时间片轮转调度规则,即时间片用完则释放CPU,进程排到等待队列末尾。

  (2)文件系统

  文件系统负责存取和管理文件信息。在嵌入式系统里,常见的文件系统有YAFFS,JFFS2,CramFS,RamFS,Ramdisk等。

  μC/OS-Ⅱ操作系统本身没有对文件系统的支持,虽然μC/OS-Ⅱ具有良好的扩展性能,如果需要也可自行扩展对文件系统的支持,但毕竟会增加开发工作量。

  Linux操作系统则具有完善的文件系统,并且具有网络优势,可以方便地支持网络文件系统且内嵌TCP/IP协议,这为Linux开发网络接入设备提供了便利。

  (3)操作系统的移植

  嵌入式操作系统必须经过移植才能够在不同的微处理器上运行。μC/OS-Ⅱ和Linux都提供了开源代码,其结构化设计也便于裁剪,所以它们都能够移植到新的处理器平台。

  ①μC/OS-Ⅱ的移植。移植μC/OS-Ⅱ操作系统,目标处理器必须满足以下要求:处理器的C编译器能产生可重入代码,且用C语言就可以打开和关闭中断;处理器有足够的存储容量作为多任务环境下的任务堆栈;处理器具备将堆栈指针和寄存器读出和存储到堆栈或内存中的指令。所以μC/OS-Ⅱ的移植只需根据以上要求修改不同处理器之间的相关代码。

  ②Linux的移植。

  首先进行系统初始化:关闭Watchdog,改变系统时钟,初始化存储控制器,将操作系统内核复制到内存中。这一系列操作称作BootLoa-der,通常移植U-boot来实现BootLoader的功能;其次进行Linux内核移植:下载内核源代码,对内核进行裁剪配置,编译内核生成镜像文件,下载到目标板;最后进行文件系统的移植:生成根文件系统目录,移植Busybox,生成镜像文件,下载到目标板。综上所述,μC/OS-Ⅱ和Linux二者都具有开源码和满足较高的实时性要求。μC/OS-Ⅱ是一种结构小巧的实时操作系统,其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能,最小内核可编译至2 kB,全部功能编译后内核也仅占6~10 KB。虽然μC/OS-Ⅱ执行效率高,占用空间小,实时性能优良,可扩展性能强,但μC/OS-Ⅱ系统缺少对文件系统的支持,所以μC/OS-Ⅱ适用于存储资源比较有限的应用场合和小的控制系统。然而Linux具有多任务、可定制内核、完善的网络通信、图形及文件管理机制,可支持大量的外围硬件设备等功能,其性能高效稳定,开发及移植环境良好。鉴于该系统需完成多种任务控制和文件管理,且存储资源充裕,也考虑到以后的网络扩展,所以选用了Linux作为嵌入式操作系统。2.2 任务层

 

  基于Linux操作系统管理的应用程序,首先根据系统功能划分出相对独立的子功能模块,每个模块作为一个任务,每个任务又由若干子任务构成,任务之间的调度由Linux内核调度程序决定。该系统划分的任务包括:

  ①读/写UART0任务。主要负责与上位PC进行交互,解析并执行上位PC发来的控制命令,将执行后的结果返回给上位PC。

  ②读/写UART1摄像头任务。在使用者输入指纹时,选通指纹仪接收指纹数据,激活摄像头,对使用者进行拍照,在柜门关闭后选通RFID读写器,采集柜内文件ID信息,比对上次信息,从而得到此次操作后该使用者借出与归还物品的信息。

  ③记录任务。当UART1任务结束RFID读写器的采集任务后,该任务将使用者指纹信息、开关柜门时间、使用者头像和借出与归还文件ID等信息予以存储。

  ④开关柜门任务。识别指纹数据之后,将指纹数据与授权指纹库中的数据进行比较,匹配成功则执行开锁操作。

  ⑤报警任务。循环检测振动传感器,如果发现异常振动,将启动报警器。

  编写好这些任务的代码,启动操作系统,则应用程序开始运行。若要扩展其他功能,只需增加相应的任务即可。

  3 结语

  实验结果表明,该系统满足了用户的保密需求,具有实时处理能力,功能扩展方便,所选用的Linux多任务实时操作系统在进程调度、文件系统管理等方面提供了很好的支持。

此内容为AET网站原创,未经授权禁止转载。