999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ARM技術(shù)的智能車無線控制系統(tǒng)設(shè)計研究

2020-06-30 10:15:22張金博張喜民袁戰(zhàn)軍
微型電腦應(yīng)用 2020年4期

張金博 張喜民 袁戰(zhàn)軍

摘 要:?智能車輛的發(fā)展對控制系統(tǒng)提出了更高的要求,因而設(shè)計了一款智能車無線控制系統(tǒng)。系統(tǒng)基于ARM Linux,開發(fā)并實現(xiàn)了車載系統(tǒng)客戶端,在搭建了交叉編譯開發(fā)環(huán)境的基礎(chǔ)上對嵌入式Linux內(nèi)核進行了配置編譯,并詳細介紹了數(shù)據(jù)采集與發(fā)送層的編碼實現(xiàn)過程,實現(xiàn)了采集圖像與錄制視頻、網(wǎng)路發(fā)送與監(jiān)控功能,各模塊設(shè)計為獨立進程,各子模塊作為獨立線程運行,監(jiān)控軟件客戶端通過內(nèi)存盤中的文件完成數(shù)據(jù)交換過程,從而有效實現(xiàn)了異步執(zhí)行和遠程監(jiān)控功能。

關(guān)鍵詞:?智能車輛無線控制; ARM Linux; 遠程監(jiān)控系統(tǒng); 實現(xiàn)路徑

中圖分類號: TP 273.5? ? ? 文獻標志碼: A

Design and Research of Wireless Control System for Smart

Car Based on ARM Technology

ZHANG Jinbo, ZHANG Ximin, YUAN Zhanjun

(School of Information Engineering, Shanxi Institute of International Trade & Commerce, Xian, Shanxi? 712046, China)

Abstract:

The development of intelligent vehicles puts forward higher requirements for the control system. This paper mainly completes the design of a wireless control system of the smart car. The system is based on ARM Linux, develops and implements the vehicle system client, and builds a cross-compilation development environment. Based on the configuration and compilation of the embedded Linux kernel, the coding implementation process of the data acquisition and transmission layer is introduced in detail, and the functions of collecting images and recording video, network transmission and monitoring are realized. Each module is designed as an independent process. The module runs as a separate thread, and the monitoring software client completes the data exchange process through the files in the memory disk, thereby effectively implementing the asynchronous execution and remote monitoring functions.

Key words:

intelligent vehicle wireless control; ARM Linux; remote monitoring system; implementation path

0 引言

快速發(fā)展的人工智能為智能車輛的完善提供了有力支撐,在智能交通系統(tǒng)中智能車輛占用重要地位,促使在目前的汽車行業(yè)中自動駕駛成為熱門發(fā)展技術(shù),該技術(shù)以駕駛環(huán)境為依據(jù)并通過對人類行為進行模擬做出相應(yīng)決策,在此基礎(chǔ)上完成駕駛行為,因此對智能車無線控制系統(tǒng)的研究成為主要方向之一,嵌入式系統(tǒng)可有效滿足控制需求,其核心部分即嵌入式系統(tǒng)軟件負責(zé)實現(xiàn)系統(tǒng)業(yè)務(wù)邏輯的任務(wù),具體通過對嵌入式硬件平臺進行控制和調(diào)度完成。本文主要對基于ARM Linux 的遠程監(jiān)控系統(tǒng)進行了研究,重點介紹了監(jiān)控系統(tǒng)客戶端軟件的實現(xiàn)過程,完成了底層開發(fā)環(huán)境及用戶交互的圖形系統(tǒng)的搭建,并實現(xiàn)了核心業(yè)務(wù)模塊功能。

1 Linux的構(gòu)建和移植

開發(fā)Linux程序的步驟為:首先完成交叉編譯開發(fā)環(huán)境的建立,然后向目標平臺移植 Linux 內(nèi)核,將程序邏輯通過PC Linux 完成編寫調(diào)通,通過模擬模塊實現(xiàn)同相關(guān)硬件的有效對接,及時修正測試中的軟件缺陷,接下來在目標平臺上交叉編譯調(diào)通的軟件模塊,通過測試進一步發(fā)現(xiàn)并修正相應(yīng)軟件缺陷。

1.1 交叉編譯開發(fā)環(huán)境的建立

