當前位置:首頁 > 物聯(lián)網(wǎng) > 智能應用
[導讀]分析RX-8025實時時鐘的工作原理和Linux的I2C總線驅(qū)動程序,構(gòu)建了高速公路視頻監(jiān)控系統(tǒng)下基于I2C實時時鐘控制系統(tǒng),完成了基于ARM和Linux的I2C驅(qū)動程序設(shè)計、I2C應用程序設(shè)計和實時時鐘控制應用程序設(shè)計,實現(xiàn)了同步實時時鐘,并應用于高速公路視頻監(jiān)控嵌入式系統(tǒng)中,能進行準確計時和系統(tǒng)時鐘同步,具有良好的效果和較高的社會應用價值。

摘要:分析RX-8025實時時鐘的工作原理和Linux的I2C總線驅(qū)動程序,構(gòu)建了高速公路視頻監(jiān)控系統(tǒng)下基于I2C實時時鐘控制系統(tǒng),完成了基于ARM和Linux的I2C驅(qū)動程序設(shè)計、I2C應用程序設(shè)計和實時時鐘控制應用程序設(shè)計,實現(xiàn)了同步實時時鐘,并應用于高速公路視頻監(jiān)控嵌入式系統(tǒng)中,能進行準確計時和系統(tǒng)時鐘同步,具有良好的效果和較高的社會應用價值。

隨著社會的發(fā)展,汽車不斷增多,高速公路上違章的車輛也逐漸增多,為了構(gòu)建一個平安交通和智能交通,視頻監(jiān)控系統(tǒng)在交通行業(yè)的應用也越來越多,為了能對高速公路進行監(jiān)控,高清視頻監(jiān)控也應用越來越廣泛。

文中將研究詳細分析RX8025和I2C的工作原理和通信協(xié)議和Linux的I2C總線驅(qū)動程序,設(shè)計一個應用在高速公路視頻監(jiān)控的基于I2C的RX-8025實時時鐘控制系統(tǒng),為高速公路的高清視頻監(jiān)控提供一個設(shè)計方案。

1 高速公路視頻監(jiān)控系統(tǒng)以及實時時鐘系統(tǒng)設(shè)計

本研究課題的高速公路高清視頻監(jiān)控系統(tǒng)采用TI公司的TMS320DM368,DM368是一款面向多媒體技術(shù)應用的高性能芯片,功能強大,集成了ARM9、硬件編碼協(xié)處理引擎(HDV ICP)、圖像處理子系統(tǒng)(VPSS)。DM368最高可以支持H.264編碼1080P格式30幀/s的速度。該處理器有I2C總線等外圍接口等,其中ARM9運行性能穩(wěn)定的Linux嵌入式操作系統(tǒng)。

視頻監(jiān)控系統(tǒng)中實時時鐘控制的設(shè)計采用DM368的I2C總線接口,設(shè)計基于ARM9的I2C云臺電機,完成驅(qū)動程序設(shè)計和應用程序設(shè)計,以及應用程序控制RX-8025實時時鐘,應用于視頻監(jiān)控系統(tǒng)中,達到全方位的高速公路視頻監(jiān)控。

2 RX-8025實時時鐘硬件構(gòu)成和通信協(xié)議

2.1 RX-8025簡介

RX-8025是一種具有高精度,包括32.768 kHz晶振時鐘I2C總線接口的實時時鐘芯片,該芯片提供的功能有6個中斷,2個系統(tǒng)鬧鐘功能、電源電壓監(jiān)測和數(shù)字時鐘精度調(diào)節(jié)功能來滿足不同精度要求,其中計時功能可以進行至陽歷二位數(shù)和年、月、日、時、分、秒為止的數(shù)據(jù)設(shè)定,包括計時和讀取,當陽歷的下二位數(shù)為4的倍數(shù)時,可自動識別至2099年。因此RX-8025適用于高清視頻監(jiān)控的嵌入式系統(tǒng),用于計時同步。

2.2 RX-8025管腳功能

SCL:I2C通信用的串行時鐘輸入,與時鐘信號同步。

SDA:與I2C通信串行時鐘同步,進行地址、數(shù)據(jù)、應答等的輸入輸出。

FOUT:由FOE控制的32.768 kHZ時鐘輸出端;

FOE:控制FOUT輸出時鐘信號的輸入腳內(nèi)置,當它接高電平時,F(xiàn)OUT腳輸出時鐘信號;

