基于ARM9的交通違章抓拍系統(tǒng)的開(kāi)發(fā)
3.1.3 Bootloader 代碼。
Bootloader 主要負(fù)責(zé)加載內(nèi)核, 盡管它在系統(tǒng)啟動(dòng)期間執(zhí)行的時(shí)間很短, 但是非常重要的系統(tǒng)組件, 對(duì)嵌入式系統(tǒng)來(lái)說(shuō)是一件特別的工作。Bootloader 是嚴(yán)重依賴(lài)于硬件而實(shí)現(xiàn)的, 目前以ARM為基礎(chǔ)的系統(tǒng)還沒(méi)有標(biāo)準(zhǔn)的Bootloader, 針對(duì)本系統(tǒng)的硬件特性, 在ppcboot 的基礎(chǔ)上加以修改, 生成適合本系統(tǒng)的啟動(dòng)代碼。
3.2 應(yīng)用程序的開(kāi)發(fā)
程序主要實(shí)現(xiàn)以下功能: 現(xiàn)場(chǎng)紅燈和線(xiàn)圈信號(hào)的采集; 控制相機(jī)拍照、保存參數(shù)、傳輸照片和刪除照片; 處理按鍵信息并送數(shù)碼管顯示; 通過(guò)以太網(wǎng)遠(yuǎn)程下載照片, 也可以用U 盤(pán)本地下載照片。應(yīng)用程序的總體結(jié)構(gòu)如圖7 所示。
系統(tǒng)軟件的設(shè)計(jì)主要是控制相機(jī)的USB 通訊模塊的編寫(xiě)、網(wǎng)絡(luò)傳輸模塊的編寫(xiě)、信號(hào)采集模塊的編寫(xiě)和串口通訊模塊的編寫(xiě)。其中USB 通訊模塊是關(guān)鍵, 需要嚴(yán)格遵守?cái)?shù)碼相機(jī)的通訊協(xié)議; 網(wǎng)絡(luò)傳輸采用客戶(hù)機(jī)服務(wù)器方式, 本機(jī)作為客戶(hù)機(jī), 工控中心設(shè)置為服務(wù)器。檢測(cè)信號(hào)模塊主要是讀取并口信息, 并口的操作使用端口I/O, 簡(jiǎn)單、操作性強(qiáng), 并且可以清楚說(shuō)明編寫(xiě)設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)所必需的底層硬件控制過(guò)程。在Linux 中有一個(gè)用于輸入的命令inb( address) 和一個(gè)用于輸出的命令outb( value, address) .C 語(yǔ)言的宏擴(kuò)展實(shí)現(xiàn)了這兩個(gè)函數(shù), 而且不涉及任何函數(shù)庫(kù), 但使用這兩個(gè)函數(shù)需要一些額外的函數(shù), 函數(shù)ioperm( ) 從內(nèi)核中申請(qǐng)和釋放端口訪(fǎng)問(wèn)權(quán)。在Linux 下, 串口一般作為一個(gè)終端接口, 即tty 接口, POSIX.1 定義了一個(gè)查詢(xún)和操作終端的標(biāo)準(zhǔn)接口, 該接口被稱(chēng)作termios,在系統(tǒng)的頭文件termios.h>中定義。termios 是一個(gè)數(shù)據(jù)結(jié)構(gòu)和一系列操作這些數(shù)據(jù)結(jié)構(gòu)的函數(shù), 這些函數(shù)一起構(gòu)成了通用的終端界面, 提供對(duì)終端的有效控制操作, 使得系統(tǒng)具有復(fù)雜的異步串口設(shè)備處理能力。
程序處理流程如圖8 所示。
4 結(jié)束語(yǔ)
該數(shù)碼電子警察系統(tǒng)采用高分辨率的數(shù)碼相機(jī), 清晰度高, 在運(yùn)行的過(guò)程中, 抓拍成功率達(dá)到98%, 照片合格率達(dá)到95%, 誤拍率低, 適用于各種惡劣的環(huán)境條件。采用實(shí)時(shí)性高的Linux2.6.12 的內(nèi)核, 提供對(duì)S3C2410 的專(zhuān)門(mén)的支持。該系統(tǒng)穩(wěn)定、可靠、實(shí)時(shí)性強(qiáng), 且完全自主開(kāi)發(fā), 可有效控制成本, 有很強(qiáng)的市場(chǎng)競(jìng)爭(zhēng)力。結(jié)合圖像處理技術(shù), 構(gòu)建數(shù)碼視頻電子警察系統(tǒng)有更廣闊的前景, 這將是下一步開(kāi)發(fā)的重點(diǎn)。
評(píng)論