交叉編譯開發(fā)環(huán)境是移植Linux內(nèi)核及開發(fā) Linux 的基礎(chǔ),通常是將交叉編譯器運行于PC平臺或高服務(wù)器(即宿主機HOST)上通過編譯鏈接實現(xiàn)目標平臺代碼的生成,本文的遠程監(jiān)控系統(tǒng)以普通PC作為宿主機完成交叉編譯開發(fā)環(huán)境的建立,主要包括交叉編譯工具鏈 的安裝和測試(arm-linux-gcc,運行于PC平臺的交叉編譯器,負責(zé)生成ARM平臺二進制代碼)以及通訊測試。本文選用的硬件開發(fā)板卡S3C6410含有arm-linux-gcc-壓縮包,先在 s3c6410-gcc(位于HOME目錄下)中建立一個存放交叉編譯工具鏈的目錄,進入目錄拷貝并解壓TAR 壓縮包到安裝目錄,此目錄通過指定Linux環(huán)境變量即可完成到可執(zhí)行程序搜索路徑的添加,從而完成交叉編譯環(huán)境的建立[1]。

1.2 配置編譯Linux內(nèi)核

作為嵌入式系統(tǒng)軟件的關(guān)鍵部分Linux內(nèi)核由系統(tǒng)底層的初始代碼構(gòu)成(針對特定目標平臺),提供最基本的各種系統(tǒng)服務(wù),啟動系統(tǒng)時需先完成基本的初始化工作(通過引導(dǎo)器),在內(nèi)存中裝載Linux 內(nèi)核后跳轉(zhuǎn)到內(nèi)存位置繼續(xù)執(zhí)行,為滿足項目需求本文使用了附帶移植好Linux 內(nèi)核的開發(fā)板卡,使包括配置CPU 類型、線程調(diào)度模型等在內(nèi)的系統(tǒng)核心功能無需額外改動,主要改動硬件外設(shè)。系統(tǒng)客戶端的硬件外設(shè)包括液晶屏、GPS及GPRS 模塊(二者通過S3C6410 的串口通信)、SD卡插槽及USB 接口各一個SOC內(nèi)建的串口驅(qū)動已包含在內(nèi)核配置中無需改動。系統(tǒng)的內(nèi)核配置采用xconfig完成,選擇Device Driver/Netwrok device support(位于界面左側(cè)列表)后勾選PPP support,從而在該Linux內(nèi)核中加入PPP 的支持;選擇HID Devices / USB Device? support 后勾選需支持的 USB 設(shè)備驅(qū)動;選擇MMC/card support后勾選所需存儲設(shè)備驅(qū)動。配置完成后當(dāng)前目錄生成一個配置文件(config),可通過 make 命令完成編譯,根據(jù)板卡的說明書將由make uImage 命令生成內(nèi)核鏡像燒錄至板卡上[2]。

2 圖像采集與視頻錄制的設(shè)計與實現(xiàn)

2.1 硬件加速模塊與軟件 API 接口

本文選用了S3C6410,其硬件JPEG編解碼模塊支持編碼輸入為YCbCr 視頻源、解碼輸入為JPEG 圖像數(shù)據(jù)(UXGA分辨率可達1600x1 200),具備攝像頭數(shù)據(jù)直接輸入功能;JPEG 硬件解碼器的API包括初始化、編解碼執(zhí)行、配置等,調(diào)用編碼功能涉及到的API流程為:首先需對編碼器進行初始化處理(EncodeInit ),涉及底層操作的硬件編碼器可直接訪問內(nèi)存(無需通過SOC 的 MMU ),JPEG 編碼器使用驅(qū)動預(yù)留的內(nèi)存區(qū)域(物理連續(xù));接下來通過通過GetEncodeInBuf和GetEncodeOutBuf完成存放源圖像數(shù)據(jù)及存放編碼后數(shù)據(jù)的獲?。ㄎ挥趦?nèi)存區(qū)域中),在此基礎(chǔ)上完成JPEG 編碼操作(由EncodeExe 執(zhí)行),選項配置由SetConfig完成,將獲取的源圖形數(shù)據(jù)(位于指定內(nèi)存區(qū)域)進行編碼后,在指定內(nèi)存輸出區(qū)域存放圖像,最后調(diào)用EncodeDeInit釋放系統(tǒng)資源并關(guān)閉編碼器。

MPEG4編解碼模塊支持 MPEG4 SimpleProfie規(guī)格的編解碼,其API 調(diào)用流程類似于JPEG 硬件編碼器,遠程監(jiān)控系統(tǒng)中使用了多個API,通過SetConfig 函數(shù)完成配置,Init 函數(shù)和Decode函數(shù)分別用于初始化硬件模塊及解碼,內(nèi)存空間指針(放置輸入數(shù)據(jù))通過調(diào)用GetInBuf 函數(shù)獲取后調(diào)用Exe 函數(shù)執(zhí)行,接下來通過 GetOutBuf 函數(shù)的調(diào)用完成輸出數(shù)據(jù)內(nèi)存指針的獲取,最后調(diào)用 deInit 函數(shù)關(guān)閉編碼器[3]。

