0

GPIO30-GPIO37 というラベルの付いた 8 つの I/O ラインを提供するヘッダーを持つ Jetway NF81-T56 マザーボードがあります。私の CentOS6 インストールには GPIO ドライバーがなく、ドライバーを作成しようとしています。Fintek F71869 Super IO チップは、GPIO およびその他の I/O 機能を提供します。0x2e/0x2f ポート経由で GPIO3 レジスタにアクセスして変更できますが、F71869 GPIO レジスタに設定された GPIO BASE_ADDR を使用してデータ ポートにアクセスできませんでした。これらのレジスタを読み取ったところ、GPIO BASE_ADDR が 0x0a00 に設定されています。チップのマニュアルページには次のように記載されています。

インデックス ポートは BASE_ADDR[15:2] + 5 で、データ ポートは BASE_ADDR[15:2] + 6 です。

データ ポートを 0x0f (接続された LED で表示) に設定し、ポート 0x0a00-0x0a7f を読み取ろうとしました。すべてが 0x0f ではなく 0xff を返しました。「BASE_ADDR[15:2]」表記構文を解釈する方法を知っている人はいますか? インターネットで調べたり、メーカーに問い合わせたりしましたが、だめでした。

4

1 に答える 1

0

これはハードウェア スタイルのベクトル (ビットフィールド) 表記で、基本的に 2 桁右シフトします。

0x0a00 は、頭の中で正しく実行すると 0x0280 になります。

To draw it out here are the bits [15:0]
0x0a00 = 0000 1010 0000 0000
now select bits [15:2]
         0000 1010 0000 00
which we re-format as [13:0] of a new vector
           00 0010 1000 0000 = 0x0280

つまり、0x0285 と 0x0286 にアクセスする必要があるようです。ただし、ボードが正しく構成されていることを確認する必要があります。さらに重要なことは、それらのアドレスに他に何も配置されていないことを確認する必要があります。

于 2012-05-02T00:19:19.793 に答える