考えられるいくつかの原因:
1)入力ピンのIO方向を設定しましたか?
例えば。echo "in" > /sys/class/gpio/gpioN/direction
2)(可能性は低いですが)入力として使用しているGPIOピンはGPIOラインとして正しい方向に多重化されていますか?OMAPSoCのGPIOピンのほとんどは多機能です。あなたはカーネルが別の機能のためにそれを設定したかもしれません。
あなたはそれをチェックすることができます:
cat /sys/kernel/debug/omap_mux/board/core
これは、すべてのIOピンの構成をダンプします。出力は次のようになります。
OMAP4_MUX(CSI22_DY1, OMAP_PIN_INPUT | OMAP_MUX_MODE0),
/* gpio_81 */
OMAP4_MUX(CAM_SHUTTER, OMAP_PIN_OUTPUT | OMAP_MUX_MODE3),
OMAP4_MUX(CAM_STROBE, OMAP_PIN_OUTPUT | OMAP_MUX_MODE0),
/* gpio_83 */
この場合、CAM_SHUTTER
は出力を設定し、GPIOモジュールにルーティングされます(OMAP_MUX_MODE3
)
[警告:これは私のOMAP4ボードからのものです-OMAP3データシートが手元にない場合-かなりの類似性があります]
sysfsを使用してこれを変更することはできません。代わりに、カーネル(または、カーネルがセットアップした構成を使用する場合はブートローダー)を変更する必要があります。
システムのボードファイル(あなたの場合はそうなると思います)に<linux_source_root>/arch/arm/mach-omap2/board-omap3beagle.c
は、MUXテーブルのイニシャライザーがあります。CAM_SHUTTER
ピンの主要な機能名(上記の例では)とGPIO番号の間を取得するには、ボードの回路図、カーネルソースツリー、およびSoCデータシートが必要になります。
3) pinAの値に0を渡しても少し混乱しました-それを意味するのかしら?ただし、これは注意すべき別のことを示しています。各IOピンにはプログラム可能なプルアップまたは-ダウンがあります。これらはMUX設定で設定されます。おそらく外部のものもあるかもしれません-繰り返しますが、確実に回路図が必要になります。