基于s3c2410汽车防盗系统内容摘要:

过用户的努力是可以避免的;有些从原理上讲是不可以避免的,如小动物和电磁波干扰引起的误报警。 为了尽量降低误报率,该系统采用了一种数字化处理技术,即对模拟信号直接进行数字化处理,通过对各种入侵情况和干扰情况的综合分析,在MCU上预先设定报警阈值。 经传感器采集到的信号送至MCU处理,超过报警阈值时,MCU启动报警;在报警阈值以下则判为干扰信号,不报警。 本设计以嵌入式系统为平台,结合传感器、数据采集、图像处理和无线通信技术实现了对汽车的远程监控和防盗功能,有效减少了汽车报警系统的误报。 在理论和实践上实现了对汽车全天候的图像监控。 由于受网络状态的影响,报警信息可能会有延迟,随着网络和通信技术的发展,相信这些问题都会得到完美的解决。 手触屏模块,本设计基于三星S3C2410X微处理器,采用SPI接口与ADS7843触摸屏控制器芯片完成触摸屏模块的设计。 具体包括在嵌入式Linux操作系统中的软件驱动开发,采用内核定时器的下半部机制进行了触摸屏硬件中断程序设计,采用16个时钟周期的坐标转换时序,实现触摸点数据采集的方法,给出了坐标采集的流程。 当驾驶人进入汽车点击密码,汽车发动。 (XP YP YM XM 为0~9输入数字)硬件实现方案,SPI接口是Motorola的一种同步串行接口,采用全双工、四线通信系统,S3C2410X是三星推出的自带触摸屏接口的ARM920T内核芯片,ADS7843为BurrBrown生产的一款性能优异的触摸屏控制器。 本设计采用SPI接口的触摸屏控制器ADS7843外接四线电阻式触摸屏,这种方式最显著的特点是响应速度更快、灵敏度更高,微处理器与触摸屏控制器间的通讯时间大大减少,提高了微处理器的效率。 ADS7843与S3C2410的硬件连接如图所示,鉴于ADS7843差分工作模式的优点,在硬件电路中将其配置为差分模式。 嵌入式Linux系统下的驱动程序。 设备驱动程序是Linux内核的重要组成部分,控制了操作系统和硬件设备之间的交互。 Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,成为设备文件。 应用程序可以打开、关闭、读写这些设备文件,对设备的操作就像操作普通的数据文件一样简便。 为开发便利、提高效率,本设计采用可安装模块方式开发调试触摸屏驱动程序。 设备驱动在加载时首先需要调用入口函数init_module(),该函数完成设备驱动的初始化工作。 其中最重要的工作就是向内核注册该设备,对于字符设备调用register_chrdev()完成注册,对于块设备需要调用register_blkdev()完成注册。 注册成功后,该设备获得了系统分配的主设备号、自定义的次设备号,并建立起与文件系统的关联。 字符设备驱动程序向Linux内核注册登记时,在字符设备向量表chrdevs中增加一个device_struct数据结构条目,这个设备的主设备标识符用作这个向量表的索引。 向量表中的每一个条目,即一个device_struct数据结构包括两个元素:一个登记的设备驱动程序的名称的指针和一个指向一组文件操作的指针。 这块文件操作本身位于这个设备的字符设备驱动程序中,每一个都处理特定的文件操作,比如打开、读写和关闭。 所谓登记,就是将由模块提供的file_operations结构指针填入device_struct数据结构数组的某个表项。 登记以后,位于上层的模块(内核)可以“看见”这个模块了。 但是,应用程序却还不能“看见”它,因而还不能通过系统调用它。 要使应用程序能“看见”这个模块或者它所驱动的设备,就要在文件系统中为其创建一个代表它的节点。 通过系统调用mknod()创建代表此项设备的文件节点——设备入口点,就可使一项设备在系统中可见,成为应用程序可以访问的设备。 另外,设备驱动在卸载时需要回收相应的资源,令设备的相应寄存器值复位并从系统中注销该设备。 Linux操作系统通过系统调用和硬件中断完成从用户空间到内核空间的控制转移。 设备驱动模块的功能就是扩展内核的功能,主要完成两部分任务:一个是系统调用,另一个是处理中断。 图中是一个设备驱动模块动态挂接、卸载和系统调用的全过程。 系统调用部分则是对设备的操作过程,比如open,read,write,ioctl等操作,设备驱动程序所提供的这组入口点由几个结构向系统进行说明,分别是file_operations数据结构、inode数据结构和file 数据结构。 内核内部通过file结构识别设备,通过file_operations数据结构提供文件系统的入口点函数,也就是访问设备驱动的函数,结构中的每一个成员都对应着一个系统调用。 在嵌入式系统的开发中,我们一般仅仅实现其中几个接口函数:read、write、open、ioctl及release就可以完成应用系统需要的功能。 写驱动程序的任务之一就是完成file_operations中的函数指针。 触摸屏驱动程序的关键。 触摸屏驱动程序中重要数据结构typedef struct { unsigned short pressure。 unsigned short x。 unsigned short y。 unsigned short pad。 } TS_RET。 typedef struct {unsigned int PenStatus。 TS_RET buf[MAX_TS_BUF]。 unsigned int head, tail。 wait_queue_head_t wq。 spinlock_t lock。 } TS_DEV。 static struct file_operations s3c2410_fops = { owner:THIS_MODULE, open:s3c2410_ts_open, read:s3c2410_ts_read, release:s3c2410_ts_release, poll:s3c2410_ts_poll, }。 在程序中有三个重要的数据结构:用于表示笔触点数据信息的结构TS_RET,表示ADS7843中有关触摸屏控制器信息的结构TS_DEV,以及驱动程序与应用程序的接口file_operations结构的s3c2410_fops。 TS_RET结构体中的信息就是驱动程序提供给上层应用程序使用的信息,用来存储触摸屏的返回值。 上层应用程序通过读接口,从底层驱动中读取信息,并根据得到的值进行其他方面的操作。 TS_DEV结构用于记录触摸屏运行的各种状态,PenStatus包括PEN_UP、PEN_DOWN和PEN_FLEETING。 buf[MAX_TS_BUF]是用来存放数据信息的事件队列,head、tail分别指向事件队列的头和尾。 程序中的笔事件队列是一个环形结构,当有事件加入时,队列头加一,当有事件被取走时,队列尾加一,当头尾位置指针一致时读取笔事件的信息,进程会被安排进入睡眠。 wq等待队列,包含一个锁变量和一个正在睡眠进程链表。 当有好几个进程都在等待某件事时,Linux会把这些进程记录到这个等待队列。 它的作用是当没有笔触事件发生时,阻塞上层的读操作,直到有笔触事件发生。 lock使用自旋锁,自旋锁是基于共享变量来工作的,函数可以通过给某个变量设置一个特殊值来获得锁。 而其他需要锁的函数则会循环查询锁是否可用。 MAX_TS_BUF的值为16,即在没有被读取之前,系统缓冲区中最多可以存放16个笔触数据信息。 s3c2410_fops就是内核对驱动的调用接口,完成了将驱动函数映射为标准接口。 上面的这种特殊表示方法不是标准C的语法,而是GNU编译器的一种特殊扩展,它使用名字进行结构字段的初始化,它的好处体现在结构清晰,易于理解,并且避免了结构发生变化带来的许多问题。 init_module函数,这是模块的入口函数。 在函数内部通过s3c2410_ts_init( )实现模块的初始化工作。 在本设计中设备与系统之间以中断方式进行数据交换。 整个触摸屏的驱动程序处理比较复杂,而且耗时较长,因而触摸屏驱动程序不可能在中断服务程序中完成。 在Linux操作系统中一般把中断处理切为两个部分或两半。 中断处理程序是上半部——接收到一个中断,它就立即开始执行,但只做有严格时限的工作,例如对接收的中断进行应答或复位硬件。 这些工作都是在所有中断被禁止的情况下完成的,能够被允许稍后完成的工作会推迟到下半部去。 在Linux中下半部的实现有多种机制。 按触摸屏时,从ADS7843输出的数值有一个抖动过程,即从ADS7846输出的数值有一个不稳定时期,这个过程大约为10ms。 所以中断处理程序的下半部处理函数采用内核定时器机制,使下半部在中断发生50ms后再作处理。 这样有效地避开了ADS7843输出值的不稳定时期,使中断服务程序和中断处理任务串行化,达到了处理时间较长的触摸屏事件的目的。 驱动程序通过request_irq函数注册并激活一个中断处理程序,以便处理中断。 int reguest_irq(unsigned int irq, void(*handler)(int, void *, struct pt_regs *), unsigned long irq_flags, const char *dev_name, void *dev_id)参数irq表示所要申请的中断号;handler为向系统登记的中断处理子程序,中断产生时由系统来调用;dev_name为设备名;dev_id为申请时告诉系统的设备标识符;irq_flags是申请时的选项,它决定中断处理程序的一些特性,其中最重要的是中断处理程序是快速处理程序还是慢速处理程序。 在s3c2410_ts_init()中的另一个重要任务是执行接口函数s3c2410_ts_open(),在这个函数中初始化缓冲区的头尾指针、触摸屏状态变量及触摸屏事件等待队列。 module_exit()该函数调用s3c2410_ts_exit(),主要任务是撤销驱动程序向内核的登记以及释放申请的中断资源。 接口函数s3c2410_ts_read( )这个函数实现的任务是将事件队列从设备缓存中读到用户空间的数据缓存中。 实现的过程主要是通过一个循环,只有在事件队列的头、尾指针不重合时,并退出循环。 否则调用读取函数的进程就要进入睡眠。 坐标读取函数s3c2410_get_XY在定时器中断处理程序中,当查询到与相连的EINT5/GPF5为低电平时,即表示有有效事件,应该调用s3c2410_get_XY()函数采集笔触信息。 ADS7843有多种转换时序,时序规定了芯片与设备及CPU间是如何配合工作的。 设计中采用16个时钟周期启动一次转换的坐标转换方式。 坐标的读取是通过多次采集取平均值的方法,以X坐标的读取为例,其读取过程如图6所示。 循环过程中的每一步都在8个时钟周期内完成,数据的处理严格按照时序进行,Y坐标的采集与X坐标类似。 ADS7843操作时序 X坐标采集流程 防盗报警电路元器件的选择(1)CPU的选择S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核。 该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IICBUS 接口,IISBUS 接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。 S3C2410处理器最高可运行在203MHz。 核心板的尺寸仅相当于名片的2/3大小,尺寸如此小巧的嵌入式核心板是国内首创。 开发商可以充分发挥想象力,设计制造出小体积,高性能的嵌入式应用产品。 S3C2410芯片集成了大量的功能单元,包括:(1),外部I/,16KB数据Cache,16KB指令Cache,MMU。 (2)内置外部存储器控制器(SDRAM控制和芯片选择逻辑)。 (3)LCD控制器,一个LCD专业DMA。 (4)4个带外部请求线的DMA。 (5)3个通用异步串行端口(,16Byte Tx FIFO and 16Byte Rx FIFO),2通道SPI(6)一个多主I2C总线,一个I2S总线控制器。 (7)。 (8)两个USB HOST,一个USB DEVICE()。 (9)4个PWM定时器和一个内部定时器。 (10)看门狗定时器。 (11)117个通用I/O。 (12)56个中断源。 (13)24个外部中断。 (14)电源控制模式:标准、慢速、休眠、掉电。 (15)8通道10位ADC和触摸屏接口。 (16)带日历功能的实时时钟。 (18)芯片内置PLL。 (19)设计用于手持设备和通用嵌入式系统。 (20)16/32位RISC体系结构,使用ARM920T CPU核的强大指令集。 (21)带MMU的先进的体系结构支持WinCE、EPOC3Linux。 (22)指令缓存(Cache)、数据缓存、写缓存和物理地址TAG RAM,减小了对主存储器带宽和性能的影响。 (23)ARM920T CPU支持ARM调试的体系结构。 (24)内部先进的位控制器总线(AMBA)(,AHB/APB)。 本设计选用的是三星的S3C2410基于ARM内核,最大工作频率能达到203MHz,能支持NAND闪存启动,具有更高的性价比。 另外,S3C2410在市场上己有很多成熟的应用,因此选用了S3C2410作为系统的CPU。 本设计运用S3C410集成了一个LCD控制器(支持STN和TFT液晶显示屏)、NAND闪存控制器、SDRAM控制器、3个通道的UART、4个通道的DMA、4个具有PWM功能的计时器和1个内部时钟,以及8通道的10位ADC。 它还有很多丰富的外部接口,如触摸屏、I2C总线、12S总线接口,以及2个US主机接口、1个USB设备接口、2个SPI接口、SD接口。 在时钟方面,S3C2410集成了一个具有日历功能的RTC(实时控制)和具有PLL的芯片时钟发生器。 能产生200MHz的工作频率。 这样的工作频率能够使处理器轻松运行WinCE、Linux等操作系统,以及进行较为复杂的数据处理。 本设计运用它的触摸屏、USB接口等外部接口。 (2)TFT屏选择本设计采用TFT屏256色的调色板显示模式16M色非调色板显示模式分辩率为640*480的LCD(3)USB摄像头的选择。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。