1 引言
智能交通系統(tǒng)(ITS)將先進的信息技術(shù)、數(shù)據(jù)通訊傳輸技術(shù),、電子控制技術(shù),、計算機處理技術(shù)等應(yīng)用于交通運輸行業(yè),從而實現(xiàn)各種運輸方式發(fā)展規(guī)劃的現(xiàn)代化,、決策的科學化和管理的智能化,。數(shù)碼電子警察是現(xiàn)在應(yīng)用比較廣泛的一種智能交通產(chǎn)品, 利用數(shù)碼相機技術(shù)和相應(yīng)的車輛檢測與控制技術(shù),, 自動抓拍闖紅燈的車輛,。數(shù)字化,、網(wǎng)絡(luò)化、小型化和智能化已經(jīng)成為當前電子警察的主要發(fā)展趨勢,。目前國內(nèi)的產(chǎn)品多以Windows操作系統(tǒng)和x86 硬件體系為核心構(gòu)建,, 有成本高、體積大,、穩(wěn)定性欠缺的不足之處,。
以Linux 操作系統(tǒng)和RAM7 或RAM9 系列芯片為核心構(gòu)建嵌入式系統(tǒng)是目前最流行的嵌入式開發(fā)策略。Linux 是典型的嵌入式操作系統(tǒng),, 發(fā)展最快,, 應(yīng)用最廣泛。Linux 是開源的,、免費的,, 從技術(shù)和經(jīng)濟的角度來看都是最佳選擇。S3C2410 是韓國三星( Samsung) 公司設(shè)計的32 位RISC 嵌入式處理器,。該處理器為手持設(shè)備和一般性應(yīng)用提供了一個高性價比,、低功耗、高性能的解決方案,。該芯片基于ARM920T 內(nèi)核,, 采用五級流水線和哈佛結(jié)構(gòu), 提供1.1MIPS/MHz 的性能,。ARM920T 具有全性能的內(nèi)存管理單元MMU(Memory Management Unit) ,、獨立的16KB 指令和數(shù)據(jù)Cache 以及高速AMBA 總線接口。為了減少應(yīng)用系統(tǒng)設(shè)計的成本,, S3C2410 集成了眾多的常用資源,, 例如: LCD 控制器、NAND Flash 控制器,、SDRAM控制器,、系統(tǒng)片選邏輯以及一些常用的通訊接口等資源。
本文針對交通違章抓拍系統(tǒng)的特點,, 以S3C2410 為核心合理設(shè)計硬件電路,, 并提供必須的USB 接口、串口,、網(wǎng)絡(luò)接口和JTAG 口,; 充分考慮抓拍的實時性和準確性, 采用裁減的實用的Linux2.6.12 內(nèi)核,, 制作根文件系統(tǒng),, 開發(fā)應(yīng)用程序, 構(gòu)建軟硬件協(xié)作的嵌入式系統(tǒng)。
2 硬件設(shè)計
圖1 硬件總體結(jié)構(gòu)圖
2.1 基于S3C2410 的電路設(shè)計
電路設(shè)計如圖2 所示,。
通訊接口部分包括USB 接口,、以太網(wǎng)接口、串口,。其中串口為常見的接口形式,。這里主要說明USB 接口和以太網(wǎng)接口。
S3C2410 集成了USB 控制器,, 支持兩路USB Host 和一路USB Device.與USB Rev1.1 兼容,, 支持低速和全速USB 設(shè)備。
本系統(tǒng)中設(shè)計兩路USB, 都作為Host 使用,。USB 接口接線圖如圖3 所示,。
網(wǎng)絡(luò)接口芯片選用臺灣DAVICOM 公司的DM9000,DM9000 是帶有通用處理器接口的單片快速以太網(wǎng)MAC 控制器, 并帶有10/100M物理層接口,, 內(nèi)部集成4K 字SRAM, 接口支持8 位,、16 位、32 位處理器,。接口設(shè)計電路設(shè)計如圖4 所示,。
圖4 Ethernet接口電路設(shè)計
2.2 檢測電路設(shè)計
通常從交通指揮燈信號機中輸出的紅燈信號是220V/50Hz 的工頻交流電, 需要設(shè)計一個整流濾波電路將從信號機輸出的交通指揮燈信號變換為TTL 電平,。交通指揮燈信號檢測部分采用一個光隔隔離內(nèi)外電路,, 從交通指揮燈信號機輸入至檢測板的是220V/50Hz 的交流電, 通過二級管全波整流后,, 得到大約200V 的直流信號,, 再經(jīng)過電阻分壓, 接著使用100uF 的電容平波,, 獲得5V 左右的直流電, 加到4N25 光隔輸入端,, 輸出經(jīng)過一個反向器獲得5VTTL 電平輸出,, 轉(zhuǎn)換電路如圖5 所示。
本系統(tǒng)采用環(huán)形線圈檢測系統(tǒng),, 環(huán)形線圈檢測系統(tǒng)目前國內(nèi)外使用最廣泛的車輛檢測系統(tǒng),, 它由3 部分組成: 埋設(shè)在路面下的環(huán)形線圈傳感器、信號檢測處理單元( 包括檢測信號放大單元,、數(shù)據(jù)處理單元和通信接口) 及饋線,。檢測單元、環(huán)形線圈與饋線線路共同組成一個LC 調(diào)諧電路,。此電路中的電感主要決定于環(huán)形線圈的匝數(shù),, 環(huán)形線圈是此電路的電感元件; 電容則決定于檢測單元中的電容的大小。當電流通過環(huán)形線圈時,, 在其周圍形成一個電磁場,, 當車輛行至線圈上方時, 在金屬車體中感應(yīng)出渦流電流,, 渦流電流產(chǎn)生與環(huán)路耦合,、但方向相反電磁場, 即互感,, 使環(huán)形線圈電感量隨之降低,, 因而引起電路諧振頻率的上升。只要檢測到此頻率隨時間變化的信號,, 就可檢測出是否有車輛通過,。振蕩電路設(shè)計如圖6 所示。
3 軟件平臺的構(gòu)建和應(yīng)用程序的開發(fā)
3.1 構(gòu)建軟件平臺
系統(tǒng)的引導過程包括以下步驟:
( 1) 處理器重新啟動以后,, 執(zhí)行ROM啟動代碼,。
( 2)ROM啟動代碼初始化CPU、內(nèi)存控制器以及片上設(shè)備,,然后配置存儲映射,。隨后執(zhí)行bootloader.
( 3) bootloader 將內(nèi)核從閃存解壓到RAM中, 然后跳到內(nèi)核的第一條指令處執(zhí)行,。
( 4) 內(nèi)核初始化各種硬件設(shè)備,, 掛載根文件系統(tǒng), 然后執(zhí)行init 進程,。
( 5) Init 進程裝載運行時共享庫,, 讀取配置文件/etc/inittab,執(zhí)行腳本/etc/rc.d/rcS.
構(gòu)建嵌入式軟件平臺需要準備以下工作: 制作內(nèi)核、創(chuàng)建根文件系統(tǒng)和生成啟動代碼bootloader.
3.1.1 制作Linux 內(nèi)核
采用Linux2.6.12 的內(nèi)核,。在Linux2.6 中,, 引入了很多非常有利于嵌入式應(yīng)用的功能。這些新功能包括實時性能的增強,、更方便的移植性,、對大容量內(nèi)存的支持、支持微控制器和I/O系統(tǒng)的改進等,。2.6.12 提供了針對S3C2410 的配置,, 使用命令make s3c2410_defconfig, 然后配置內(nèi)核使用命令make menuconfig,配置體系結(jié)構(gòu)( System Type) , 選擇S3C2410 Implementation,配置處理器類型, 選擇ARM9T, 接著配置通用選項,, 支持網(wǎng)絡(luò),、SYSVIPC 機制、支持ELF 文件格式,, 選擇根文件系統(tǒng)為JFFS2, 然后再配置網(wǎng)絡(luò),, 選擇網(wǎng)絡(luò)設(shè)備支持,, 選擇串口支持、選擇文件系統(tǒng)與網(wǎng)絡(luò)文件系統(tǒng),, 配置USB 設(shè)備選項,, 由于數(shù)碼相機是USB 設(shè)備, 我們使用libusb0.1.10 版本的驅(qū)動支持,, 所以需要修改內(nèi)核源碼usb.c 文件,, 不把數(shù)碼相機作為USB 存儲設(shè)備。編譯內(nèi)核映像使用命令make zImage, 建立模塊使用命令make modules.
3.1.2 創(chuàng)建根文件系統(tǒng)
根文件系統(tǒng)是所有Unix 系統(tǒng)不可或缺的組件,, 頂層目錄/bin,、/dev、/etc,、/lib,、/proc、/sbin 和/usr 是必須的,。有幾項工作非常重要,, 首先是建立安裝GNU C 鏈接庫, glibc 套件包括若干鏈接庫,, 比如數(shù)學鏈接庫libm- 2.2.3.so, 共享c 鏈接庫libc- 2.2.3.so.
除了鏈接庫文件,, 還要復(fù)制動態(tài)鏈接庫及其符號連接。再就是建立設(shè)備文件,, 按照Unix 的傳統(tǒng),, 任何對象都可視為文件, 所有設(shè)備節(jié)點都放在/dev 目錄下,, 包括zero,、random、tty0,、tty1,、ttyS0、tty,、console,、mem、null, 另外還需要建立必要的符號連接:
fd- >/proc/self/fd, stdin- >fd/0, stdout- >fd/1, stderr- >fd/2.然后選擇主要的系統(tǒng)命令,, BusyBox 無疑是最方便的套件, 成功安裝后,, /bin 目錄下會出現(xiàn)二進制文件busybox, 對需要的命令建立對BusyBox 的符號連接,。
為根文件系統(tǒng)選擇文件系統(tǒng)是很重要的工作。JFFS2 文件系統(tǒng)的特點是可被寫入,、具有永久性,、斷電可靠性而且可以壓縮。JFFS2 會為垃圾回收功能維護空間, 提供斷電可靠性和損耗平衡這兩個對flash 系統(tǒng)非常重要的特性,。由于抓拍系統(tǒng)工作在開放式的環(huán)境中,, 穩(wěn)定性、可靠性是首先要考慮的,, 所以選擇JFFS2.用mkfs.jffs2 工具程序建立文件系統(tǒng)的映像: mkfs.
jffs2- r rootfs/- o images/rootfs- jffs2.image.
3.1.3 Bootloader 代碼,。
Bootloader 主要負責加載內(nèi)核, 盡管它在系統(tǒng)啟動期間執(zhí)行的時間很短,, 但是非常重要的系統(tǒng)組件,, 對嵌入式系統(tǒng)來說是一件特別的工作。Bootloader 是嚴重依賴于硬件而實現(xiàn)的,, 目前以ARM為基礎(chǔ)的系統(tǒng)還沒有標準的Bootloader, 針對本系統(tǒng)的硬件特性,, 在ppcboot 的基礎(chǔ)上加以修改, 生成適合本系統(tǒng)的啟動代碼,。
3.2 應(yīng)用程序的開發(fā)
程序主要實現(xiàn)以下功能: 現(xiàn)場紅燈和線圈信號的采集,; 控制相機拍照、保存參數(shù),、傳輸照片和刪除照片,; 處理按鍵信息并送數(shù)碼管顯示; 通過以太網(wǎng)遠程下載照片,, 也可以用U 盤本地下載照片,。應(yīng)用程序的總體結(jié)構(gòu)如圖7 所示。
系統(tǒng)軟件的設(shè)計主要是控制相機的USB 通訊模塊的編寫,、網(wǎng)絡(luò)傳輸模塊的編寫,、信號采集模塊的編寫和串口通訊模塊的編寫。其中USB 通訊模塊是關(guān)鍵,, 需要嚴格遵守數(shù)碼相機的通訊協(xié)議,; 網(wǎng)絡(luò)傳輸采用客戶機服務(wù)器方式, 本機作為客戶機,, 工控中心設(shè)置為服務(wù)器,。檢測信號模塊主要是讀取并口信息, 并口的操作使用端口I/O, 簡單,、操作性強,, 并且可以清楚說明編寫設(shè)備驅(qū)動程序開發(fā)所必需的底層硬件控制過程。在Linux 中有一個用于輸入的命令inb( address) 和一個用于輸出的命令outb( value, address) .C 語言的宏擴展實現(xiàn)了這兩個函數(shù),, 而且不涉及任何函數(shù)庫,, 但使用這兩個函數(shù)需要一些額外的函數(shù), 函數(shù)ioperm( ) 從內(nèi)核中申請和釋放端口訪問權(quán),。在Linux 下,, 串口一般作為一個終端接口,, 即tty 接口, POSIX.1 定義了一個查詢和操作終端的標準接口,, 該接口被稱作termios,在系統(tǒng)的頭文件
程序處理流程如圖8 所示,。
4 結(jié)束語
該數(shù)碼電子警察系統(tǒng)采用高分辨率的數(shù)碼相機,, 清晰度高, 在運行的過程中,, 抓拍成功率達到98%, 照片合格率達到95%, 誤拍率低,, 適用于各種惡劣的環(huán)境條件。采用實時性高的Linux2.6.12 的內(nèi)核,, 提供對S3C2410 的專門的支持,。該系統(tǒng)穩(wěn)定、可靠,、實時性強,, 且完全自主開發(fā), 可有效控制成本,, 有很強的市場競爭力,。結(jié)合圖像處理技術(shù), 構(gòu)建數(shù)碼視頻電子警察系統(tǒng)有更廣闊的前景,, 這將是下一步開發(fā)的重點,。