GPIOのアドレスを調べる

お世話になります。村杉と申します。

Armadillo 640のCON9のGPIO4_IO07とGPIO4_IO08に対して以下のHowtoを参考に
直接値を書き込みたいのですが、GPIO4_IO07とGPIO4_IO08のアドレスの
確認方法をご教授いただけないでしょうか?

Howto : アプリケーションから任意のメモリ空間をアクセスする
https://armadillo.atmark-techno.com/howto/accessing-any-address
devmem2

よろしくお願いいたします。

以上

製品: 
Armadillo-640

溝渕です。

> Armadillo 640のCON9のGPIO4_IO07とGPIO4_IO08に対して以下のHowtoを参考に
> 直接値を書き込みたいのですが、GPIO4_IO07とGPIO4_IO08のアドレスの
> 確認方法をご教授いただけないでしょうか?

"i.MX 6ULL Applications Processor Reference Manual"に記載されています。

上記、NXP社のWebページ[1]よりダウンロードできます。

[1]:https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/i.mx-applications-processors/i.mx-6-processors/i.mx-6ull-single-core-processor-with-arm-cortex-a7-core:i.MX6ULL?tab=Documentation_Tab

GPIOのレジスタ仕様は、"28.5 GPIO Memory Map/Register Definition"に記載
されています。

GPIO data register(GPIO4_DR)のアドレスは、20A_8000です。GPIO4_IO07のデー
タを変更したい場合は、20A_8000のbit6を操作します。GPIO4_IO08の場合は
bit7です。

またLinuxカーネル v4.14-at12では、標準で"/dev/mem"が利用できません。以
下のコンフィギュレーションを有効化してください。

Device Drivers  --->
  Character devices  --->
    [*] /dev/mem virtual device support

上記、Linuxカーネル v4.14-at13で標準的に有効化する予定です。

溝渕様

御回答有難うございます。
村杉です。

以下のように、devmem2で書き込んでreadbackでも正しい値を読めているのですが、
読み出すと書込み出来ていません。

---------------------------
root@armadillo:/home/devmem2# ./devmem2 0x20a8000 b 0x80
/dev/mem opened.
Memory mapped at address 0xb6ffd000.
Value at address 0x20A8000 (0xb6ffd000): 0x0
Written 0x80; readback 0x80
root@armadillo:/home/devmem2# ./devmem2 0x20a8000 b
/dev/mem opened.
Memory mapped at address 0xb6fba000.
Value at address 0x20A8000 (0xb6fba000): 0x0
---------------------------

echo 1 > /sys/class/gpio/gpio103/value のようにして書き込むと
正常に書きこみが出来ているようです。
---------------------------
root@armadillo:/home/devmem2# ./devmem2 0x20a8000 b
/dev/mem opened.
Memory mapped at address 0xb6f99000.
Value at address 0x20A8000 (0xb6f99000): 0x80
---------------------------

よろしくお願いいたします。

以上

溝渕です。

> 以下のように、devmem2で書き込んでreadbackでも正しい値を読めているの
> ですが、読み出すと書込み出来ていません。

"i.MX 6ULL Applications Processor Reference Manual"より、該当レジスタ
は32bit幅なので、32bitアクセスで試してみていただけますか。

溝渕様

御回答有難うございます。
村杉です。

書込みできました。

ありがとうございました。

以上