基于ARM9的交通違章抓拍設計與實現

ARM 131瀏覽

1 引言  

智能交通系統(ITS)將先進的信息技術、數據通訊傳輸技術、電子控制技術、計算機處理技術等應用于交通運輸行業,從而實現各種運輸方式發展規劃的現代化、決策的科學化和管理的智能化。數碼電子警察是現在應用比較廣泛的一種智能交通產品, 利用數碼相機技術和相應的車輛檢測與控制技術, 自動抓拍闖紅燈的車輛。數字化、網絡化、小型化和智能化已經成為當前電子警察的主要發展趨勢。目前國內的產品多以Windows操作系統和x86 硬件體系為核心構建, 有成本高、體積大、穩定性欠缺的不足之處。  

以Linux 操作系統和RAM7 或RAM9 系列芯片為核心構建嵌入式系統是目前最流行的嵌入式開發策略。Linux 是典型的嵌入式操作系統, 發展最快, 應用最廣泛。Linux 是開源的、免費的, 從技術和經濟的角度來看都是最佳選擇。S3C2410 是韓國三星( Samsung) 公司設計的32 位RISC 嵌入式處理器。該處理器為手持設備和一般性應用提供了一個高性價比、低功耗、高性能的解決方案。該芯片基于ARM920T 內核, 采用五級流水線和哈佛結構, 提供1.1MIPS/MHz 的性能。ARM920T 具有全性能的內存管理單元MMU(Memory Management Unit) 、獨立的16KB 指令和數據Cache 以及高速AMBA 總線接口。為了減少應用系統設計的成本, S3C2410 集成了眾多的常用資源, 例如: LCD 控制器、NAND Flash 控制器、SDRAM控制器、系統片選邏輯以及一些常用的通訊接口等資源。  

本文針對交通違章抓拍系統的特點, 以S3C2410 為核心合理設計硬件電路, 并提供必須的USB 接口、串口、網絡接口和JTAG 口; 充分考慮抓拍的實時性和準確性, 采用裁減的實用的Linux2.6.12 內核, 制作根文件系統, 開發應用程序, 構建軟硬件協作的嵌入式系統。  

2 硬件設計


 
圖1 硬件總體結構圖  

2.1 基于S3C2410 的電路設計  

電路設計如圖2 所示。

  

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

S3C2410 集成了USB 控制器, 支持兩路USB Host 和一路USB Device.與USB Rev1.1 兼容, 支持低速和全速USB 設備。  
本系統中設計兩路USB, 都作為Host 使用。USB 接口接線圖如圖3 所示。


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

  
圖4 Ethernet接口電路設計linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
                                
2.2 檢測電路設計  

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


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

  
3 軟件平臺的構建和應用程序的開發  
3.1 構建軟件平臺  

系統的引導過程包括以下步驟: 
 
( 1) 處理器重新啟動以后, 執行ROM啟動代碼。  
( 2)ROM啟動代碼初始化CPU、內存控制器以及片上設備,然后配置存儲映射。隨后執行bootloader.  
( 3) bootloader 將內核從閃存解壓到RAM中, 然后跳到內核的第一條指令處執行。  
( 4) 內核初始化各種硬件設備, 掛載根文件系統, 然后執行init 進程。  
( 5) Init 進程裝載運行時共享庫, 讀取配置文件/etc/inittab,執行腳本/etc/rc.d/rcS.  構建嵌入式軟件平臺需要準備以下工作: 制作內核、創建根文件系統和生成啟動代碼bootloader.  

3.1.1 制作Linux 內核  

采用Linux2.6.12 的內核。在Linux2.6 中, 引入了很多非常有利于嵌入式應用的功能。這些新功能包括實時性能的增強、更方便的移植性、對大容量內存的支持、支持微控制器和I/O系統的改進等。2.6.12 提供了針對S3C2410 的配置, 使用命令make s3c2410_defconfig, 然后配置內核使用命令make menuconfig,配置體系結構( System Type) , 選擇S3C2410 Implementation,配置處理器類型, 選擇ARM9T, 接著配置通用選項, 支持網絡、SYSVIPC 機制、支持ELF 文件格式, 選擇根文件系統為JFFS2, 然后再配置網絡, 選擇網絡設備支持, 選擇串口支持、選擇文件系統與網絡文件系統, 配置USB 設備選項, 由于數碼相機是USB 設備, 我們使用libusb0.1.10 版本的驅動支持, 所以需要修改內核源碼usb.c 文件, 不把數碼相機作為USB 存儲設備。編譯內核映像使用命令make zImage, 建立模塊使用命令make modules.  

