0

私の問題の長い説明で申し訳ありません:-)

新しい PC ベースのボード設計で、I2C デバイスとの間で単純な読み取りと書き込みを実行するタスクが与えられました。このボードは、Intel Tunnel Creek (ATOM) プロセッサ (基本的には x86 プロセッサ) と EG20T IOH チップを使用する Portwell の Qseven ミニ PC を使用して構築されます。

I2C スレーブ デバイスは TI AIC3254 オーディオ コーデックです。OSはUbuntu 10.04 LTS 32bitです。

uname -a
Linux Torchwood 2.6.32-41-generic #88-Ubuntu SMP Thu Mar 29 13:08:43 UTC 2012 i686 GNU/Linux

このデバイスの PC 部分は、基本的に汎用 PC です。

PC/OS は、システム初期化時に I2C 経由でコーデック (レジスタ) をロードする必要があります。その後、コーデックは、I2C バスの 2 番目のマスターとなる Atmel プロセッサによって制御されます (init が完了するまでサイレントのままです)。ATOM は、AIC3254 と直接対話することはありません。

私の知る限り、コーデックの「プログラム」をI2Cバスを介してコピーし、それを読み戻すだけです(貧弱な負荷チェック)。

デバイス ドライバを作成しようとするのではなく、ユーザー空間プログラムを使用して AIC3254 と通信するのが論理的なアプローチのようです。ただし、i2c-dev を modprobe した後。depmod -a no I2C bus が /dev に表示され、i2c_toolsからの i2cdetect はバス (デバイス?) を検出しません。

必要なのは、Linux I2C アクセス コーディングの理解です。ここで noob を完了します。

結局、デバイスドライバーは必要ですか? バス/ページ/レジスタへの単純な読み取り/書き込みだけです。おそらく単純なcharモードドライバーですか?そのようなものが存在することを示唆する何かを読んだことがあります。

/sys/bus/i2c/devices/i2c-0/に *new_device* および *delete_device* ファイルを配置する必要がありますか?

i2c-dev.ko がインストールされていても、i2c-x の「ファイル」が/sys/bus/i2c/devices/に表示され ません。

このカーネルが EG20T IOH チップを認識しているかどうかを推測または確認できますか? それとも、これらのチップはi2c-devで処理できるほど一般的なものなのでしょうか?

i2c-core.ko は必要ですか? Ubuntu イメージにはありません。必要な場合、apt-get を取得するには何が必要ですか?

i2c-algo_???.koの用途はありますか?

そんな初心者でごめんなさい。助けてくれてありがとう。

4

1 に答える 1

1

ターゲットのカーネルをビルドするときに、ボードサポートファイルにi2cサポートを追加する必要があると思います。Atmelベースのボードを使用してi2cを実行し、カーネルの初期化中にi2c_register_board_info()を呼び出してi2cデバイスを登録します。次に、i2c-toolsおよびユーザースペースアプリを使用してそれらにアクセスできます。3.2.6カーネルを使用していますが、2.6カーネルでも同様の呼び出しが必要になる可能性があります。

于 2012-05-02T16:15:11.150 に答える