www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件

摘 要: 針對I2C總線的特點,Linux內核中定義了I2C驅動體系結構。在分析Linux的I2C總線驅動體系結構基礎上,介紹了在S3C2410中設計I2C總線驅動的方法。
關鍵詞: ARM-Linux;I2C體系結構;I2C總線驅動程序

 I2C總線是一種串行數(shù)據(jù)傳輸標準總線,使用數(shù)據(jù)線SDA和時鐘線SCL就可實現(xiàn)設備間的數(shù)據(jù)交互,它使得電路系統(tǒng)結構設計簡單,具有使用方便、通信速率高等優(yōu)點。因此,在嵌入式系統(tǒng)中,I2C總線被廣泛地應用在與RAM、EEPROM、RTC等設備間的接口電路中。近年來,隨著嵌入式系統(tǒng)應用不斷升溫,Linux憑借源碼開放、內核穩(wěn)定以及可裁剪性強等優(yōu)點成為在通信、工業(yè)控制、消費電子等領域的主流操作系統(tǒng)。而Linux設備驅動程序是所有Linux應用系統(tǒng)中不可或缺的組成部分,是現(xiàn)在Linux開發(fā)中的熱門領域。Linux內核已經(jīng)把I2C總線協(xié)議定義為內核驅動的一部分,并形成了一種體系結構。本文正是在研究I2C總線驅動體系結構基礎上,提出了其在S3C2410中實現(xiàn)的基本方法。
1 I2C總線
 I2C總線是由雙向數(shù)據(jù)傳輸線SDA和時鐘線SCL構成的二線制串行總線,可構成主從和多主系統(tǒng)。I2C總線多采用主從雙向通信,即總線上在某一時刻只有一個主設備,總線上的其他設備都作為從設備。任何能夠進行發(fā)送和接收的設備都可以成為主設備,但是在同一時間內只能有一個設備作為主設備(通常為微控制器),其他每個I2C器件作為從設備與主設備進行通信,它們都有唯一的地址用來識別。
I2C總線的時序圖[1]如圖1所示。


 從圖1可以看到,I2C總線在傳送數(shù)據(jù)過程中使用了三種信號[2]。(1)開始信號:SCL為高電平時,SDA由高電平向低電平跳變,表示將要開始傳送數(shù)據(jù);(2)應答信號:從設備在接收到1 B數(shù)據(jù)后,向主設備發(fā)出一個低電平脈沖應答信號,表示已收到數(shù)據(jù),主設備根據(jù)從設備的應答信號做出是否繼續(xù)傳輸數(shù)據(jù)的操作(I2C總線每次數(shù)據(jù)傳輸時字節(jié)數(shù)不限制,但是每發(fā)送1 B都要有一個應答信號);(3)結束信號:SCL為低電平時,SDA由低電平向高電平跳變,表示數(shù)據(jù)傳送結束。
I2C總線具體的通信工作原理如下:主設備首先發(fā)出開始信號,接著發(fā)送1 B的數(shù)據(jù),其由高7 bit地址碼和最低1 bit方向位組成(方向位表明主設備與從設備間數(shù)據(jù)的傳送方向)。系統(tǒng)中所有從設備將自己的地址與主設備發(fā)送到總線上的地址進行比較,如果從設備地址與總線上的地址相同,該設備就是與主設備進行數(shù)據(jù)傳輸?shù)脑O備。接著進行數(shù)據(jù)傳輸,根據(jù)方向位,主設備接收從設備數(shù)據(jù)或發(fā)送數(shù)據(jù)到從設備。當數(shù)據(jù)傳送完成后,主設備發(fā)出一個停止信號,釋放I2C總線,然后所有從設備等待下一個開始信號的到來。
2 系統(tǒng)硬件設計
2.1 Linux驅動程序
 設備驅動程序是Linux內核的重要組成部分,是操作系統(tǒng)內核與底層硬件之間的接口。在ARM系統(tǒng)中,每個物理設備都有自己的控制器,每個硬件控制器都有自己的控制狀態(tài)寄存器(CSR),并且各不相同。這些寄存器用來啟動、停止、初始化設備,并對設備進行診斷,對硬件的控制主要是針對這些寄存器進行操作。設備驅動程序為應用程序屏蔽了硬件的底層細節(jié),這樣在應用程序看來,硬件設備只是一個文件,應用程序通過對應的設備驅動程序中定義的通信接口(write、read和ioctl等)像操作普通文件一樣實現(xiàn)對硬件設備的操作,簡化了對設備的訪問,使得應用程序的編寫相對簡單。