3.1.2 創建根文件系統  

根文件系統是所有Unix 系統不可或缺的組件, 頂層目錄/bin、/dev、/etc、/lib、/proc、/sbin 和/usr 是必須的。有幾項工作非常重要, 首先是建立安裝GNU C 鏈接庫, glibc 套件包括若干鏈接庫, 比如數學鏈接庫libm- 2.2.3.so, 共享c 鏈接庫libc- 2.2.3.so.  

除了鏈接庫文件, 還要復制動態鏈接庫及其符號連接。再就是建立設備文件, 按照Unix 的傳統, 任何對象都可視為文件, 所有設備節點都放在/dev 目錄下, 包括zero、random、tty0、tty1、ttyS0、tty、console、mem、null, 另外還需要建立必要的符號連接:  

fd- >/proc/self/fd, stdin- >fd/0, stdout- >fd/1, stderr- >fd/2.然后選擇主要的系統命令, BusyBox 無疑是最方便的套件, 成功安裝后, /bin 目錄下會出現二進制文件busybox, 對需要的命令建立對BusyBox 的符號連接。  

為根文件系統選擇文件系統是很重要的工作。JFFS2 文件系統的特點是可被寫入、具有永久性、斷電可靠性而且可以壓縮。JFFS2 會為垃圾回收功能維護空間, 提供斷電可靠性和損耗平衡這兩個對flash 系統非常重要的特性。由于抓拍系統工作在開放式的環境中, 穩定性、可靠性是首先要考慮的, 所以選擇JFFS2.用mkfs.jffs2 工具程序建立文件系統的映像: mkfs.  jffs2- r rootfs/- o images/rootfs- jffs2.image.  

3.1.3 Bootloader 代碼。  

Bootloader 主要負責加載內核, 盡管它在系統啟動期間執行的時間很短, 但是非常重要的系統組件, 對嵌入式系統來說是一件特別的工作。Bootloader 是嚴重依賴于硬件而實現的, 目前以ARM為基礎的系統還沒有標準的Bootloader, 針對本系統的硬件特性, 在ppcboot 的基礎上加以修改, 生成適合本系統的啟動代碼。  
3.2 應用程序的開發  

程序主要實現以下功能: 現場紅燈和線圈信號的采集; 控制相機拍照、保存參數、傳輸照片和刪除照片; 處理按鍵信息并送數碼管顯示; 通過以太網遠程下載照片, 也可以用U 盤本地下載照片。應用程序的總體結構如圖7 所示。


  
系統軟件的設計主要是控制相機的USB 通訊模塊的編寫、網絡傳輸模塊的編寫、信號采集模塊的編寫和串口通訊模塊的編寫。其中USB 通訊模塊是關鍵, 需要嚴格遵守數碼相機的通訊協議; 網絡傳輸采用客戶機服務器方式, 本機作為客戶機, 工控中心設置為服務器。檢測信號模塊主要是讀取并口信息, 并口的操作使用端口I/O, 簡單、操作性強, 并且可以清楚說明編寫設備驅動程序開發所必需的底層硬件控制過程。在Linux 中有一個用于輸入的命令inb( address) 和一個用于輸出的命令outb( value, address) .C 語言的宏擴展實現了這兩個函數, 而且不涉及任何函數庫, 但使用這兩個函數需要一些額外的函數, 函數ioperm( ) 從內核中申請和釋放端口訪問權。在Linux 下, 串口一般作為一個終端接口, 即tty 接口, POSIX.1 定義了一個查詢和操作終端的標準接口, 該接口被稱作termios,在系統的頭文件中定義。termios 是一個數據結構和一系列操作這些數據結構的函數, 這些函數一起構成了通用的終端界面, 提供對終端的有效控制操作, 使得系統具有復雜的異步串口設備處理能力。

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

4 結束語  

該數碼電子警察系統采用高分辨率的數碼相機, 清晰度高, 在運行的過程中, 抓拍成功率達到98%, 照片合格率達到95%, 誤拍率低, 適用于各種惡劣的環境條件。采用實時性高的Linux2.6.12 的內核, 提供對S3C2410 的專門的支持。該系統穩定、可靠、實時性強, 且完全自主開發, 可有效控制成本, 有很強的市場競爭力。結合圖像處理技術, 構建數碼視頻電子警察系統有更廣闊的前景, 這將是下一步開發的重點。

七星彩走势图2元网官网