《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM9的交通違章抓拍系統(tǒng)的設(shè)計(jì)
基于ARM9的交通違章抓拍系統(tǒng)的設(shè)計(jì)
摘要: 介紹了基于ARM9系列芯片S3C2410,采用可裁減的Linux操作系統(tǒng),構(gòu)建交通違章抓拍系統(tǒng)的方法,詳細(xì)介紹了USB接口和以太網(wǎng)接口的電路設(shè)計(jì),最后介紹了應(yīng)用程序的結(jié)構(gòu)和運(yùn)行流程。
關(guān)鍵詞: ARM ARM9 交通違章 智能交通 S3C2410
Abstract:
Key words :

1 引言

智能交通系統(tǒng)(ITS)將先進(jìn)的信息技術(shù)、數(shù)據(jù)通訊傳輸技術(shù)、電子控制技術(shù)、計(jì)算機(jī)處理技術(shù)等應(yīng)用于交通運(yùn)輸行業(yè),從而實(shí)現(xiàn)各種運(yùn)輸方式發(fā)展規(guī)劃的現(xiàn)代化、決策的科學(xué)化和管理的智能化。數(shù)碼電子警察是現(xiàn)在應(yīng)用比較廣泛的一種智能交通產(chǎn)品, 利用數(shù)碼相機(jī)技術(shù)和相應(yīng)的車輛檢測(cè)與控制技術(shù), 自動(dòng)抓拍闖紅燈的車輛。數(shù)字化、網(wǎng)絡(luò)化、小型化和智能化已經(jīng)成為當(dāng)前電子警察的主要發(fā)展趨勢(shì)。目前國(guó)內(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 是開源的、免費(fèi)的, 從技術(shù)和經(jīng)濟(jì)的角度來(lái)看都是最佳選擇。S3C2410 是韓國(guó)三星( Samsung) 公司設(shè)計(jì)的32 位RISC 嵌入式處理器。該處理器為手持設(shè)備和一般性應(yīng)用提供了一個(gè)高性價(jià)比、低功耗、高性能的解決方案。該芯片基于ARM920T 內(nèi)核, 采用五級(jí)流水線和哈佛結(jié)構(gòu), 提供1.1MIPS/MHz 的性能。ARM920T 具有全性能的內(nèi)存管理單元MMU(Memory Management Unit) 、獨(dú)立的16KB 指令和數(shù)據(jù)Cache 以及高速AMBA 總線接口。為了減少應(yīng)用系統(tǒng)設(shè)計(jì)的成本, S3C2410 集成了眾多的常用資源, 例如: LCD 控制器、NAND Flash 控制器、SDRAM控制器、系統(tǒng)片選邏輯以及一些常用的通訊接口等資源。

本文針對(duì)交通違章抓拍系統(tǒng)的特點(diǎn), 以S3C2410 為核心合理設(shè)計(jì)硬件電路, 并提供必須的USB 接口、串口、網(wǎng)絡(luò)接口和JTAG 口; 充分考慮抓拍的實(shí)時(shí)性和準(zhǔn)確性, 采用裁減的實(shí)用的Linux2.6.12 內(nèi)核, 制作根文件系統(tǒng), 開發(fā)應(yīng)用程序, 構(gòu)建軟硬件協(xié)作的嵌入式系統(tǒng)。

2 硬件設(shè)計(jì)

圖1 硬件總體結(jié)構(gòu)圖

圖1 硬件總體結(jié)構(gòu)圖

2.1 基于S3C2410 的電路設(shè)計(jì)

電路設(shè)計(jì)如圖2 所示。

圖2 基于S3C2410的總體電路設(shè)計(jì)

通訊接口部分包括USB 接口、以太網(wǎng)接口、串口。其中串口為常見的接口形式。這里主要說(shuō)明USB 接口和以太網(wǎng)接口。

S3C2410 集成了USB 控制器, 支持兩路USB Host 和一路USB Device.與USB Rev1.1 兼容, 支持低速和全速USB 設(shè)備。

本系統(tǒng)中設(shè)計(jì)兩路USB, 都作為Host 使用。USB 接口接線圖如圖3 所示。

圖3 USB接口電路設(shè)計(jì)

網(wǎng)絡(luò)接口芯片選用臺(tái)灣DAVICOM 公司的DM9000,DM9000 是帶有通用處理器接口的單片快速以太網(wǎng)MAC 控制器, 并帶有10/100M物理層接口, 內(nèi)部集成4K 字SRAM, 接口支持8 位、16 位、32 位處理器。接口設(shè)計(jì)電路設(shè)計(jì)如圖4 所示。

圖4 Ethernet接口電路設(shè)計(jì)

圖4 Ethernet接口電路設(shè)計(jì)

2.2 檢測(cè)電路設(shè)計(jì)

通常從交通指揮燈信號(hào)機(jī)中輸出的紅燈信號(hào)是220V/50Hz 的工頻交流電, 需要設(shè)計(jì)一個(gè)整流濾波電路將從信號(hào)機(jī)輸出的交通指揮燈信號(hào)變換為TTL 電平。交通指揮燈信號(hào)檢測(cè)部分采用一個(gè)光隔隔離內(nèi)外電路, 從交通指揮燈信號(hào)機(jī)輸入至檢測(cè)板的是220V/50Hz 的交流電, 通過(guò)二級(jí)管全波整流后, 得到大約200V 的直流信號(hào), 再經(jīng)過(guò)電阻分壓, 接著使用100uF 的電容平波, 獲得5V 左右的直流電, 加到4N25 光隔輸入端, 輸出經(jīng)過(guò)一個(gè)反向器獲得5VTTL 電平輸出, 轉(zhuǎn)換電路如圖5 所示。

圖5 紅燈轉(zhuǎn)換電路

本系統(tǒng)采用環(huán)形線圈檢測(cè)系統(tǒng), 環(huán)形線圈檢測(cè)系統(tǒng)目前國(guó)內(nèi)外使用最廣泛的車輛檢測(cè)系統(tǒng), 它由3 部分組成: 埋設(shè)在路面下的環(huán)形線圈傳感器、信號(hào)檢測(cè)處理單元( 包括檢測(cè)信號(hào)放大單元、數(shù)據(jù)處理單元和通信接口) 及饋線。檢測(cè)單元、環(huán)形線圈與饋線線路共同組成一個(gè)LC 調(diào)諧電路。此電路中的電感主要決定于環(huán)形線圈的匝數(shù), 環(huán)形線圈是此電路的電感元件; 電容則決定于檢測(cè)單元中的電容的大小。當(dāng)電流通過(guò)環(huán)形線圈時(shí), 在其周圍形成一個(gè)電磁場(chǎng), 當(dāng)車輛行至線圈上方時(shí), 在金屬車體中感應(yīng)出渦流電流, 渦流電流產(chǎn)生與環(huán)路耦合、但方向相反電磁場(chǎng), 即互感, 使環(huán)形線圈電感量隨之降低, 因而引起電路諧振頻率的上升。只要檢測(cè)到此頻率隨時(shí)間變化的信號(hào), 就可檢測(cè)出是否有車輛通過(guò)。振蕩電路設(shè)計(jì)如圖6 所示。

圖6 線圈振蕩電路

3 軟件平臺(tái)的構(gòu)建和應(yīng)用程序的開發(fā)

3.1 構(gòu)建軟件平臺(tái)

系統(tǒng)的引導(dǎo)過(guò)程包括以下步驟:

( 1) 處理器重新啟動(dòng)以后, 執(zhí)行ROM啟動(dòng)代碼。

( 2)ROM啟動(dòng)代碼初始化CPU、內(nèi)存控制器以及片上設(shè)備,然后配置存儲(chǔ)映射。隨后執(zhí)行bootloader.

( 3) bootloader 將內(nèi)核從閃存解壓到RAM中, 然后跳到內(nèi)核的第一條指令處執(zhí)行。

( 4) 內(nèi)核初始化各種硬件設(shè)備, 掛載根文件系統(tǒng), 然后執(zhí)行init 進(jìn)程。

( 5) Init 進(jìn)程裝載運(yùn)行時(shí)共享庫(kù), 讀取配置文件/etc/inittab,執(zhí)行腳本/etc/rc.d/rcS.

構(gòu)建嵌入式軟件平臺(tái)需要準(zhǔn)備以下工作: 制作內(nèi)核、創(chuàng)建根文件系統(tǒng)和生成啟動(dòng)代碼bootloader.

3.1.1 制作Linux 內(nèi)核

采用Linux2.6.12 的內(nèi)核。在Linux2.6 中, 引入了很多非常有利于嵌入式應(yīng)用的功能。這些新功能包括實(shí)時(shí)性能的增強(qiáng)、更方便的移植性、對(duì)大容量?jī)?nèi)存的支持、支持微控制器和I/O系統(tǒng)的改進(jìn)等。2.6.12 提供了針對(duì)S3C2410 的配置, 使用命令make s3c2410_defconfig, 然后配置內(nèi)核使用命令make menuconfig,配置體系結(jié)構(gòu)( System Type) , 選擇S3C2410 Implementation,配置處理器類型, 選擇ARM9T, 接著配置通用選項(xiàng), 支持網(wǎng)絡(luò)、SYSVIPC 機(jī)制、支持ELF 文件格式, 選擇根文件系統(tǒng)為JFFS2, 然后再配置網(wǎng)絡(luò), 選擇網(wǎng)絡(luò)設(shè)備支持, 選擇串口支持、選擇文件系統(tǒng)與網(wǎng)絡(luò)文件系統(tǒng), 配置USB 設(shè)備選項(xiàng), 由于數(shù)碼相機(jī)是USB 設(shè)備, 我們使用libusb0.1.10 版本的驅(qū)動(dòng)支持, 所以需要修改內(nèi)核源碼usb.c 文件, 不把數(shù)碼相機(jī)作為USB 存儲(chǔ)設(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 是必須的。有幾項(xiàng)工作非常重要, 首先是建立安裝GNU C 鏈接庫(kù), glibc 套件包括若干鏈接庫(kù), 比如數(shù)學(xué)鏈接庫(kù)libm- 2.2.3.so, 共享c 鏈接庫(kù)libc- 2.2.3.so.

除了鏈接庫(kù)文件, 還要復(fù)制動(dòng)態(tài)鏈接庫(kù)及其符號(hào)連接。再就是建立設(shè)備文件, 按照Unix 的傳統(tǒng), 任何對(duì)象都可視為文件, 所有設(shè)備節(jié)點(diǎn)都放在/dev 目錄下, 包括zero、random、tty0、tty1、ttyS0、tty、console、mem、null, 另外還需要建立必要的符號(hào)連接:

fd- >/proc/self/fd, stdin- >fd/0, stdout- >fd/1, stderr- >fd/2.然后選擇主要的系統(tǒng)命令, BusyBox 無(wú)疑是最方便的套件, 成功安裝后, /bin 目錄下會(huì)出現(xiàn)二進(jìn)制文件busybox, 對(duì)需要的命令建立對(duì)BusyBox 的符號(hào)連接。

為根文件系統(tǒng)選擇文件系統(tǒng)是很重要的工作。JFFS2 文件系統(tǒng)的特點(diǎn)是可被寫入、具有永久性、斷電可靠性而且可以壓縮。JFFS2 會(huì)為垃圾回收功能維護(hù)空間, 提供斷電可靠性和損耗平衡這兩個(gè)對(duì)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 主要負(fù)責(zé)加載內(nèi)核, 盡管它在系統(tǒng)啟動(dòng)期間執(zhí)行的時(shí)間很短, 但是非常重要的系統(tǒng)組件, 對(duì)嵌入式系統(tǒng)來(lái)說(shuō)是一件特別的工作。Bootloader 是嚴(yán)重依賴于硬件而實(shí)現(xiàn)的, 目前以ARM為基礎(chǔ)的系統(tǒng)還沒有標(biāo)準(zhǔn)的Bootloader, 針對(duì)本系統(tǒng)的硬件特性, 在ppcboot 的基礎(chǔ)上加以修改, 生成適合本系統(tǒng)的啟動(dòng)代碼。

3.2 應(yīng)用程序的開發(fā)

程序主要實(shí)現(xiàn)以下功能: 現(xiàn)場(chǎng)紅燈和線圈信號(hào)的采集; 控制相機(jī)拍照、保存參數(shù)、傳輸照片和刪除照片; 處理按鍵信息并送數(shù)碼管顯示; 通過(guò)以太網(wǎng)遠(yuǎn)程下載照片, 也可以用U 盤本地下載照片。應(yīng)用程序的總體結(jié)構(gòu)如圖7 所示。

圖6 程序結(jié)構(gòu)圖

系統(tǒng)軟件的設(shè)計(jì)主要是控制相機(jī)的USB 通訊模塊的編寫、網(wǎng)絡(luò)傳輸模塊的編寫、信號(hào)采集模塊的編寫和串口通訊模塊的編寫。其中USB 通訊模塊是關(guān)鍵, 需要嚴(yán)格遵守?cái)?shù)碼相機(jī)的通訊協(xié)議; 網(wǎng)絡(luò)傳輸采用客戶機(jī)服務(wù)器方式, 本機(jī)作為客戶機(jī), 工控中心設(shè)置為服務(wù)器。檢測(cè)信號(hào)模塊主要是讀取并口信息, 并口的操作使用端口I/O, 簡(jiǎn)單、操作性強(qiáng), 并且可以清楚說(shuō)明編寫設(shè)備驅(qū)動(dòng)程序開發(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)和釋放端口訪問(wèn)權(quán)。在Linux 下, 串口一般作為一個(gè)終端接口, 即tty 接口, POSIX.1 定義了一個(gè)查詢和操作終端的標(biāo)準(zhǔn)接口, 該接口被稱作termios,在系統(tǒng)的頭文件中定義。termios 是一個(gè)數(shù)據(jù)結(jié)構(gòu)和一系列操作這些數(shù)據(jù)結(jié)構(gòu)的函數(shù), 這些函數(shù)一起構(gòu)成了通用的終端界面, 提供對(duì)終端的有效控制操作, 使得系統(tǒng)具有復(fù)雜的異步串口設(shè)備處理能力。

程序處理流程如圖8 所示。

圖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 的專門的支持。該系統(tǒng)穩(wěn)定、可靠、實(shí)時(shí)性強(qiáng), 且完全自主開發(fā), 可有效控制成本, 有很強(qiáng)的市場(chǎng)競(jìng)爭(zhēng)力。結(jié)合圖像處理技術(shù), 構(gòu)建數(shù)碼視頻電子警察系統(tǒng)有更廣闊的前景, 這將是下一步開發(fā)的重點(diǎn)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。