設備驅動程序一般有以下功能[3]:對硬件設備的初始化、加載和釋放;對設備進行管理,包括實時參數(shù)設置以及提供對設備的統(tǒng)一操作接口;讀取應用程序傳遞給設備文件的數(shù)據(jù)或回送應用程序請求的數(shù)據(jù);檢測或處理設備出現(xiàn)的錯誤等。
 Linux內核將打開、關閉、讀/寫和ioctl等所有相關操作封裝在一個結構體file_operations中,設備驅動程序利用結構體file_operations與文件系統(tǒng)聯(lián)系起來。另外還要使用module_init()和module_exit()兩個宏。module_init()的本質是在.initcall.init段使用空間中定義的一個指向初始化函數(shù)的指針。設備驅動程序通過調用代碼段中設備初始化函數(shù),完成初始化硬件和向內核注冊設備驅動程序。module_exit()功能與module_init()相反。
2.2 I2C總線驅動體系結構
 直接數(shù)字頻率合成器(DDS)是一種產(chǎn)生模擬波形的方法,其通常是通過數(shù)字形式的時間轉換信號再執(zhí)行數(shù)模轉換產(chǎn)生正弦波。因為DDS設備的運行基于數(shù)字,所以能夠在輸出頻率、正弦波頻率分解和運行于寬頻率頻譜之間相互轉換。本系統(tǒng)采用DDS AD9833作為超聲波發(fā)射單元的脈沖生成器,AD9833是可編程的,通過高速串口外圍接口(SPI),只需要一個外部時鐘去產(chǎn)生簡單的正弦波就可以工作了。AD9833可以在基于25 MHz的時鐘下產(chǎn)生0~12.5 MHz的波形[6]。
 I2C設備在Linux下完全可以作為一個字符設備,可以根據(jù)需要編寫一個字符設備驅動程序來支持I2C通信。但是由于I2C總線是一種標準總線,在PC和嵌入式系統(tǒng)中都得到了廣泛的應用,Linux專門為I2C總線定義了I2C驅動程序體系結構[4],使驅動程序有統(tǒng)一的接口,方便了驅動設計者設計,也便于移植。
在Linux系統(tǒng)中,I2C總線驅動體系由I2C核心、總線適配器驅動和設備驅動三部分組成。
?。?)I2C核心
 I2C核心即i2c-core.c,是Linux內核用來維護和管理的I2C總線的核心部分,實現(xiàn)了I2C總線驅動的框架。I2C核心為總線提供了統(tǒng)一的接口函數(shù),實現(xiàn)了I2C總線驅動和設備驅動的注冊、注銷及通信等功能。I2C核心是I2C總線適配器驅動和設備驅動之間的橋梁。
 (2)I2C總線適配器驅動
 I2C總線適配器驅動主要包括了對應具體硬件I2C控制器的I2C總線適配器i2c_adapter以及I2C總線適配器的通信傳輸算法i2c_algorithm以及總線驅動控制適配器通信函數(shù)等,為I2C核心提供了底層支持,是與硬件相關的。需要注意的是,I2C總線驅動程序只是提供了I2C總線的讀寫方法,其本身并不進行任何通信,它只是等待設備驅動調用其函數(shù)來對具體的硬件設備進行訪問。
?。?)I2C設備驅動程序
 I2C設備驅動程序通過I2C總線適配器驅動與具體的硬件設備進行通信。I2C設備驅動程序中主要包括了數(shù)據(jù)結構i2c_driver(用于管理i2c_client)、i2c_client(掛在I2C總線上的設備驅動程序)和需要根據(jù)具體設備實現(xiàn)的成員函數(shù)。標準的I2C驅動程序也是一個字符設備驅動程序,通過i2c-dev.c來進行管理,包括open、release、read、write、ioctl和lseek等。
Linux內核I2C總線驅動程序構架如圖2所示,其反映了I2C總線驅動體系間的關系。

3 S3C2410中I2C總線驅動程序的實現(xiàn)

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

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

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

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

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

關鍵字: 汽車 人工智能 智能驅動 BSP

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

關鍵字: 亞馬遜 解密 控制平面 BSP

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

關鍵字: 騰訊 編碼器 CPU

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

關鍵字: 華為 12nm EDA 半導體

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

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

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

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

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

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

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

關鍵字: BSP 信息技術
關閉
關閉