Armadilloフォーラム

Armadillo−X1 UART1/USBポート初期化について

e-yamada

2018年2月27日 13時04分

お世話になっております。

Armadillo-X1の拡張インターフェース(CON8)の以下のピンで、USBとRS485関連の初期化を行いたいと思っております。

 ピン番号24: → PWM1_OUT に設定(9600bpsに設定)
 ピン番号26: → UART1_RX_DATA に設定
 ピン番号27: → UART1_TX_DATA に設定
 ピン番号47~50: USB2_DP,USB2_DM,GND,USB2_VBUS_IN

これらの初期化のためには、やはり Device Tree Blob (DTB) のカスタマイズが必要となりますでしょうか?
必要となる場合は以下の資料から参考にすればよろしいでしょうか?

  Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
  Documentation/devicetree/bindings/pwm/imx-pwm.txt
  Documentation/devicetree/bindings/usb/fsl-usb.txt

また、上記の他に必要な作業がございましたら、分かる範囲でご教示頂けますでしょうか。

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

コメント

溝渕です。

アーキテクチャ非依存のRS485関連プロパティについては、以下が参考になります。
Documentation/devicetree/bindings/serial/rs485.txt

Documentation以下に記載の無いアーキテクチャ固有のRS485関連プロパティは次の通りです。
fsl,rs485-tx-gate-type: DE(Data Enable)信号の制御方式を指定します。
"gpio": gpioでDEを制御します。fsl,rs485-tx-gate-gpioの指定が必須です。
"rts": UARTのRTS信号でDEを制御します。fsl,rs485-tx-gate-gpioの指定は不要です。
fsl,rs485-tx-gate-gpio: DEを制御するGPIOを指定します。
fsl,rs485-rx-gate-type: RE(Read Enable)信号の制御方式を指定します。
"gpio": gpioでREを制御します。fsl,rs485-rx-gate-gpioの指定が必須です。
fsl,rs485-rx-gate-gpio: REを制御するGPIOを指定します。
fsl,rs485-rx-gate-active-low: REが負論理であることを示します。値はありません。
fsl,rs485-duplex-gpio: Duplexを制御するGPIOを指定します。
fsl,rs485-duplex-active-low: REが負論理であることを示します。値はありません。

DEは、全二重で1対1接続の場合を除き、必須だと思います。DEに接続した信号
のMUXは、"gpio"の場合はgpioに、"rts"の場合はrtcに設定してください。

REおよびDuplexによっては、選定したICによっては存在しないです。存在しな
い場合は未指定としてください。

使用例としては、以下のディレクトリにあるアドオン向けDTSが参考になると思います。
arch/arm/mach-imx/armadillo_iotg_addon/

ただし、上記DTSはDevice Tree Overlay用なので、あくまでプロパティの使用
例として参考にしてください。

溝渕です。

すみません。誤記訂正です。

> fsl,rs485-duplex-active-low: REが負論理であることを示します。値はありません。

正しくは、次の通りです。
「Duplexが負論理であることを示します。値はありません。」

正: Duplex
誤: RE

溝渕様

ご回答いただき誠にありがとうございます。
ご教示いただいた内容について設定・確認するようにいたします。

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

お世話になっております。
追加の質問となりますが、拡張I/Fの使用についてご教示をお願いいたします。

弊社で制作した拡張IOボードにおいて、以下の様なピンを使用してUSBホスト機能を実装しようとしております。

 CON8_47: USB_OTG2_DP
 CON8_48: USB_OTG2_DN
 CON8_50: USB_OTG2_VBUS
 CON8_72: GPIO3_IO0 <- VBUS Enable を供給
 CON8_74: GPIO3_IO1 <- VBUS Fault (過電流検出) を供給

まず arch/arm/boot/dts/armadillo_x1-usbotg2.dts
を参考に、添付ファイルの様な設定をDTBに追加しましたが、起動時に一瞬電源が入った
後OFFになり、USBストレージの検出が出来ませんでした。

syslog(添付しております)を確認したところ、一度 USB_OTG2_VBUS に 5V が供給された後、アドオンボード
(armadillo_iotg_addon) の検出を行った後、無効化されている様です。

 $ sudo grep -i otg /var/log/syslog
 kernel: USB_OTG1_VBUS: 5000 mV
 kernel: USB_OTG2_VBUS: 5000 mV
 kernel: armadillo_iotg_addon addon: probe
 kernel: armadillo_iotg_addon addon: No add-on expansion board detected at Add-On Module I/F 1.
 kernel: armadillo_iotg_addon addon: No add-on expansion board detected at Add-On Module I/F 2.
 kernel: USB_OTG2_VBUS: disabling

無効化されている原因がアドオンボードの検出であるのであれば、この検出動作を無効化する必要があるのでしょうか?

また、設定ファイルで他に変更すべき点がありましたら、参考資料等併せてご教示をお願い致します。

ファイル ファイルの説明
armadillo_x1-uart1-usb2.dts
syslog.txt

お世話になっております。
質問させていただいておりました件ですが、自己解決できました。

先ほどの質問の時点から設定ファイルを添付の様に書き換えた所、VBUS Enable が有効になり、USBデバイスに電源が入る様になりました。
(syslogでも kernel: USB_OTG2_VBUS: disabling が出なくなりました)

lsblkで確認した所、USBデバイス(ストレージ)が /dev/sda1 として認識されたことも確認出来ました。

この度はご教示いただきまして、誠にありがとうございました。

ファイル ファイルの説明
armadillo_x1-uart1-usb2.dts
armadillo_x1-uart1-usb2.dts.diff