基於三星ARM9(S3C2410)的交通違章抓拍系統的開發

ARM9的交通違章抓拍系統的開發

 

ARM9的交通違章抓拍系統的開發

智能交通系統(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接口電路設計

    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, 簡單、操作性強,並且可以清楚

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章