基于S3C44B0的嵌入式系统在电子警察中设计与应用.docx
基于S3C44B0的嵌入式系统在电子警察中设计与应用基于S3C44B0的嵌入式系统在电子警察中设计与应用zhangting导语:电子警察系统在实现警务工作网络化、当代化、智能化进程中有着重要作用。随着城市交通的迅速开展,机动车流量急剧增加,使得交通治理面临着新的挑战,由于某些驾驶员交通法律意识淡薄,为达目的闯红灯行驶,十分是在无交警值守的区域,问题更为严重。电子警察系统,就是将在交通路口抓拍到的违章照片传回控制中心,进展分析处理和保存,并作为违章证据处分违规的司机。电子警察系统在实现警务工作网络化、当代化、智能化进程中有着重要作用。电子警察一般由三大局部组成,一是照片拍摄局部;在红灯信号期间,控制器控制数码相机拍摄违章车辆照片,并存储到相机存储卡上。二是照片传输局部;将数码相机存储卡中的相片传送回监控中心。三是照片处理局部;在控制中心,工作人员将照片进展统计处理。照片传输局部常用的方法有人工取图、基于PC的工控机传送两种。人工取图方式消耗大量人力,无法及时获取照片,无法实现自动化操纵;基于PC的工控机传送方式,本钱高,体积大,安装不方便。基于ARM的嵌入式系统的出现解决了以上两种传送方式中的存在的缺点。本文主要研究介绍:1嵌入式系统的构造;2怎样利用嵌入式操纵系统和ARM处理器构建电子警察照片传输设备;3介绍此设备的实际应用。嵌入式系统的构造嵌入式系统是一个硬件和软件的集合体,由嵌入式微处理器、嵌入式操纵系统以及承载操纵系统的硬件平台组成。嵌入式系统软硬兼施,互利互惠,融为一体。嵌入式操纵系统嵌入式操纵系统是嵌入式系统的控制中心,主要用于对系统软硬件调度治理和人机界面加以控制。嵌入式系统的引导程序嵌入式系统中引导程序Bootloader的作用与PC的BIOSBasicInputOutputSystem相似,通过引导程序可以完成对ARM板上的主要部件CPU、SDRAM、Flash、串口等进展初始化操纵,并能完成下载文件,Flash擦写等操纵。一个功能完善的引导程序相当于一个微型的操纵系统。操纵系统内核运行之前,引导程序完成加载内核和一些辅助性的工作,然后跳转到内核代码的起始地址并执行。引导程序可以初始化硬件、建立内存空间映射,进而将系统的软硬件环境带到一个适宜的状态,以便最终调用系统内核。简言之,Bootloader为操纵系统提供硬件资源信息,并进一步加载、引导操纵系统。引导程序通常固化在FLASH或者ROM中,基于ARM内核的CPU在复位时通常从地址0x00000000取第一条指令。因此,基于ARM的嵌入式系统通常都有某种类型的固态存储设备被映射到这个地址上。系统上电后首先执行Bootloader程序。如图1所示是一个装有Bootloader、内核参数、内核映像和根文件系统映像的固态存储设备空间分配构造图。嵌入式系统的硬件系统与PC硬件相比,嵌入式系统的硬件系统具有如下特点:1体积小,本钱低,集成度高。嵌入式系统去除冗余,力争用最少的硬件资源完成目的功能。2功耗低,电磁兼容性好,能在恶劣的条件下工作,死机后可以快速重启。3面向特定的应用。嵌入式系统的硬件平台在价格、功能、体积、能耗等方面都有严格限制。通常,嵌入式系统硬件平台主要分为2大局部:一局部为系统主板,为基于ARM的最小系统,包括CPU、Flash、SDRAM、串口等最根本局部;另一局部为系统扩展,提供用于完成各种不同功能的硬件模块。如存储设备,闪存FlashMemory;通讯设备以太网卡,USB控制器等。嵌入式系统中的软件嵌入式系统软件包括与硬件相关的底层软件、操纵系统、图形界面、通讯协议、数据库系统和应用软件等。嵌入式系统的软件局部具有以下特点:1软件代码要求高质量、高效率和高可靠性。在嵌入式系统中,软件的运行空间有限,内存空间特别珍贵,在程序设计时需要时刻考虑软件的运行效率。由于嵌入式设备的工作环境多变,因此嵌入式软件设计需要有质量高、可靠性高的代码作为保障。2嵌入式软件开发与硬件严密联络。嵌入式软件的开发是针对特定的硬件平台进展的,它牵扯到硬件驱动方面的一些软硬件结合局部。3软件要求固化。为了进步执行速度和系统的可靠性,大多数嵌入式系统软件需要固化到系统板的Flash或者ROM中。此外,嵌入式系统软件还需要具有异常处理,快速复位的特点。在实时系统中,软性必须具有对实时多任务很强的支持才能,快速响应并将执行时间减少到最低限度。系统功能与设计系统功能本着既能知足电子警察照片收集传输的实际需要,又尽量节约资源的原那么,本系统提供如下功能:1上位机效劳器。向终端发出数据和命令;接收终端上传的照片并进展保存处理。可实现人工操纵、自动定时操纵、单终端控制、所有终端控制功能。2收集照片。终端设备从数码相机中将照片收集到本地存储器中,以保证在照片传输经过中不影响数码相机正常工作。3照片传送。通过网络将照片传送至上位机效劳器,实现传输智能化。4网络检测。终端设备可以检测网络通断,保证数据传输正确。5在线更新。通过上位机可以对终端设备进展参数修改,软件晋级。系统设计此系统设计主要是为了知足数码相机中的照片可以平安、及时的传送到控制中心。因此系统采用C/S客户端/效劳器形式设计,由控制中心的效劳器发送命令控制终端设备进展取图传图操纵。系统设计框图如图2所示。终端设备CPU选用Samsung公司的基于ARM7TDMI核的16/32bit、低功耗、高性价比RISC控制器S3C44B0;操纵系统选用网络功能强大、可靠性好、便于移植裁剪、针对无MMU内存治理单元控制器的开源操纵系统uClinux。终端设备硬件设计终端设备硬件设计本着接口标准化、功能模块化、扩展性好、可靠性高的原那么,划分为CPU模块和外设模块。1CPU模块:包括S3C44B0、SDRAM、NORFlash等系统运行的根本要素,组成嵌入式系统的最小系统。2外设模块:网络接口、USBHOST接口、RS232通讯接口、NANDFlash。S3C44B0芯片本身集成了一些通用的外围器件,如UART那么直接利用控制器的资源。片内2个UART分别作为操纵系统控制台及与相机控制板的通讯接口。将海量存储器NANDFlash、USB控制器SL811、网络芯片RTL8019分别映射于处理器的Bank1、Bank2、Bank4地址空间上,实现外部模块与CPU模块的无缝连接。其中NANDS3C44B0芯片本身集成了一些通用的外围器件,如UART那么直接利用控制器的资源。片内2个UART分别作为操纵系统控制台及与相机控制板的通讯接口。将海量存储器NANDFlash、USB控制器SL811、网络芯片RTL8019分别映射于处理器的Bank1、Bank2、Bank4地址空间上,实现外部模块与CPU模块的无缝连接。其中NANDFlash使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。各个厂商的方法可能不一样。因此在0x00200000-0x00400000空间中完全可以使用64M×8Bit的NANDFlash存储器。终端设备的硬件框图如图3所示。终端设备的核心板尺寸为:120mm×80mm,体积小巧,接口标准且安装方便。既可以独立使用,又可以作为模块嵌入到其他系统中。终端设备软件设计终端设备软件设计遵循的原那么是:软件构造化、系统可裁剪定制、驱动标准化、应用程序模块化。软件设计的主要工作是引导程序Uboot移植,操纵系统uClinux移植,驱动程序设计,常用API函数封装,多任务多进程的分解与设计,基于Socket的网络编程等。图4所示为终端设备的软件构造化设计。在驱动层比拟关键的是NORFlash存储器驱动设计与KodakDx6340数码相机USB驱动程序的设计。NORFlash驱动为实如今线更新功能实现最底层的支持,保证Bootloader、Kernel、Rootfilesystem在存储器中准确存放。值得留意是NORFlash的擦写有严格的时序,根据CPU主频不同在擦写经过中参加适当的延时函数能保证Flash正常工作。由于柯达相机的存储卡在Linux下不能当作大容量存储设备MassStorageDevice进展操纵,换言之不能当作挪动存储在uClinux系统下挂载,因此在进展设备驱动程序设计时应选择USB设备类驱动,通过厂商标识ManufactureID及产品标识ProductID在系统中注册匹配,进而完成驱动功能,数据传输经过中采用批量传输方式。在应用层,基于Socket的网络编程支持TCP/IP协议有较好的通用性,能应用于RJ45接口的各种网络环境。照片数据传输遵守PTP协议PIMA15740:2000,便于移植。由于应用程序采用模块化设计,终端与效劳器通讯采用一个进程,终端获取图片使用一个进程因此进程间通讯显的尤为重要。首先,采用信号作为主要的通讯手段;其次,采用分享内存方式。由于在uClinux内存采用实地址操纵,没有内存治理机制,因此在软件设计时笔者采用分享内存的思想在系统未用的内存区域开拓出一块空间作为分享内存,进而完成进程间通讯。表1批量传送图片测试下面扼要介绍KodakDX6340数码相机USB驱动程序设计:1驱动程序的注册:本程序中数码相机驱动以USB字符型设备来实现,USB设备驱动第一步要做的是通过usb_driver构造向uClinux内核注册自己,告诉系统它所支持的设备类型及操纵类型。staticstructusb_driverdx6340_driver=name:"dx6340",/驱动程序名称id_table:dx6340_table,/此构造用于保存设备的厂商ID和产品IDprobe: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的实现。通过这个构造,实现了系统调用和驱动程序的关联。在应用程序中发出文件操纵的相关命令时,内核根据这些指针调用相应的函数,进而完成驱动与内核间的通讯。staticstructfile_operationsdx6340_fops=owner:THIS_MODULE,/fops所属范围read:dx6340_read,/相机的读操纵write:dx6340_write,/相机的写操纵open:dx6340_open,/翻开相机设备release:dx6340_release,/关闭相机设备在数据读写read、write函数中使用批量传输方式,调用函数usb_bulk_msgstructusb_deviceusb_dev,unsignedintpipe,voiddata,intlen,intactual_length,inttimeout。2驱动程序的在系统中的调用接下来的工作是将设备驱动程序嵌入内核。通常有两种方式,一种是静态编译进内核,另一种是编译成模块。后者可以动态进展加载,利于调试。当系统使用该设备驱动时,调用驱动初始化函数int_initdx6340_initvoidifusb_register&dx6340_driver结语本文中设计的电子警察终端设备知足用户设计要求,经现场实际运行,证实了所设计的系统可靠、稳定。所提出的照片收集传输方案已用于电子警察实际系统中,并实现无人职守自动定时取图,效劳器获取照片信息准确无误。对于停电或者网络问题造成的异常,设备可以及时进展处理,很好的验证了本方案的可行性和实用性。参考文献:1.杜春雷.ARM体系构造与编程,清华大学出版,2003-82.詹荣开.嵌入式系统Bootloader技术内幕EB/OL.2003-123.RobertLove.陈莉君,康华,张波译.Linux内核设计与实现机械工业出版社2006-14.张绮文,谢建雄,谢劲心.嵌入式常用模块与综合系统设计实例精讲电子工业出版社2007-15.DanielP.Bovet,MarcoCesati.UnderstandingtheLinuxKernel,2ndEdition,OReilly,2002-106.JonathanCorbet,GregKroah-Hartman,AlessandroRubini.LinuxDeviceDrivers,3rdEdition,OReilly,2005-20