[Suzaku:00349] uLinux から追加 GPIO へのアクセス

email@hidden
2005年 6月 28日 (火) 12:09:04 JST


植田と申します。
前回のyashiさんからの回答は参考にさせていただきました。
ありがとうございました。

今回は基本的なことなのですが、
EDKで追加したGPIO(v3.01b)の32bit長レジスタへのアクセスをしようとしています。
指定したBaseAddressに対して、
BaseAddress+0x04でポートの入出力を設定(1で入力)し、
BaseAddressからデータの読み書きをするようになっています。

そこで、uCLinux上で
#define BaseAddress 0xfff00000

unsigned long inout = 0x00000000;//ポートすべてを出力に設定
unsigned long data = 0xaaaaaaaa;              //出力用のデータ

*(volatile unsigned long *)(BaseAddress + 0x04) = inout;
*(volatile unsigned long *)(BaseAddress) = data;
...

としてI/Oポートにデータを出力させようとしましたが、結果が反映されませんでした。
さらに、レジスタの確認のため

output = *(volatile unsigned long)(BaseAddress);
(変数outputはunsigned long型)
printf("%08lx", output);

を追加したところ、outputの値は0000 0000でした。
ポインタによるアクセス方法、IPの追加を含め、留意点がありましたらご指摘のほう、
よろしくお願いします。

-----------------------
植田真之(UEDA Masayuki)

email@hidden






suzaku メーリングリストの案内