i2c演算法
㈠ Linux內核開發與Linux驅動開發有什麼關系
驅動裝在系統上,有的會跟內核有交互,但是驅動一般是針對設備
㈡ 嵌入式ubuntu怎麼載入i2c匯流排
Linux定義了系統的IIC驅動體系結構,在Linux系統中,IIC驅動由3部分組成,即IIC核心、IIC匯流排驅動和IIC設備驅動。這3部分相互協作,形成了非常通用、可適應性很強的IIC框架。
3.1.1IIC核心
IIC核心提供了IIC匯流排驅動和設備驅動的注冊、注銷方法,IIC通信方法(即algorithm」,筆者認為直譯為「運算方法」並不合適,為免引起誤解,下文將直接使用「algorithm」)上層的、與具體適配器無關的代碼以及探測設備、檢測設備地址的上層代碼等。
在我們的Linux驅動的i2c文件夾下有algos,busses,chips三個文件夾,另外還有i2c-core.c和i2c-dev.c兩個文件。
i2c-core.c文件實現了I2Ccore框架,是Linux內核用來維護和管理的I2C的核心部分,其中維護了兩個靜態的List,分別記錄系統中的I2Cdriver結構和I2Cadapter結構。I2Ccore提供介面函數,允許一個I2Cadatper,I2Cdriver和I2Cclient初始化時在I2Ccore中進行注冊,以及退出時進行注銷。同時還提供了I2C匯流排讀寫訪問的一般介面,主要應用在I2C設備驅動中。
3.1.2IIC匯流排驅動
IIC匯流排驅動是對IIC硬體體系結構中適配器端的實現,適配器可由CPU控制,甚至直接集成在CPU內部。匯流排驅動的職責,是為系統中每個I2C匯流排增加相應的讀寫方法。但是匯流排驅動本身並不會進行任何的通訊,它只是存在那裡,等待設備驅動調用其函數。
IIC匯流排驅動主要包含了IIC適配器數據結構i2c_adapter、IIC適配器的algorithm數據結構i2c_algorithm和控制IIC適配器產生通信信號的函數。經由IIC匯流排驅動的代碼,我們可以控制IIC適配器以主控方式產生開始位、停止位、讀寫周期,以及以從設備方式被讀寫、產生ACK等。
Busses文件夾下的i2c-mpc.c文件實現了PowerPC下I2C匯流排適配器驅動,定義描述了具體的I2C匯流排適配器的i2c_adapter數據結構,實現比較底層的對I2C匯流排訪問的具體方法。I2Cadapter構造一個對I2Ccore層介面的數據結構,並通過介面函數向I2Ccore注冊一個控制器。I2Cadapter主要實現對I2C匯流排訪問的演算法,iic_xfer()函數就是I2Cadapter底層對I2C匯流排讀寫方法的實現。同時I2Cadpter中還實現了對I2C控制器中斷的處理函數。
3.1.3IIC設備驅動
IIC設備驅動是對IIC硬體體系結構中設備端的實現,設備一般掛接在受CPU控制的IIC適配器上,通過IIC適配器與CPU交換數據。設備驅動則是與掛在I2C匯流排上的具體的設備通訊的驅動。通過I2C匯流排驅動提供的函數,設備驅動可以忽略不同匯流排控制器的差異,不考慮其實現細節地與硬體設備通訊。
IIC設備驅動主要包含了數據結構i2c_driver和i2c_client,我們需要根據具體設備實現其中的成員函數。
i2c-dev.c文件中實現了I2Cdriver,提供了一個通用的I2C設備的驅動程序,實現了字元類型設備的訪問介面,實現了對用戶應用層的介面,提供用戶程序訪問I2C設備的介面,包括實現open,release,read,write以及最重要的ioctl等標准文件操作的介面函數。我們可以通過open函數打開I2C的設備文件,通過ioctl函數設定要訪問從設備的地址,然後就可以通過read和write函數完成對I2C設備的讀寫操作。
通過I2Cdriver提供的通用方法可以訪問任何一個I2C的設備,但是其中實現的read,write及ioctl等功能完全是基於一般設備的實現,所有的操作數據都是基於位元組流,沒有明確的格式和意義。為了更方便和有效地使用I2C設備,我們可以為一個具體的I2C設備開發特定的I2C設備驅動程序,在驅動中完成對特定的數據格式的解釋以及實現一些專用的功能。
㈢ 從底層硬體到上層應用,嵌入式軟體的開發可以分為哪幾類
從底層硬體到上層應用,嵌入式軟體的開發可以分為以下三類:
1、嵌入式操作系統開發
嵌入式操作系統EOS(Embedded Operating System)是一種被廣泛使用的系統軟體。過去,它主要用於工業控制和國防系統領域。 EOS負責分配和調度嵌入式系統的所有軟體和硬體資源,控制和協調並發活動。
它必須體現其所在系統的特徵,並能夠通過載入和卸載某些模塊來實現系統所需的功能。嵌入式操作系統通常以商業操作為主。自1980年代以來,商業嵌入式操作系統已開始蓬勃發展。
2、嵌入式支撐軟體開發
支撐軟體是用於幫助和支撐軟體開發的軟體,通常包括資料庫和開發工具,其中資料庫是最重要的。隨著移動通信技術的進步,人們對移動數據處理提出了更高的要求。嵌入式資料庫技術已受到學術,工業,軍事和民用領域的關注。
嵌入式移動資料庫或簡稱為移動資料庫(EMDBS)是支持移動計算或特定計算模型的資料庫管理系統。資料庫系統與操作系統和特定的應用程序集成在一起,並在各種智能嵌入式設備或移動設備上運行。
3、 嵌入式應用軟體開發
嵌入式應用軟體是針對特定應用領域,基於某一固定的硬體平台,用來達到用戶預期目標的計算機軟體。由於用戶任務可能有時間和精度上的要求,因此有些嵌入式應用軟體需要特定嵌入式操作系統的支持。
嵌入式應用軟體和普通應用軟體有一定的區別,它不僅要求其准確性、安全性和穩定性等方面能夠滿足實際應用的需要,而且還要盡可能地進行優化,以減少對系統資源的消耗,降低硬體成本。
(3)i2c演算法擴展閱讀:
嵌入式軟體開發的特點:
近年來,隨著計算機技術的迅猛發展,基於通信技術的信息技術以及Internet的廣泛應用,傳統的控制學科正在發生變化,並出現了許多新的增長點。
嵌入式系統涉及系統的最低層,晶元層的信息處理和控制。從某種意義上說,理解和控制這些「微觀」世界是控制的真正目的。就設計思想和總體架構而言,通常意義上的嵌入式系統和控制系統之間存在許多差異。
在嵌入式系統和開發環境方面,仍然存在許多仍在研究和開發中的問題,例如嵌入式系統的硬體和軟體協同設計方法;多目標、多任務微內核嵌入式操作系統;分布式嵌入式系統實時問題,分布式計算,分布式信息交互和綜合處理;嵌入式系統的多目標交叉編譯和調試工具的研究等。