freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于s3c2410汽車防盜系統(tǒng)(編輯修改稿)

2024-12-23 21:47 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 過(guò)用戶的努力是可以避免的;有些從原理上講是不可以避免的,如小動(dòng)物和電磁波干擾引起的誤報(bào)警。為了盡量降低誤報(bào)率,該系統(tǒng)采用了一種數(shù)字化處理技術(shù),即對(duì)模擬信號(hào)直接進(jìn)行數(shù)字化處理,通過(guò)對(duì)各種入侵情況和干擾情況的綜合分析,在MCU上預(yù)先設(shè)定報(bào)警閾值。經(jīng)傳感器采集到的信號(hào)送至MCU處理,超過(guò)報(bào)警閾值時(shí),MCU啟動(dòng)報(bào)警;在報(bào)警閾值以下則判為干擾信號(hào),不報(bào)警。本設(shè)計(jì)以嵌入式系統(tǒng)為平臺(tái),結(jié)合傳感器、數(shù)據(jù)采集、圖像處理和無(wú)線通信技術(shù)實(shí)現(xiàn)了對(duì)汽車的遠(yuǎn)程監(jiān)控和防盜功能,有效減少了汽車報(bào)警系統(tǒng)的誤報(bào)。在理論和實(shí)踐上實(shí)現(xiàn)了對(duì)汽車全天候的圖像監(jiān)控。由于受網(wǎng)絡(luò)狀態(tài)的影響,報(bào)警信息可能會(huì)有延遲,隨著網(wǎng)絡(luò)和通信技術(shù)的發(fā)展,相信這些問(wèn)題都會(huì)得到完美的解決。手觸屏模塊,本設(shè)計(jì)基于三星S3C2410X微處理器,采用SPI接口與ADS7843觸摸屏控制器芯片完成觸摸屏模塊的設(shè)計(jì)。具體包括在嵌入式Linux操作系統(tǒng)中的軟件驅(qū)動(dòng)開發(fā),采用內(nèi)核定時(shí)器的下半部機(jī)制進(jìn)行了觸摸屏硬件中斷程序設(shè)計(jì),采用16個(gè)時(shí)鐘周期的坐標(biāo)轉(zhuǎn)換時(shí)序,實(shí)現(xiàn)觸摸點(diǎn)數(shù)據(jù)采集的方法,給出了坐標(biāo)采集的流程。當(dāng)駕駛?cè)诉M(jìn)入汽車點(diǎn)擊密碼,汽車發(fā)動(dòng)。(XP YP YM XM 為0~9輸入數(shù)字)硬件實(shí)現(xiàn)方案,SPI接口是Motorola的一種同步串行接口,采用全雙工、四線通信系統(tǒng),S3C2410X是三星推出的自帶觸摸屏接口的ARM920T內(nèi)核芯片,ADS7843為BurrBrown生產(chǎn)的一款性能優(yōu)異的觸摸屏控制器。本設(shè)計(jì)采用SPI接口的觸摸屏控制器ADS7843外接四線電阻式觸摸屏,這種方式最顯著的特點(diǎn)是響應(yīng)速度更快、靈敏度更高,微處理器與觸摸屏控制器間的通訊時(shí)間大大減少,提高了微處理器的效率。ADS7843與S3C2410的硬件連接如圖所示,鑒于ADS7843差分工作模式的優(yōu)點(diǎn),在硬件電路中將其配置為差分模式。嵌入式Linux系統(tǒng)下的驅(qū)動(dòng)程序。設(shè)備驅(qū)動(dòng)程序是Linux內(nèi)核的重要組成部分,控制了操作系統(tǒng)和硬件設(shè)備之間的交互。Linux的設(shè)備管理是和文件系統(tǒng)緊密結(jié)合的,各種設(shè)備都以文件的形式存放在/dev目錄下,成為設(shè)備文件。應(yīng)用程序可以打開、關(guān)閉、讀寫這些設(shè)備文件,對(duì)設(shè)備的操作就像操作普通的數(shù)據(jù)文件一樣簡(jiǎn)便。為開發(fā)便利、提高效率,本設(shè)計(jì)采用可安裝模塊方式開發(fā)調(diào)試觸摸屏驅(qū)動(dòng)程序。設(shè)備驅(qū)動(dòng)在加載時(shí)首先需要調(diào)用入口函數(shù)init_module(),該函數(shù)完成設(shè)備驅(qū)動(dòng)的初始化工作。其中最重要的工作就是向內(nèi)核注冊(cè)該設(shè)備,對(duì)于字符設(shè)備調(diào)用register_chrdev()完成注冊(cè),對(duì)于塊設(shè)備需要調(diào)用register_blkdev()完成注冊(cè)。注冊(cè)成功后,該設(shè)備獲得了系統(tǒng)分配的主設(shè)備號(hào)、自定義的次設(shè)備號(hào),并建立起與文件系統(tǒng)的關(guān)聯(lián)。字符設(shè)備驅(qū)動(dòng)程序向Linux內(nèi)核注冊(cè)登記時(shí),在字符設(shè)備向量表chrdevs中增加一個(gè)device_struct數(shù)據(jù)結(jié)構(gòu)條目,這個(gè)設(shè)備的主設(shè)備標(biāo)識(shí)符用作這個(gè)向量表的索引。向量表中的每一個(gè)條目,即一個(gè)device_struct數(shù)據(jù)結(jié)構(gòu)包括兩個(gè)元素:一個(gè)登記的設(shè)備驅(qū)動(dòng)程序的名稱的指針和一個(gè)指向一組文件操作的指針。這塊文件操作本身位于這個(gè)設(shè)備的字符設(shè)備驅(qū)動(dòng)程序中,每一個(gè)都處理特定的文件操作,比如打開、讀寫和關(guān)閉。所謂登記,就是將由模塊提供的file_operations結(jié)構(gòu)指針填入device_struct數(shù)據(jù)結(jié)構(gòu)數(shù)組的某個(gè)表項(xiàng)。登記以后,位于上層的模塊(內(nèi)核)可以“看見”這個(gè)模塊了。但是,應(yīng)用程序卻還不能“看見”它,因而還不能通過(guò)系統(tǒng)調(diào)用它。要使應(yīng)用程序能“看見”這個(gè)模塊或者它所驅(qū)動(dòng)的設(shè)備,就要在文件系統(tǒng)中為其創(chuàng)建一個(gè)代表它的節(jié)點(diǎn)。通過(guò)系統(tǒng)調(diào)用mknod()創(chuàng)建代表此項(xiàng)設(shè)備的文件節(jié)點(diǎn)——設(shè)備入口點(diǎn),就可使一項(xiàng)設(shè)備在系統(tǒng)中可見,成為應(yīng)用程序可以訪問(wèn)的設(shè)備。另外,設(shè)備驅(qū)動(dòng)在卸載時(shí)需要回收相應(yīng)的資源,令設(shè)備的相應(yīng)寄存器值復(fù)位并從系統(tǒng)中注銷該設(shè)備。Linux操作系統(tǒng)通過(guò)系統(tǒng)調(diào)用和硬件中斷完成從用戶空間到內(nèi)核空間的控制轉(zhuǎn)移。設(shè)備驅(qū)動(dòng)模塊的功能就是擴(kuò)展內(nèi)核的功能,主要完成兩部分任務(wù):一個(gè)是系統(tǒng)調(diào)用,另一個(gè)是處理中斷。圖中是一個(gè)設(shè)備驅(qū)動(dòng)模塊動(dòng)態(tài)掛接、卸載和系統(tǒng)調(diào)用的全過(guò)程。系統(tǒng)調(diào)用部分則是對(duì)設(shè)備的操作過(guò)程,比如open,read,write,ioctl等操作,設(shè)備驅(qū)動(dòng)程序所提供的這組入口點(diǎn)由幾個(gè)結(jié)構(gòu)向系統(tǒng)進(jìn)行說(shuō)明,分別是file_operations數(shù)據(jù)結(jié)構(gòu)、inode數(shù)據(jù)結(jié)構(gòu)和file 數(shù)據(jù)結(jié)構(gòu)。內(nèi)核內(nèi)部通過(guò)file結(jié)構(gòu)識(shí)別設(shè)備,通過(guò)file_operations數(shù)據(jù)結(jié)構(gòu)提供文件系統(tǒng)的入口點(diǎn)函數(shù),也就是訪問(wèn)設(shè)備驅(qū)動(dòng)的函數(shù),結(jié)構(gòu)中的每一個(gè)成員都對(duì)應(yīng)著一個(gè)系統(tǒng)調(diào)用。在嵌入式系統(tǒng)的開發(fā)中,我們一般僅僅實(shí)現(xiàn)其中幾個(gè)接口函數(shù):read、write、open、ioctl及release就可以完成應(yīng)用系統(tǒng)需要的功能。寫驅(qū)動(dòng)程序的任務(wù)之一就是完成file_operations中的函數(shù)指針。觸摸屏驅(qū)動(dòng)程序的關(guān)鍵。觸摸屏驅(qū)動(dòng)程序中重要數(shù)據(jù)結(jié)構(gòu)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, }?! ≡诔绦蛑杏腥齻€(gè)重要的數(shù)據(jù)結(jié)構(gòu):用于表示筆觸點(diǎn)數(shù)據(jù)信息的結(jié)構(gòu)TS_RET,表示ADS7843中有關(guān)觸摸屏控制器信息的結(jié)構(gòu)TS_DEV,以及驅(qū)動(dòng)程序與應(yīng)用程序的接口file_operations結(jié)構(gòu)的s3c2410_fops?! S_RET結(jié)構(gòu)體中的信息就是驅(qū)動(dòng)程序提供給上層應(yīng)用程序使用的信息,用來(lái)存儲(chǔ)觸摸屏的返回值。上層應(yīng)用程序通過(guò)讀接口,從底層驅(qū)動(dòng)中讀取信息,并根據(jù)得到的值進(jìn)行其他方面的操作。TS_DEV結(jié)構(gòu)用于記錄觸摸屏運(yùn)行的各種狀態(tài),PenStatus包括PEN_UP、PEN_DOWN和PEN_FLEETING。buf[MAX_TS_BUF]是用來(lái)存放數(shù)據(jù)信息的事件隊(duì)列,head、tail分別指向事件隊(duì)列的頭和尾。程序中的筆事件隊(duì)列是一個(gè)環(huán)形結(jié)構(gòu),當(dāng)有事件加入時(shí),隊(duì)列頭加一,當(dāng)有事件被取走時(shí),隊(duì)列尾加一,當(dāng)頭尾位置指針一致時(shí)讀取筆事件的信息,進(jìn)程會(huì)被安排進(jìn)入睡眠。wq等待隊(duì)列,包含一個(gè)鎖變量和一個(gè)正在睡眠進(jìn)程鏈表。當(dāng)有好幾個(gè)進(jìn)程都在等待某件事時(shí),Linux會(huì)把這些進(jìn)程記錄到這個(gè)等待隊(duì)列。它的作用是當(dāng)沒(méi)有筆觸事件發(fā)生時(shí),阻塞上層的讀操作,直到有筆觸事件發(fā)生。lock使用自旋鎖,自旋鎖是基于共享變量來(lái)工作的,函數(shù)可以通過(guò)給某個(gè)變量設(shè)置一個(gè)特殊值來(lái)獲得鎖。而其他需要鎖的函數(shù)則會(huì)循環(huán)查詢鎖是否可用。MAX_TS_BUF的值為16,即在沒(méi)有被讀取之前,系統(tǒng)緩沖區(qū)中最多可以存放16個(gè)筆觸數(shù)據(jù)信息。s3c2410_fops就是內(nèi)核對(duì)驅(qū)動(dòng)的調(diào)用接口,完成了將驅(qū)動(dòng)函數(shù)映射為標(biāo)準(zhǔn)接口。上面的這種特殊表示方法不是標(biāo)準(zhǔn)C的語(yǔ)法,而是GNU編譯器的一種特殊擴(kuò)展,它使用名字進(jìn)行結(jié)構(gòu)字段的初始化,它的好處體現(xiàn)在結(jié)構(gòu)清晰,易于理解,并且避免了結(jié)構(gòu)發(fā)生變化帶來(lái)的許多問(wèn)題。init_module函數(shù),這是模塊的入口函數(shù)。在函數(shù)內(nèi)部通過(guò)s3c2410_ts_init( )實(shí)現(xiàn)模塊的初始化工作。在本設(shè)計(jì)中設(shè)備與系統(tǒng)之間以中斷方式進(jìn)行數(shù)據(jù)交換。整個(gè)觸摸屏的驅(qū)動(dòng)程序處理比較復(fù)雜,而且耗時(shí)較長(zhǎng),因而觸摸屏驅(qū)動(dòng)程序不可能在中斷服務(wù)程序中完成。在Linux操作系統(tǒng)中一般把中斷處理切為兩個(gè)部分或兩半。中斷處理程序是上半部——接收到一個(gè)中斷,它就立即開始執(zhí)行,但只做有嚴(yán)格時(shí)限的工作,例如對(duì)接收的中斷進(jìn)行應(yīng)答或復(fù)位硬件。這些工作都是在所有中斷被禁止的情況下完成的,能夠被允許稍后完成的工作會(huì)推遲到下半部去。在Linux中下半部的實(shí)現(xiàn)有多種機(jī)制。按觸摸屏?xí)r,從ADS7843輸出的數(shù)值有一個(gè)抖動(dòng)過(guò)程,即從ADS7846輸出的數(shù)值有一個(gè)不穩(wěn)定時(shí)期,這個(gè)過(guò)程大約為10ms。所以中斷處理程序的下半部處理函數(shù)采用內(nèi)核定時(shí)器機(jī)制,使下半部在中斷發(fā)生50ms后再作處理。這樣有效地避開了ADS7843輸出值的不穩(wěn)定時(shí)期,使中斷服務(wù)程序和中斷處理任務(wù)串行化,達(dá)到了處理時(shí)間較長(zhǎng)的觸摸屏事件的目的。驅(qū)動(dòng)程序通過(guò)request_irq函數(shù)注冊(cè)并激活一個(gè)中斷處理程序,以便處理中斷。int reguest_irq(unsigned int irq, void(*handler)(int, void *, struct pt_regs *), unsigned long irq_flags, const char *dev_name, void *dev_id)參數(shù)irq表示所要申請(qǐng)的中斷號(hào);handler為向系統(tǒng)登記的中斷處理子程序,中斷產(chǎn)生時(shí)由系統(tǒng)來(lái)調(diào)用;dev_name為設(shè)備名;dev_id為申請(qǐng)時(shí)告訴系統(tǒng)的設(shè)備標(biāo)識(shí)符;irq_flags是申請(qǐng)時(shí)的選項(xiàng),它決定中斷處理程序的一些特性,其中最重要的是中斷處理程序是快速處理程序還是慢速處理程序。在s3c2410_ts_init()中的另一個(gè)重要任務(wù)是執(zhí)行接口函數(shù)s3c2410_ts_open(),在這個(gè)函數(shù)中初始化緩沖區(qū)的頭尾指針、觸摸屏狀態(tài)變量及觸摸屏事件等待隊(duì)列。module_exit()該函數(shù)調(diào)用s3c2410_ts_exit(),主要任務(wù)是撤銷驅(qū)動(dòng)程序向內(nèi)核的登記以及釋放申請(qǐng)的中斷資源。接口函數(shù)s3c2410_ts_read( )這個(gè)函數(shù)實(shí)現(xiàn)的任務(wù)是將事件隊(duì)列從設(shè)備緩存中讀到用戶空間的數(shù)據(jù)緩存中。實(shí)現(xiàn)的過(guò)程主要是通過(guò)一個(gè)循環(huán),只有在事件隊(duì)列的頭、尾指針不重合時(shí),并退出循環(huán)。否則調(diào)用讀取函數(shù)的進(jìn)程就要進(jìn)入睡眠。坐標(biāo)讀取函數(shù)s3c2410_get_XY在定時(shí)器中斷處理程序中,當(dāng)查詢到與相連的EINT5/GPF5為低電平時(shí),即表示有有效事件,應(yīng)該調(diào)用s3c2410_get_XY()函數(shù)采集筆觸信息。ADS7843有多種轉(zhuǎn)換時(shí)序,時(shí)序規(guī)定了芯片與設(shè)備及CPU間是如何配合工作的。設(shè)計(jì)中采用16個(gè)時(shí)鐘周期啟動(dòng)一次轉(zhuǎn)換的坐標(biāo)轉(zhuǎn)換方式。坐標(biāo)的讀取是通過(guò)多次采集取平均值的方法,以X坐標(biāo)的讀取為例,其讀取過(guò)程如圖6所示。循環(huán)過(guò)程中的每一步都在8個(gè)時(shí)鐘周期內(nèi)完成,數(shù)據(jù)的處理嚴(yán)格按照時(shí)序進(jìn)行,Y坐標(biāo)的采集與X坐標(biāo)類似。 ADS7843操作時(shí)序 X坐標(biāo)采集流程 防盜報(bào)警電路元器件的選擇(1)CPU的選擇S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核。該處理器擁有:獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IICBUS 接口,IISBUS 接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。S3C2410處理器最高可運(yùn)行在203MHz。核心板的尺寸僅相當(dāng)于名片的2/3大小,尺寸如此小巧的嵌入式核心板是國(guó)內(nèi)首創(chuàng)。開發(fā)商可以充分發(fā)揮想象力,設(shè)計(jì)制造出小體積,高性能的嵌入式應(yīng)用產(chǎn)品。S3C2410芯片集成了大量的功能單元,包括:(1),外部I/,16KB數(shù)據(jù)Cache,16KB指令Cache,MMU。(2)內(nèi)置外部存儲(chǔ)器控制器(SDRAM控制和芯片選擇邏輯)。(3)LCD控制器,一個(gè)LCD專業(yè)DMA。(4)4個(gè)帶外部請(qǐng)求線的DMA。(5)3個(gè)通用異步串行端口(,16Byte Tx FIFO and 16Byte Rx FIFO),2通道SPI(6)一個(gè)多主I2C總線,一個(gè)I2S總線控制器。(7)。(8)兩個(gè)USB HOST,一個(gè)USB DEVICE()。(9)4個(gè)PWM定時(shí)器和一個(gè)內(nèi)部定時(shí)器。(10)看門狗定時(shí)器。(11)117個(gè)通用I/O。(12)56個(gè)中斷源。(13)24個(gè)外部中斷。(14)電源控制模式:標(biāo)準(zhǔn)、慢速、休眠、掉電。(15)8通道10位ADC和觸摸屏接口。(16)帶日歷功能的實(shí)時(shí)時(shí)鐘。(18)芯片內(nèi)置PLL。(19)設(shè)計(jì)用于手持設(shè)備和通用嵌入式系統(tǒng)。(20)16/32位RISC體系結(jié)構(gòu),使用ARM920T CPU核的強(qiáng)大指令集。(21)帶MMU的先進(jìn)的體系結(jié)構(gòu)支持WinCE、EPOC3Linux。(22)指令緩存(Cache)、數(shù)據(jù)緩存、寫緩存和物理地址TAG RAM,減小了對(duì)主存儲(chǔ)器帶寬和性能的影響。(23)ARM920T CPU支持ARM調(diào)試的體系結(jié)構(gòu)。(24)內(nèi)部先進(jìn)的位控制器總線(AMBA)(,AHB/APB)。本設(shè)計(jì)選用的是三星的S3C2410基于ARM內(nèi)核,最大工作頻率能達(dá)到203MHz,能支持NAND閃存啟動(dòng),具有更高的性價(jià)比。另外,S3C2410在市場(chǎng)上己有很多成熟的應(yīng)用,因此選用了S3C2410作為系統(tǒng)的CPU。本設(shè)計(jì)運(yùn)用S3C410集成了一個(gè)LCD控制器(支持STN和TFT液晶顯示屏)、NAND閃存控制器、SDRAM控制器、3個(gè)通道的UART、4個(gè)通道的DMA、4個(gè)具有PWM功能的計(jì)時(shí)器和1個(gè)內(nèi)部時(shí)鐘,以及8通道的10位ADC。它還有很多豐富的外部接口,如觸摸屏、I2C總線、12S總線接口,以及2個(gè)US主機(jī)接口、1個(gè)USB設(shè)備接口、2個(gè)SPI接口、SD接口。在時(shí)鐘方面,S3C2410集成了一個(gè)具有日歷功能的RTC(實(shí)時(shí)控制)和具有PLL的芯片時(shí)鐘發(fā)生器。能產(chǎn)生200MHz的工作頻率。這樣的工作頻率能夠使處理器輕松運(yùn)行WinCE、Linux等操作系統(tǒng),以及進(jìn)行較為復(fù)雜的數(shù)據(jù)處理。本設(shè)計(jì)運(yùn)用它的觸摸屏、USB接口等外部接口。(2)TFT屏選擇本設(shè)計(jì)采用TFT屏256色的調(diào)色板顯示模式16M色非調(diào)色板顯示模式分辯率為640*480的LCD(3)USB攝像頭的選擇
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1