at_ito
2017年5月8日 7時24分
Armadillo-X1, Armadillo-IoT G3ではマルチプレクスの設定を行う際にはDevice Treeが必要になります。ここではArmadillo-X1, Armadillo-IoT G3/G3Lでピンのマルチプレクス設定を行う際の例を記載します。
概要
DeviceTreeの概要についてはArmadillo-X1, Armadillo-IoT G3/G3L: Device Treeの概要を参照してください。
マルチプレクス設定
マルチプレクスの設定を行うことで、各ピンに機能を割り当てることができます。 各ピンに割り当てられる機能はCPUである程度決まっています。
各ピンに割り当てられる機能は、各製品のドキュメント・ダウンロードページにある「マルチプレクス表」を参照してください。
- Armadillo-X1: Armadillo-X1 マルチプレクス表
- Armadillo-IoT G3: Armadillo-IoT ゲートウェイ G3 マルチプレクス表
マルチプレクス設定例
マルチプレクスの設定を行う際にはdtsファイルを編集します。 例としてArmadillo-X1のCON8-pin20, 21にI2C1の機能を割り当てる場合のDTSファイルは以下のように記述します。
1: &iomuxc {
2: x1_ext {
3: pinctrl_i2c1: i2c1grp {
4: fsl,pins = <
5: MX7D_PAD_I2C1_SCL__I2C1_SCL 0x4000007f
6: MX7D_PAD_I2C1_SDA__I2C1_SDA 0x4000007f
7: >;
8: }
9: }
10: }
上記内容について、以下に解説します。
- 1行目
- この行ではマルチプレクスを設定するためのドライバーを指定しています。
- 2行目
- ここではArmadillo-X1の拡張のため「x1_ext」と指定しています。ほかの文字列でも問題ありません
- 3行目
- ここではi2cドライバーから指定するためのラベル(pinctrl_i2c1)を指定しています
- 4~7行目
- ここでは各ピン毎のマルチプレクスの設定を行っています
- MX7D_PADで始まる定数は、「MX7D_PAD_ピン名__割り当てる機能」となっています
- 「ピン名」は前述でダウンロードできるマルチプレクス表の「i.MX 7Dualピン名」と同じ名前になります
- 「割り上げる機能」はマルチプレクス表の各ピンに書かれている「マルチプレクス機能」とほぼ同じ名前になります
- 使用したいピンと、使用したい機能の定数をここで定義します
- 定数の一覧については、arch/arm/boot/dts/imx7d-pinfunc.hを参照してください
- MX7D_PADで始まる定数の後に指定される「0x4000007f」は、PAD_CTLの設定とsionの設定になります
- PAD_CTLは、「i.MX 7Dual Applications Processor Reference Manual」の「SW_PAD_CTL Register」に関する記載を参照してください
- 31bit目(0~31bitで計算)のビットの機能は、「0:パッド設定を行う, 1:パッド設定を行わない」となります
- 30bit目(0~31bitで計算)のビットの機能はSION(Software Input On)の有効/無効の指定になります。SIONの詳細は「i.MX 7Dual Applications Processor Reference Manual」を参照してください