RX-8025使用I2C和外圍芯片進行數(shù)據(jù)通信,因此,本系統(tǒng)中ARM9和RX-8025通信需要通過I2C總線,因此需要完成Linux在ARM9的I2C驅(qū)動。

2.3 I2C硬件構(gòu)成和通信協(xié)議

I2C總線是由雙向數(shù)據(jù)線和時鐘線構(gòu)成的二線制串行總線,總線采用主從雙向通信,即總線上在某一時刻只有一個主設(shè)備總線上的其他設(shè)備都作為從設(shè)備,任何能夠進行發(fā)送和接收的設(shè)備都可以成為主設(shè)備,但是在同一時間內(nèi)只能有一個設(shè)備作為主設(shè)備,通常為處理器,其他器件作為從設(shè)備與主設(shè)備進行通信,采用唯一的 I2C地址識別。

如圖2所示I2C的工作時序圖所示,I2C總線在傳送數(shù)據(jù)過程中使用了3種信號。1)開始信號:SCL為高電平時,SDA由高電平向低電平跳變,表示將要開始傳送數(shù)據(jù);2)應答信號:從設(shè)備在接收到1個字節(jié)數(shù)據(jù)后向主設(shè)備發(fā)出一個低電平脈沖應答信號,表示已收到數(shù)據(jù),主設(shè)備根據(jù)從設(shè)備的應答信號做出是否繼續(xù)傳輸數(shù)據(jù)的操作;3)結(jié)束信號:為低電平時由低電平向高電平跳變,表示數(shù)據(jù)傳送結(jié)束。

總線具體的通信工作原理:主設(shè)備首先發(fā)出開始信號,接著發(fā)送的1個字節(jié)的數(shù)據(jù),其由高7位地址碼和最低1位方向位組成。系統(tǒng)中所有從設(shè)備將自己的地址與主設(shè)備發(fā)送到總線上的地址進行比較,如果從設(shè)備地址與總線上的地址相同,該設(shè)備就是與主設(shè)備進行數(shù)據(jù)傳輸?shù)脑O(shè)備。接著進行數(shù)據(jù)傳輸,根據(jù)方向位,主設(shè)備接收從設(shè)備數(shù)據(jù)或發(fā)送數(shù)據(jù)到從設(shè)備。當數(shù)據(jù)傳送完成后,主設(shè)備發(fā)出一個停止信號,釋放I2C總線,然后所有從設(shè)備等待下一個開始信號的到來。

3 I2C的LinuxX和ARM驅(qū)動設(shè)計

3.1 Linux2.6.32的I2C驅(qū)動分析

I2C由主設(shè)備和從設(shè)備構(gòu)成,通信上通過識別I2C地址進行通信,即可以存在多個i2c adapter適配器和多個外設(shè)i2cdevice,Linux的I2C驅(qū)動采用分層設(shè)計實現(xiàn)的思想,層與層之間不存在耦合,增加adapter和增加device不會影響其他驅(qū)動,具體分層如下。

第一層:提供i2c adapter的硬件驅(qū)動,探測、初始化i2cadapter(如申請I2C地址和中斷號),驅(qū)動處理器控制的i2cadapter在硬件上產(chǎn)生信號(開始、停止、應答)以及處理i2c中斷,涉及圖2中的硬件實現(xiàn)層;

第二層:提供i2c adapter的algorithm,用具體適配器的函數(shù)來填充i2c_algorithm的master_xfer函數(shù)指針,并把賦值后的 i2c_algorithm,再賦值給i2c_adapter的成員指針,主要涉及圖2中訪問抽象層、i2c核心層:

第三層:實現(xiàn)i2c設(shè)備驅(qū)動中的i2c_driver接口,用具體的i2c device設(shè)備的i2c_add_driver()、i2c_del_driver()方法賦值給i2c_driver的成員函數(shù)指針,采用Probe探尋方式實現(xiàn)設(shè)備device與總線的掛接,涉及圖2中的driver驅(qū)動層,此層是本文實現(xiàn)的驅(qū)動部分;

第四層:實現(xiàn)i2c設(shè)備所對應的具體device的驅(qū)動,i2c_driver只是實現(xiàn)設(shè)備與總線的掛接,掛接在總線上的設(shè)備千差萬別的,所以要實現(xiàn)具體設(shè)備device的write()、read()、ioctl()等方法,賦值給file_operations,然后注冊字符設(shè)備,涉及圖2中的 driver驅(qū)動層,此層是本文實現(xiàn)的驅(qū)動部分。

