Armadilloフォーラム

Armadillo-X1でアドオンインターフェースを拡張する方法

tanaka779

2019年3月13日 11時52分

田中と申します。

Armadillo-X1:拡張I/FのUARTを使用する方法
https://users.atmark-techno.com/blog/615/2586

上記サイトを参考に、CON7アドオンインターフェースに独自の拡張ボードを
接続しようとしておりますが、うまく認識できていません。

参考サイトはCON8についての拡張設定となっていますが、CON7に対する変更も
全く同じでいいのでしょうか?

具体的には、armadillo-x1_multiplex_con7-v1.0.0.pdfを参照しI2C3の設定を
したい場合、下記ファイルを用意することであっているのでしょうか?

=======================================
#include "armadillo_x1.dts"

/* I2C3 */
/*
* CON7_20: I2C3_SCL
* CON7_21: I2C3_SDA
*/

&iomuxc {
x1_ext {

pinctrl_i2c3_user: i2c3grp_user {
fsl,pins = <
MX7D_PAD_I2C3_SCL__I2C3_SCL 0x4000003f
MX7D_PAD_I2C3_SDA__I2C3_SDA 0x4000003f
>;
};
};
};

&i2c3 {
clock-frequency = <400000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3_user>;
status = "okay";
};
=======================================

また、サイトの通りarmadillo_x1.dtsに上記ファイルで追加した「pinctrl_i2c3_user」を追加しようと
下記変更を行いましたが、Makeがエラーとなってしまいます。
現状kernel4を使用していますが、方法が異なるのでしょうか?

変更前)
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;

armadillo-iotg-g3 {

変更後)
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog &pinctrl_i2c3_user>;

armadillo-iotg-g3 {

エラー)
ERROR (phandle_references): Reference to non-existent node or label "pinctrl_i2c3_user"

ERROR: Input tree has errors, aborting (use -f to force output)
scripts/Makefile.lib:315: ターゲット 'arch/arm/boot/dts/armadillo_x1.dtb' のレシピで失敗しました

以上

コメント

古関です。

記載いただきました手順ではアドオンインターフェースは使用できません。

> MX7D_PAD_I2C3_SCL__I2C3_SCL 0x4000003f
> MX7D_PAD_I2C3_SDA__I2C3_SDA 0x4000003f
標準カーネルの状態では、上記2ピンは既に使用されています。

使用箇所は以下になります。
arch/arm/boot/dts/armadillo_x1_addon.dtsi

アドオンモジュールはアットマークテクノ製、サードパーティ製と複数ラインアップがあり、
アドオンインターフェースにアドオンモジュールを接続すると、標準kernelを使用した場合、
自動判別し、自動的にPINの初期化等が実行されます。
(Add-On Module Auto Detect機能)

この2ピンはその自動判別に使用されるピン[※1]となっております。

アドオンインタフェースに接続可能な拡張基板を作成するには複数の方法があります。
(1)「Add-On Module Auto Detect機能」を無効[※2]にし独自に作成する
(2) アドオンモジュールの設計ガイドラインにのっとって作成する

もし、アドオンモジュールの設計ガイドラインが必要な場合、
別途担当の営業からご案内をいたします。

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

[※1]
このピンの先にI2C EEPROMが接続され、情報を読み出すことで複数種類があるアドオンモジュールの種類を判別、
アドオンモジュールごとの初期化処理が実行される仕組みになっております。

[※2]
以下のカーネルコンフィグレーションを無効にすることで、
「Add-On Module Auto Detect機能」を無効にすることが可能です。
-------------------------------------------------------------------------------
Symbol: AIOTG_ADDON_AUTO_DETECT [=y]
Type : boolean
Prompt: Add-On Module Auto Detect
Location:
-> System Type
-> Freescale i.MX family (ARCH_MXC [=y])
(1) -> i.MX7 Dual support (SOC_IMX7D [=y])
Defined at arch/arm/mach-imx/Kconfig:597
Depends on: ARCH_MXC [=y] && ARCH_MULTI_V7 [=y] && SOC_IMX7D [=y]
Selects: OF_OVERLAY [=y]
-------------------------------------------------------------------------------

その後、「arch/arm/boot/dts/armadillo_x1_addon.dtsi」側を修正することで対応できるはずです。