Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linux I2Cコア、バス、デバイスドライバ

Linux I2Cコア、バス、デバイスドライバ

  
 

I2Cバスでは、デバイス間のデータのやり取りを実現するためにSCLとSDAの2本の信号ラインしか使用されていないため、ハードウェアリソースとPCBボードのレイアウトスペースの使用が大幅に簡素化されます。そのため、I2Cバスは、EEPROM、実クロック、小型LCD、CPUなどのデバイス間のインタフェースに広く使用されています。

LinuxはシステムのI2Cドライバアーキテクチャを定義していますLinuxシステムでは、I2Cドライバは3つの部分、すなわちI2Cコア、I2Cバスドライバ、およびI2Cデバイスドライバで構成されています。これら3つの部分が連携して、非常に用途が広く適応性の高いI2Cフレームワークを形成しています。

この章の最初のセクションでは、Linux I2Cアーキテクチャを分析し、3つのコンポーネントの機能と相互接続について説明します。

第2章では、Linux I2Cコアを分析し、i2c-core.cファイルの機能と主な機能の実装について説明します。

セクション3と4では、それぞれI2CバスドライバとI2Cデバイスドライバの書き込み方法について詳しく説明し、参考のためにデザインテンプレートを示します。

セクション5と6は、セクション3と4に記載されているデザインテンプレートに基づいて、S3C2410 ARMプロセッサのI2Cバスドライバとそれに搭載されているSAA7113Hビデオアナログ/デジタルコンバータチップデバイスを説明します。メソッドを書く

15.1 Linux I2Cアーキテクチャ

Linux I2Cアーキテクチャは3つのコンポーネントに分かれています。

?I2Cコア

I2CコアはI2Cバスを提供します。ドライバとデバイスドライバの登録、ログアウト方法、I2C通信方法(すなわち「アルゴリズム」、誤解を避けるために、文字通りの翻訳は「計算方法」は適切ではないと思います、以下は直接「アルゴリズム」を使用します特定のアダプタおよび検出装置に関連しないコード、検出装置アドレスの上位層コードなど。

?I2Cバスドライバ

I2Cバスドライバは、I2Cハードウェアアーキテクチャのアダプタ側を実装したもので、CPUによって制御することも、直接CPUに組み込むこともできます。

I2Cバス・ドライバ・アダプタは、主にI2Cデータ構造i2c_adapter、I2Cアダプタ制御アルゴリズムとデータ構造i2c_algorithmアダプタI2C通信信号生成機能を備えています。

I2Cバスによって駆動されるコードを使用すると、スレーブモードでスタートビット、ストップビット、読み書きサイクル、読み書き、ACKなどを生成するようにI2Cアダプタを制御できます。

I2CのI2Cデバイスドライバがデバイス側のハードウェアアーキテクチャに実装され、装置は一般I2Cアダプタによって制御CPUに搭載されている
ログイン

?I2Cデバイスドライバ、CPUとアダプタI2Cデータ交換を介して。

I2Cデバイスドライバには、主にデータ構造体i2c_driverおよびi2c_clientが含まれていますので、特定のデバイスに応じてメンバ関数を実装する必要があります。


図15.1 Linux I2Cアーキテクチャ

Linux 2.6カーネルでは、すべてのI2Cデバイスがsysfsファイルシステムに表示され、/sys /bus /にあります。以下のように、アダプターアドレスとチップアドレスの形式でリストされたI2c /ディレクトリー。

$ tree /sys /bus /i2c /

/sys /bus /i2c /

Copyright © Windowsの知識 All Rights Reserved