引 言
跟着城市交通的迅速发展,机动车流量急剧添加,使得交通办理面临着新的应战,因为某些驾驶员交通法律意识淡漠,为达意图闯红灯行进,特别是在无交警值守的区域,问题更为严重。电子警察体系,便是将在交通路口抓拍到的违章相片传回操控中心,进行剖析处理和保存,并作为违章依据处分违规的司机。电子警察体系在完结警务作业网络化、现代化、智能化进程中有着重要效果。电子警察一般由三大部分组成,一是相片拍照部分;在红灯信号期间,操控器操控数码相机拍照违章车辆相片,并存储到相机存储卡上。二是相片传输部分;将数码相机存储卡中的相片传送回监控中心。三是相片处理部分;在操控中心,作业人员将相片进行计算处理。相片传输部分常用的办法有人工取图、依据PC的工控机传送两种。人工取图办法消耗很多人力,无法及时获取相片,无法完结主动化操作;依据PC的工控机传送办法,本钱高,体积大,装置不便利。依据ARM的嵌入式体系的呈现处理了以上两种传送办法中的存在的缺陷。
本文首要研讨介绍:(1)嵌入式体系的结构;(2)怎么运用嵌入式操作体系和ARM处理器构建电子警察相片传输设备;(3)介绍此设备的实践运用。
嵌入式体系的结构
嵌入式体系是一个硬件和软件的集合体,由嵌入式微处理器、嵌入式操作体系以及承载操作体系的硬件渠道组成。嵌入式体系软硬兼施,互利互惠,融为一体。
嵌入式操作体系
嵌入式操作体系是嵌入式体系的操控中心,首要用于对体系软硬件调度办理和人机界面加以操控。
嵌入式体系的引导程序
嵌入式体系中引导程序(Bootloader)的效果与PC的BIOS(Basic Input Output System)类似,经过引导程序能够完结对ARM板上的首要部件CPU、SDRAM、Flash、串口等进行初始化操作,并能完结下载文件,Flash擦写等操作。一个功用完善的引导程序相当于一个微型的操作体系。
操作体系内核运转之前,引导程序完结加载内核和一些辅助性的作业,然后跳转到内核代码的开端地址并履行。引导程序能够初始化硬件、树立内存空间映射,然后将体系的软硬件环境带到一个适宜的情况,以便终究调用体系内核。简言之,Bootloader为操作体系供给硬件资源信息,并进一步加载、引导操作体系。
引导程序一般固化在FLASH或ROM中,依据ARM内核的CPU在复位时一般从地址0x00000000取第一条指令。因而,依据ARM的嵌入式体系一般都有某种类型的固态存储设备被映射到这个地址上。体系上电后首要履行Bootloader程序。如图1所示是一个装有Bootloader、内核参数、内核映像和根文件体系映像的固态存储设备空间分配结构图。
嵌入式体系的硬件体系
与PC硬件比较,嵌入式体系的硬件体系具有如下特色:
(1) 体积小,本钱低,集成度高。嵌入式体系去除冗余,力求用最少的硬件资源完结方针功用。
(2) 功耗低,电磁兼容性好,能在恶劣的条件下作业,死机后能够快速重启。
(3) 面向特定的运用。
嵌入式体系的硬件渠道在价格、功用、体积、能耗等方面都有严厉约束。
一般,嵌入式体系硬件渠道首要分为2大部分:一部分为体系主板,为依据ARM的最小体系,包含CPU、Flash、SDRAM、串口等最根本部分;另一部分为体系扩展,供给用于完结各种不同功用的硬件模块。如存储设备,闪存(Flash Memory);通讯设备以太网卡,USB操控器等。
嵌入式体系中的软件
嵌入式体系软件包含与硬件相关的底层软件、操作体系、图形界面、通讯协议、数据库体系和运用软件等。嵌入式体系的软件部分具有以下特色:
(1) 软件代码要求高质量、高功率和高牢靠性。在嵌入式体系中,软件的运转空间有限,内存空间十分宝贵,在程序设计时需求时间考虑软件的运转功率。因为嵌入式设备的作业环境多变,因而嵌入式软件规划需求有质量高、牢靠性高的代码作为确保。
(2) 嵌入式软件开发与硬件紧密联系。嵌入式软件的开发是针对特定的硬件渠道进行的,它牵扯到硬件驱动方面的一些软硬件结合部分。
(3) 软件要求固化。为了进步履行速度和体系的牢靠性,大多数嵌入式体系软件需求固化到体系板的Flash或ROM中。
此外,嵌入式体系软件还需求具有反常处理,快速复位的特色。在实时体系中,软性有必要具有对实时多任务很强的支撑才能,快速呼应并将履行时间削减到最低极限。
体系功用与规划
体系功用
本着既能满意电子警察相片收集传输的实践需求,又尽量节省资源的准则,本体系供给如下功用:
(1) 上位机服务器。向终端宣布数据和指令;接纳终端上传的相片并进行保存处理。可完结人工操作、主动守时操作、单终端操控、一切终端操控功用。
(2) 收集相片。终端设备从数码相机中将相片收集到本地存储器中,以确保在相片传输过程中不影响数码相机正常作业。
(3) 相片传送。经过网络将相片传送至上位机服务器,完结传输智能化。
(4) 网络检测。终端设备能够检测网络通断,确保数据传输正确。
(5) 在线更新。经过上位机能够对终端设备进行参数修正,软件晋级。
体系规划
此体系规划首要是为了满意数码相机中的相片能够安全、及时的传送到操控中心。因而体系选用C/S(客户端/服务器)形式规划,由操控中心的服务器发送指令操控终端设备进行取图传图操作。体系规划框图如图2所示。
终端设备CPU选用Samsung公司的依据ARM7TDMI核的16/32bit、低功耗、高性价比RISC操控器S3C44B0;操作体系选用网络功用强大、牢靠性好、便于移植裁剪、针对无MMU(内存办理单元)操控器的开源操作体系uClinux。
终端设备硬件规划
终端设备硬件规划本着接口标准化、功用模块化、扩展性好、牢靠性高的准则,划分为CPU模块和外设模块。
(1) CPU模块:包含S3C44B0、SDRAM、NOR Flash等体系运转的根本要素,组成嵌入式体系的最小体系。
(2) 外设模块:网络接口、USB HOST接口、RS232通讯接口、NAND Flash。
S3C44B0芯片自身集成了一些通用的外围器材,如UART则直接运用操控器的资源。片内2个UART别离作为操作体系操控台及与相机操控板的通讯接口。将海量存储器NAND Flash、USB操控器SL811、网络芯片RTL8019别离映射于处理器的Bank1、Bank2、Bank4地址空间上,完结外部模块与CPU模块的无缝衔接。其间NANDS3C44B0芯片自身集成了一些通用的外围器材,如UART则直接运用操控器的资源。片内2个UART别离作为操作体系操控台及与相机操控板的通讯接口。将海量存储器NAND Flash、USB操控器SL811、网络芯片RTL8019别离映射于处理器的Bank1、Bank2、Bank4地址空间上,完结外部模块与CPU模块的无缝衔接。其间NAND Flash运用杂乱的I/O口来串行地存取数据,8个引脚用来传送操控、地址和数据信息。各个厂商的办法或许不一样。因而在0x00200000-0x00400000空间中完全能够运用64M×8Bit的NAND Flash存储器。终端设备的硬件框图如图3所示。
终端设备的中心板尺度为:120mm×80mm,体积细巧,接口标准且装置便利。既能够独立运用,又能够作为模块嵌入到其他体系中。
终端设备软件规划
终端设备软件规划遵从的准则是:软件结构化、体系可裁剪定制、驱动标准化、运用程序模块化。软件规划的首要作业是引导程序Uboot移植,操作体系uClinux移植,驱动程序规划,常用API函数封装,多任务多进程的分化与规划,依据Socket的网络编程等。图4 所示为终端设备的软件结构化规划。
在驱动层比较要害的是NOR Flash存储器驱动规划与Kodak Dx6340数码相机USB驱动程序的规划。NOR Flash驱动为完结在线更新功用完结最底层的支撑,确保Bootloader、Kernel、Root filesystem在存储器中精确寄存。值得注意是NOR Flash的擦写有严厉的时序,依据CPU主频不同在擦写过程中参加恰当的延时函数能确保Flash正常作业。因为柯达相机的存储卡在Linux下不能当作大容量存储设备(Mass Storage Device)进行操作,换言之不能当作移动存储在uClinux体系下挂载,因而在进行设备驱动程序规划时应挑选USB设备类驱动,经过厂商标识(Manufacture ID)及产品标识(Product ID)在体系中注册匹配,然后完结驱动功用,数据传输过程中选用批量传输办法。
在运用层,依据Socket的网络编程支撑TCP/IP协议有较好的通用性,能运用于RJ45接口的各种网络环境。相片数据传输恪守PTP协议(PIMA 15740:2000),便于移植。因为运用程序选用模块化规划,终端与服务器通讯选用一个进程,终端获取图片运用一个进程因而进程间通讯显的尤为重要。首要,选用信号作为首要的通讯手法;其次,选用同享内存办法。因为在uClinux内存选用实地址操作,没有内存办理机制,因而在软件规划时笔者选用同享内存的思想在体系未用的内存区域拓荒出一块空间作为同享内存,然后完结进程间通讯。
表1 批量传送图片测验
下面扼要介绍Kodak DX6340数码相机USB驱动程序规划:
(1) 驱动程序的注册:
本程序中数码相机驱动以USB字符型设备来完结,USB设备驱动第一步要做的是经过usb_driver结构向uClinux内核注册自己,告知体系它所支撑的设备类型及操作类型。
static struct usb_driver dx6340_driver = {
name: “dx6340”, // 驱动程序称号
id_table: dx6340_table, // 此结构用于保存设备的厂商ID和产品ID
probe: dx6340_probe, // 用于USB设备勘探枚举例程
disconnect: dx6340_disconnect, // 用于设备的卸载
fops: &dx6340_fops, // 驱动程序的操作类型
minor: USB_DX6340_MINOR, // 设备的次设备号
};
结构成员fops指向一个file_operaTIons结构。这个结构供给根本的I/O操作接口函数open、close、read、write的完结,对中止的处理、内存映射及对I/O通道的操控函数ioctl的完结。经过这个结构,完结了体系调用和驱动程序的相关。在运用程序中宣布文件操作的相关指令时,内核依据这些指针调用相应的函数,然后完结驱动与内核间的通讯。
staTIc struct file_operaTIons dx6340_fops = {
owner: THIS_MODULE, // fops所属规模
read: dx6340_read, // 相机的读操作
write: dx6340_write, // 相机的写操作
open: dx6340_open, // 翻开相机设备
release: dx6340_release, // 封闭相机设备
};
在数据读写read、write函数中运用批量传输办法,调用函数usb_bulk_msg (struct usb_device *usb_dev, unsigned int pipe, void *data, int len, int *actual_length, int TImeout)。
(2) 驱动程序的在体系中的调用
接下来的作业是将设备驱动程序嵌入内核。一般有两种办法,一种是静态编译进内核,另一种是编译成模块。后者能够动态进行加载,利于调试。当体系运用该设备驱动时,调用驱动初始化函数int __init dx6340_init(void){
if (usb_register (&dx6340_driver) 《 0)
return -1;
info(DRIVER_VERSION “:” DRIVER_DESC);
return 0;
}
与之对应,当体系刊出该设备驱动时,则调用驱动刊出函数void __exit dx6340_cleanup(void){
usb_deregister (&dx6340_driver);
}
试验研讨
为了测验该终端设备的作业功能,规划场景进行了现场试验:
(1) 批量传送测验
(2) 网络断开测验
当终端设备衔接到服务器后,将终端设备网线拔掉,模仿网络故障。在网络断开后30秒,终端设备检测到网络故障,进入重连程序,接好网线后,终端顺畅衔接到服务器,并正常作业。
(3) 反常测验
a.模仿串口通讯反常试验。将设备与相机操控板连线断开,设备终端向操控板发送指令测验3次,若无呼应则发送信息至服务器,需求人工检查操控板/相机情况。
b.续传测验。在设备终端向服务器发送图片过程中,将服务器封闭。这时终端设备进入重连程序,等候与服务器从头衔接后,从产生中止时那张相片开端持续向服务器发送图片。
(4) 守时取图测验
上位机守时操作,完结无人职守主动取图。
经过试验标明,该设备具有杰出的安稳性,能够习惯不同的网络环境,能够敷衍不同的反常情况,有较好的通用性。
结 语
本文中规划的电子警察终端设备满意用户规划要求,经现场实践运转,证明了所规划的体系牢靠、安稳。所提出的相片收集传输计划已用于电子警察实践体系中,并完结无人职守主动守时取图,服务器获取相片信息精确无误。关于停电或网络问题形成的反常,设备能够及时进行处理,很好的验证了本计划的可行性和实用性。