Armadilloフォーラム

Armadillo-640でJTAGピンをGPIOとして使用する方法

s-saitou

2019年8月7日 14時33分

お世話になっております。斉藤と申します。

Armadillo-640製品マニュアルの「16.7.CON10(JTAGインタフェース)」の中で、「CON10に接続されている信号線は、JTAG以外の機能でも使用可能です」とあり、「Armadillo-640マルチプレクス表」を見るとGPIO1-11~15が割り当てられていますが、
GPIOとして使用する方法をご教示頂けますでしょうか。

armadillo-640-expansion-interface.dtsの&iomuxcの中に
MX6UL_PAD_JTAG_TRST_B__GPIO1_IO15 0x400010b0 // CON10_2
MX6UL_PAD_JTAG_TDI_GPIO1_IO13 0x400010b0 // CON10_3
・・・
を追記してデバイスツリーを変更後に、
#echo out > /sys/class/gpio/gpio15/direction
#echo 1 > /sys/class/gpio/gpio15/value
などと制御してみますが、ピンは変化しない状況です。

JTAGなのでCPU(i.MX6ULL)自体の設定あるいはカーネルコンフィグ等も確認しているところですが・・・

コメント

s-saitou

2019年8月9日 14時11分

すみません、自己解決しました。

デバイスツリーを使った方法は、色々と勉強不足で結局分かっていないのですが、

↓を参考にdevmem2を使用して、直接レジスタ(SW_MUX_CTL Register)を変更することでGPIOとして制御することが出来ました。
https://armadillo.atmark-techno.com/howto/accessing-any-address

CN10-2ピン(JTAG_TRST_B/GPIO1_IO15)の場合
#./devmem2 0x20E0058 word 0x00000005 ←MUX_MODEをGPIO1_IO15に設定

後は
#echo 15 > /sys/class/gpio/export
#echo out > /sys/class/gpio/gpio15/direction
#echo 0 > /sys/class/gpio/gpio15/value
でやるか、devmem2で直接レジスタを叩く

at_makoto.sato

2019年8月20日 16時47分

佐藤です。

添付しましたパッチを適用していただけると、devmem2で直接レジスタを操作せずにJTAGピンをGPIOとして使用できます。

パッチをlinuxカーネルソースディレクトリ直下に置き適用してください。

[atde7]$ patch -p 1 < 0001.patch
[atde7]$ patch -p 1 < 0002.patch
[atde7]$ patch -p 1 < 0003.patch

その後、製品マニュアルを参照してカーネルをビルドしてください。
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

ビルドできた uImage と armadillo-640.dtb を armadillo-640 本体へ転送し書き換えてください。
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

以上でJTAGピンをGPIOとして使用できるようになります。

ファイル ファイルの説明
0001.patch
0002.patch
0003.patch

s-saitou

2019年8月27日 14時16分

斉藤です。

ご回答ありがとうございます。
パッチを当ててうまくGPIOとして制御することが出来ました。
ありがとうございました。