第一層和第二層又叫i2c總線驅(qū)動(bus driver),第三層和第四層屬于i2c設(shè)備驅(qū)動(device driver)。在Linux驅(qū)動架構(gòu)中,不需要再開發(fā)總線驅(qū)動,因為Linux內(nèi)核幾乎集成所有總線驅(qū)動,驅(qū)動設(shè)計主要是實現(xiàn)第三層和第四層的設(shè)備驅(qū)動。

3.2 Linux系統(tǒng)中i2c驅(qū)動中結(jié)構(gòu)體分析

Linux中的I2C驅(qū)動分層設(shè)計涉及了多個數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)的設(shè)計在I2C分層設(shè)計中起了非常重要的作用,數(shù)據(jù)結(jié)構(gòu)有i2c_driver、i2c_client、i2c_adapter,下面具體分析這三個數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系。

1)i2c_driver與i2c_client

i2c_driver對應Linux的一種驅(qū)動方法,它不對應于任何的物理實體。

i2c_client對應于真實的物理設(shè)備,每個I2C設(shè)備都需要一個i2c_client來描述,i2c_client代表一個掛載到I2C總線上的 I2C從設(shè)備,該設(shè)備所需要的數(shù)據(jù)結(jié)構(gòu),包括該I2C從設(shè)備所依附的I2C主設(shè)備i2c_adapter,I2C從設(shè)備的驅(qū)動程序i2c driver,作為i2c從設(shè)備所通用的成員變量;

i2c_driver與i2c_client發(fā)生關(guān)聯(lián)的時刻在i2c_driver的attach_adapterC)函數(shù)被運行時,attach_adapter()會探測物理設(shè)備,當確定一個I2C從設(shè)備存在時,把該client使用的i2c_client數(shù)據(jù)結(jié)構(gòu)的 adapter指針指向?qū)膇2c_adapter。

2)i2c_adpater與i2c_client

i2c_adpater與i2c_client的關(guān)系與I2C硬件體系中適配器和設(shè)備的關(guān)系一致,即i2c_client依附于i2c_adpater,一個i2c_adpater上可以連接多個I2C設(shè)備,i2c_adpater中包括依附于它的i2c_client的鏈表。

3)結(jié)構(gòu)體i2c_msg解析

i2c_msg用于I2C驅(qū)動第三層和第二層的數(shù)據(jù)交換,i2c_transter通過調(diào)用master_xfer函數(shù)傳遞i2c_msg結(jié)構(gòu)體,結(jié)構(gòu)體包括成員變量有設(shè)備地址addr,消息長度len和消息數(shù)據(jù)buf以及讀寫標志的宏定義,具體如下:

3.3 RX8025實時時鐘的I2C驅(qū)動設(shè)計

根據(jù)Linux2.6.32的驅(qū)動分層設(shè)計,驅(qū)動的第一層和第二層在Linux-2.6.32中以及集成了成熟驅(qū)動,文中重點講述第三層和第四層驅(qū)動程序的設(shè)計。

驅(qū)動設(shè)計采用字符設(shè)備方式來實現(xiàn),RX8025_I2C_Init()和RX8025_I2C_Exit()實現(xiàn)驅(qū)動的初始化以及退出,初始化最后調(diào)用 edev_add()實現(xiàn)字符設(shè)備的添加,添加過程中通過完善file_operations的結(jié)構(gòu)體,填充了以下4個結(jié)構(gòu)體變量。

這4個用戶空間接口驅(qū)動函數(shù),完成注冊后,用戶空間可以采用文件讀寫的方式來操作I2C設(shè)備了,RX8025_Open函數(shù)實現(xiàn)打開實時時鐘字符設(shè)備,RX8025_Close函數(shù)實現(xiàn)關(guān)閉實時時鐘字符設(shè)備,數(shù)據(jù)交換通過接口RX8025_Read和RX8025_Write來實現(xiàn),主要實現(xiàn)設(shè)備的數(shù)據(jù)讀取和數(shù)據(jù)寫入,從而完成用戶空間和驅(qū)動程序以及硬件設(shè)備的數(shù)據(jù)交換,i2c_ board_info結(jié)構(gòu)體中,“RX8025_i2c”定義為RX8025的I2C名字,0x32為RX8025的地址,該數(shù)據(jù)結(jié)構(gòu)的填充在 Board-dm368-evm.c文件,Board-dm368-evm.c文件包含了大部分驅(qū)動的數(shù)據(jù)信息,系統(tǒng)啟動會自動加載相關(guān)驅(qū)動信息。一個 i2c_client就代表著一個位于adapter適配器上,地址為client->addr,使用設(shè)備驅(qū)動的一個i2c設(shè)備。