2.2 數(shù)據(jù)與內(nèi)存管理

攝像頭采集子模塊作為數(shù)據(jù)的生產(chǎn)者,其所產(chǎn)生的 YUV 數(shù)據(jù)包可被兩個子模塊即圖像壓縮存儲(采集圖像需壓縮成 JPEG 圖像)及視頻編碼存儲(需壓縮記錄到AVI 文件中)使用??紤]到嵌入式系統(tǒng)有限的總線帶寬,數(shù)據(jù)量較大的圖像無法采用內(nèi)存拷貝的方式,通過內(nèi)存管理子模塊(屬于C++類)主要負責(zé)對數(shù)據(jù)包流向及內(nèi)存使用情況進行控制,實現(xiàn)兩個子模塊各自具有指針,能夠指向同一YUV 圖像數(shù)據(jù),子模塊使用完畢后通過一個外部模塊釋放圖像數(shù)據(jù)指針的內(nèi)存空間。C++類聚合了MemServer(內(nèi)存池類),由內(nèi)存池負責(zé)分配與釋放大量的內(nèi)存,使內(nèi)存碎片問題得以有效解決,并對工作中的內(nèi)存使用狀況進行監(jiān)控以確保內(nèi)存的合理分配和使用[4]。數(shù)據(jù)包從采集到編碼以數(shù)據(jù)與內(nèi)存管理模塊作為中轉(zhuǎn),在內(nèi)存的實際分配和釋放過程中記錄內(nèi)存的大小,該模塊通過調(diào)用推送方法將數(shù)據(jù)包推入,同時注冊了自有的一個函數(shù)作為回調(diào)函數(shù),通過回調(diào)函數(shù)的調(diào)用實現(xiàn)了數(shù)據(jù)包指針在各編碼子模塊使用完后返回至數(shù)據(jù)管理子模塊。此外,采用自主編程實現(xiàn)內(nèi)存池類,預(yù)先malloc內(nèi)存區(qū)域(若干塊等長)實現(xiàn)MemServer內(nèi)部管理,對各個塊的狀態(tài)(使用與空閑兩條鏈表)進行記錄,外部以數(shù)據(jù)大小為依據(jù)對內(nèi)存接口進行調(diào)用分配,其返回給外部的指針包括一塊指向內(nèi)存塊指針(標記為空閑)或一塊內(nèi)存塊合并的指針(合并連續(xù)的多個空閑塊),并向使用鏈表移動這些記錄;外部則以鏈表上的記錄為依據(jù)完成內(nèi)存區(qū)域的釋放后將其標記為空閑,記錄返回至空閑鏈表上(恢復(fù)合并的內(nèi)存塊到原始分離狀態(tài))[5]。

采集到新的數(shù)據(jù)幀后,采集模塊通過內(nèi)存分配接口的調(diào)用完成內(nèi)存空間的申請,用數(shù)據(jù)包封裝指向此內(nèi)存空間的指針,結(jié)構(gòu)體如下(包含了數(shù)據(jù)指針和使用計數(shù),標記使用過這塊內(nèi)存區(qū)域的編碼模塊的個數(shù))[6]。

struct MediaPackage

{

int ref;

MMStreamPackage

*

pak;

};

若編碼模塊在數(shù)量上等于數(shù)據(jù)包的使用計數(shù),說明所有編碼模塊均使用了此數(shù)據(jù)包可安全釋放。各編碼模塊承自同一父類EncodeServer,即可使用父類的各個接口(包括數(shù)據(jù)推送、清除緩沖、回調(diào)函數(shù)),并在初始化時注冊指針,內(nèi)存管理子模塊據(jù)此可預(yù)先獲知采集數(shù)據(jù)的消費者數(shù)目。內(nèi)存管理子模塊對EncodeServer 類進行維護,通過指針指向即可完成推送/清空數(shù)據(jù)、注冊回調(diào)函數(shù),數(shù)據(jù)管理同編碼間的關(guān)系得以抽象和簡化,提高了系統(tǒng)的擴展性。當(dāng)采集模塊推入數(shù)據(jù)時候,數(shù)據(jù)管理子模塊統(tǒng)一對數(shù)據(jù)包進行釋放處理[7]。

2.3 攝像頭采集子模塊