本設(shè)計主要完整時鐘數(shù)據(jù)的讀取,用于同步到系統(tǒng)中,因此重點實現(xiàn)RX8025_Read接口函數(shù),RX8025_Read利用i2c_transfer函數(shù)調(diào)用master_xfer實現(xiàn)時鐘數(shù)據(jù)的讀取,具體實現(xiàn)過程如圖4所示,其中i2c_probe和RX8025_Read實現(xiàn)部分代碼如下:

4 RX8025實時時鐘I2C應用程序設(shè)計

根據(jù)I2C驅(qū)動程序設(shè)計,要正確調(diào)用驅(qū)動程序,需要實現(xiàn)驅(qū)動的用戶空間調(diào)用函數(shù),主要是實現(xiàn)open、read和write等函數(shù),因此在應用層的接口函數(shù)中也需要實現(xiàn)此函數(shù)。

i2c_Init()函數(shù)實現(xiàn)open函數(shù),調(diào)用驅(qū)動函數(shù)打開該設(shè)備驅(qū)動,定義一個數(shù)據(jù)結(jié)構(gòu)體為:

設(shè)備通過open函數(shù)正確打開后,就能通過讀寫函數(shù)進行數(shù)據(jù)交換了,該結(jié)構(gòu)體主要用來實現(xiàn)用戶空間和內(nèi)核空間的調(diào)用的數(shù)據(jù)交換,下面通過read數(shù)據(jù)讀取函數(shù)說明具體的實現(xiàn)過程,其中buf用于保存讀取數(shù)據(jù),count用于讀取數(shù)據(jù)的字節(jié)數(shù)。

如圖5所示,可以通過人機交互設(shè)置實時時鐘或讀取實時時鐘、同步系統(tǒng)時鐘,調(diào)用setTime()和synTime()接口函數(shù)來調(diào)用write()和read()文件IO讀寫文件,最終調(diào)用write()和read()的字符驅(qū)動函數(shù)實現(xiàn)對I2C驅(qū)動的調(diào)用。

5 RX8025實時時鐘應用程序設(shè)計

實時時鐘在本系統(tǒng)中有兩個功能,一是通過QT圖形界面軟件輸入時間信息來設(shè)置實時時鐘的時間,可以在界面年月日時分秒信息,通過調(diào)用應用程序函數(shù)達到時間設(shè)置的目的,二是從而帶動視頻監(jiān)控的攝像頭朝不同方位轉(zhuǎn)動以及定位,如圖所示。根據(jù)協(xié)議,應用程序設(shè)計主要實現(xiàn)以下操作:

1)設(shè)置當前的時鐘信息,函數(shù)接口為setTime();

2)同步實時時鐘的時鐘信息到系統(tǒng),函數(shù)接口為synTime();

下面通過時鐘同步函數(shù)的接口函數(shù)synTime(),詳細RX8025實時時鐘應用程序接口函數(shù)的實現(xiàn)過程,通過調(diào)用用戶空間和內(nèi)核空間的read()函數(shù)實現(xiàn)對驅(qū)動的調(diào)用,最終通過I2C總線設(shè)置時鐘和讀取時鐘數(shù)據(jù)。

通過實現(xiàn)人機交互操作程序,實現(xiàn)設(shè)置當前的時鐘信息和同步實時時鐘的時鐘信息到系統(tǒng),通過調(diào)用相應的接口函數(shù),實現(xiàn)對I2C應用程序的調(diào)用,最后通過read、write函數(shù)實現(xiàn)對RX-8025的控制,具體實現(xiàn)如圖5所示。

6 結(jié)束語

本系統(tǒng)設(shè)計實現(xiàn)了一款基于TMS320DM368的高清視頻監(jiān)控系統(tǒng)中的實時時鐘系統(tǒng)控制設(shè)計,完成了實時時鐘RX8025的I2C驅(qū)動程序的分析以及設(shè)計,并且完成了i2c應用程序的設(shè)計和實時時鐘RX8025控制應用程序設(shè)計,達到了應用目的。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