該子模塊同樣屬于C++的類,主要由圖像采集線程和數(shù)據(jù)推送線程構(gòu)成,攝像頭模塊驅(qū)動采用標準V4L 接口(/dev 目錄下的設(shè)備文件),程序讀寫數(shù)據(jù)通過標準Linux文件調(diào)用讀取API完成,并通過ioctl 函數(shù)完成參數(shù)設(shè)置。圖像采集線程啟動后打開V4L設(shè)備文件(同模擬攝像頭對應(yīng))并設(shè)置采集參數(shù),在此基礎(chǔ)上對YUV 幀數(shù)據(jù)(由攝像頭模塊返回)進行持續(xù)讀取。采集線程向各新YUV 數(shù)據(jù)分配新的數(shù)據(jù)包并打上時間戳(標記采集時間),再將數(shù)據(jù)包放入一個屬于鏈表的緩沖內(nèi),指向數(shù)據(jù)包的指針[8]。數(shù)據(jù)推送線程以預(yù)先設(shè)計好的間隔為依據(jù),將數(shù)據(jù)包從緩沖取出后推出給內(nèi)存管理子模塊,并通過清空緩沖及停止采集兩個函數(shù)接口的設(shè)置提升了系統(tǒng)的魯棒性。

3 圖像壓縮及視頻編碼存儲采集的實現(xiàn)

3.1 圖像壓縮存儲采集

該子模塊內(nèi)部包含一個作為輸入數(shù)據(jù)緩沖的鏈表和用于數(shù)據(jù)壓縮的工作線程構(gòu)成,被封裝成一個 C++的類。該模塊設(shè)置了回調(diào)函數(shù)設(shè)置接口,負責(zé)將子模塊的工作狀態(tài)傳遞給外部,系統(tǒng)的內(nèi)存管理子模塊通過此接口獲取并釋放數(shù)據(jù)包的指針,通過接口數(shù)據(jù)推送接口的調(diào)用 推入YUV 圖像數(shù)據(jù)包。數(shù)據(jù)包先以節(jié)點的形式掛載于鏈表上(作為緩沖),線程同步事件由推入的新數(shù)據(jù)觸發(fā),喚醒圖像壓縮工作線程(處于等待狀態(tài)),具體的工作線程流程如圖1所示,先以預(yù)定的拍照間隔為依據(jù)對數(shù)據(jù)包的時間戳進行檢查,圖像工作線程會將未達到間隔的數(shù)據(jù)標記為使用,并向內(nèi)存管理子模塊返回數(shù)據(jù)包(通過回調(diào)函數(shù)接口);工作線程在當(dāng)前數(shù)據(jù)包的時間戳大于上次拍照時間同預(yù)設(shè)時間間隔之和的情況下,通過JPEG編碼API的調(diào)用完成該YUV圖像到JPEG圖片的壓縮及在指定位置存儲過程[9]。

3.2 視頻編碼存儲采集

該子模塊由數(shù)據(jù)包鏈表、視頻壓縮工作線程及回調(diào)注冊接口構(gòu)成,此外還包含AVI 打包模塊負責(zé)處理MPEG4數(shù)據(jù)幀,將其以用戶設(shè)置的參數(shù)為依據(jù)打包為AVI視頻文件(適用于普通播放軟件)。通過數(shù)據(jù)推送接口的調(diào)用內(nèi)存管理子模塊完成YUV 圖像數(shù)據(jù)包的推入,其工作流程如圖2所示。

先對自身的工作狀態(tài)進行檢查,工作線程在沒有錄像任務(wù)的情況下標記數(shù)據(jù)表為使用,再將數(shù)據(jù)包返回至內(nèi)存管理子模塊(回調(diào)函數(shù)接口)。有錄像任務(wù)則將該 YUV圖像通過MPEG4編碼 API 的調(diào)用完成到MPEG4 幀的壓縮,然后由 AVI打包模塊封裝上時間戳和幀信息后打包,存儲到指定位置[10]。

4 總結(jié)

本文主要完成了基于ARM Linux智能車無線控制系統(tǒng)的設(shè)計,以S3C6410作為嵌入式系統(tǒng)平臺的主控,完成了客戶端軟件的設(shè)計,圖像采集與視頻錄制模塊主要由攝像頭采集、圖像壓縮存儲、編碼存儲等功能子模塊構(gòu)成,各子模塊間異步執(zhí)行(以獨立線程的方式運行),在分配的內(nèi)存區(qū)域中存放通過采集、編碼、壓縮處理后的信息以供后續(xù)處理,輸入內(nèi)存采用線性緩沖進行管理。

參考文獻

[1]李澤彬,姚有峰,張飛龍,等.基于單片機的智能家居語音控制系統(tǒng)設(shè)計[J]. 電子設(shè)計工程, 2017(8):175-177.

[2] 李云紅,張恒,張亞林,等.基于ARM的WiFi無線終端系統(tǒng)設(shè)計[J]. 計算機與數(shù)字工程, 2017(3):498-501.

[3] 葉身村.周慶.于振浩.基于KEA128的電磁直立智能車控制系統(tǒng)設(shè)計[J].汽車實用技術(shù),2018(21):27-28.

[4] 蘇元楷,季磊,聶嘉欣,等.基于STM32F407的路徑識別智能小車設(shè)計[J]. 信息通信, 2017(8):31-33.

[5] Jorge Godoy, Joshué Pérez, Enrique Onieva, et al. A driverless vehicle demonstration on motorways and in urban environments[J]. Transport, 2015 (3):253-263.

[6] Suresh Nanda Kumar, Ramasamy Panneerselvam. A Time-Dependent Vehicle Routing Problem with Time Windows for E-Commerce Supplier Site Pickups Using Genetic Algorithm[J]. Intelligent Information Management, 2015 (4):181-194.

[7] 王浩.基于RT5350嵌入式平臺的無線智能小車控制系統(tǒng)設(shè)計[J]. 泰山學(xué)院學(xué)報,2016(6):75-79.

[8] 張棟冰.基于TOPHAT-PCNN的圖像車輛目標檢測方法研究[J]. 南京大學(xué)學(xué)報(自然科學(xué)), 2017(3):590-597.

[9] 胡焯源,曹玉東,李羊.基于HSV顏色空間的車身顏色識別算法[J]. 遼寧工業(yè)大學(xué)學(xué)報(自然科學(xué)版), 2017(1):10-12.

[10] 黃姝娟,劉萍萍,白小軍,等.基于STM32的智能車控制系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2018(9):185-188.

(收稿日期: 2019.08.10)

主站蜘蛛池模板: 亚洲欧洲自拍拍偷午夜色无码| 视频一本大道香蕉久在线播放 | 国产视频a| 亚洲av无码专区久久蜜芽| 精品無碼一區在線觀看 | 五月激激激综合网色播免费| AV熟女乱| 人妻一区二区三区无码精品一区 | 久久女人网| 国产精品开放后亚洲| 91精品国产自产91精品资源| 亚洲天堂视频在线播放| 国产一区亚洲一区| 欧美劲爆第一页| 青青草一区二区免费精品| 国产自无码视频在线观看| 三级国产在线观看| 99r在线精品视频在线播放| 亚洲黄色高清| 久久无码免费束人妻| 狠狠五月天中文字幕| 91久久偷偷做嫩草影院精品| 久久婷婷综合色一区二区| 五月婷婷综合在线视频| 午夜精品一区二区蜜桃| 中文字幕调教一区二区视频| 中文字幕在线日韩91| 国产精品久久久久久久久| 国产成人超碰无码| 99re免费视频| 无遮挡一级毛片呦女视频| 色135综合网| 性欧美在线| 五月天在线网站| 日韩精品一区二区三区免费在线观看| 在线观看免费黄色网址| 午夜小视频在线| 亚洲av日韩av制服丝袜| 国产制服丝袜无码视频| 欧美成人精品欧美一级乱黄| 99热亚洲精品6码| 久久婷婷色综合老司机| 婷婷综合亚洲| 毛片视频网| 激情综合婷婷丁香五月尤物| 五月激激激综合网色播免费| 国产无遮挡猛进猛出免费软件| 国产免费好大好硬视频| 九九九精品视频| 99热国产这里只有精品无卡顿"| 亚洲中文字幕av无码区| 99精品国产电影| h视频在线播放| 国产欧美日韩免费| 福利国产微拍广场一区视频在线| 精品一区二区无码av| 韩国v欧美v亚洲v日本v| 欧美日韩中文字幕在线| 四虎精品国产AV二区| 丰满少妇αⅴ无码区| 91成人精品视频| 天天干伊人| 中文字幕欧美日韩高清| 国产精品久久久久久影院| 91人妻日韩人妻无码专区精品| 午夜精品福利影院| 性欧美久久| 亚洲VA中文字幕| 美女被操91视频| 99视频在线免费观看| 国产精品伦视频观看免费| 亚洲狠狠婷婷综合久久久久| 波多野结衣一二三| 99热这里只有精品免费国产| 国产精品久久久久久久久久久久| 日本91视频| 国产大片喷水在线在线视频| 久久婷婷色综合老司机| 免费A级毛片无码免费视频| 亚洲自拍另类| 国产成人免费| 午夜福利亚洲精品|