Armadilloフォーラム

電源投入後のブート時にCAN信号がバスアイドル状態にならない

tsuka

2015年8月18日 13時24分

倉田です。

Armadillo-440でのCAN通信についてお問合せをさせて頂きます。

システムブート後の、アプリケーションでのCAN通信は、正常にできている
のですが、電源投入時にブート時(システムのブートメッセージが出ている間)
に限り、CANバスをドミナント状態(0)に強制的にしていて、他のデバイス間
での通信を行えない状態にArmadilloのCANがしています。
(ブート時の一定時間、CANトランシーバ手前のTxd信号が0Vになっている
ことを確認、出力側はドミナント)

ブートシーケンスが終わり、CAN通信のアプリケーショが起動されると正常に
CAN通信を開始します。

Armadilloブート時も、他のデバイス間のCAN通信を阻害することなく、アイドル
状態(リセッシブ状態1)でブートする必要があります。

実践開発ガイド第3部の記載されているカーネルコンフィグレーション

- Armadillo-400 Board options
[ ] Enable I2C2 at CON14 ([ ] へ変更)
[*] Enable CAN2 at CON14 ([*] へ変更)

- CAN bus subsystem support
<*> Raw CAN Protocol (raw access with CAN-ID filtering) (<*> へ変更)
<*> Broadcast Manager CAN Protocol (with content filtering) (<*> へ変更)

- CAN Device Drivers
< > Virtual Local CAN Interface (vcan)
[*] CAN devices debugging messages ([*] へ変更)
<*> Freescale FlexCAN (<*> へ変更)

を設定していますが、ほかに何か処置が必要でしょうか?
例えば、I2C2のドライバを外す必要はありませんか?。

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

コメント

at_kojiro.yamada

2015年8月19日 17時01分

> システムブート後の、アプリケーションでのCAN通信は、正常にできている
> のですが、電源投入時にブート時(システムのブートメッセージが出ている間)
> に限り、CANバスをドミナント状態(0)に強制的にしていて、他のデバイス間
> での通信を行えない状態にArmadilloのCANがしています。
> (ブート時の一定時間、CANトランシーバ手前のTxd信号が0Vになっている
> ことを確認、出力側はドミナント)

上記現象ですが、こちらでも再現することを確認しました。
現在調査中ですので、もう少々お待ちください。

at_kojiro.yamada

2015年8月21日 12時01分

> 電源投入時にブート時(システムのブートメッセージが出ている間)
> に限り、CANバスをドミナント状態(0)に強制的にしていて、

上記現象ですが、Armadillo-440のCAN_TXがLowに設定されておりました。
申し訳ございません。

linux-2.6.26-at25用に、CAN_TXをHighに設定するパッチ
を作成しましたのでお試しください。

> Armadilloブート時も、他のデバイス間のCAN通信を阻害することなく、アイドル
> 状態(リセッシブ状態1)でブートする必要があります。

Armadillo-440に電源を投入した瞬間から、常にリセッシブ状態であることを期
待されているでしょうか?

電源投入からブートローダーがパッド設定を変えるまでの間、
CAN_TXのパッド設定が100kΩ Pull Down[1]となります。

そのため、Armadillo-440では、電源投入の瞬間に
CAN_TXがLowになります。

電源投入時にCAN Busがリセッシブ状態であるかどうかをお使いの
CAN拡張ボードで確認していただき、
もしドミナント状態になっているのであれば、拡張ボード上で対策していただく
必要があります。

[1] これは、CAN_TXに当たるCON14 EXTIO22の
i.MX257リセット時のパッド設定です。

http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_hard…

■パッチの当て方

[ATDE ~]$ cd linux-2.6.26-at25
[ATDE ~/linux-2.6.26-at25]$ ls fix-CAN2-CAN_TX-initial-value.patch
fix-CAN2-CAN_TX-initial-value.patch
[ATDE ~/linux-2.6.26-at25]$ patch -p1 < fix-CAN2-CAN_TX-initial-value.patch
patching file arch/arm/mach-mx25/armadillo400.c
ファイル ファイルの説明
fix-CAN2-CAN_TX-initial-value.patch カーネル起動時にCAN_TXをHighに設定するパッチ

tsuka

2015年8月21日 12時17分

倉田です。

調査、対策方法の報告ありがとうございます。
内容を確認して、対策を取りたいと思います。

取り急ぎ、お礼まで。

> > 電源投入時にブート時(システムのブートメッセージが出ている間)
> > に限り、CANバスをドミナント状態(0)に強制的にしていて、
>
> 上記現象ですが、Armadillo-440のCAN_TXがLowに設定されておりました。
> 申し訳ございません。
>
> linux-2.6.26-at25用に、CAN_TXをHighに設定するパッチ
> を作成しましたのでお試しください。
>
> > Armadilloブート時も、他のデバイス間のCAN通信を阻害することなく、アイドル
> > 状態(リセッシブ状態1)でブートする必要があります。
>
> Armadillo-440に電源を投入した瞬間から、常にリセッシブ状態であることを期
> 待されているでしょうか?
>
> 電源投入からブートローダーがパッド設定を変えるまでの間、
> CAN_TXのパッド設定が100kΩ Pull Down[1]となります。
>
> そのため、Armadillo-440では、電源投入の瞬間に
> CAN_TXがLowになります。
>
> 電源投入時にCAN Busがリセッシブ状態であるかどうかをお使いの
> CAN拡張ボードで確認していただき、
> もしドミナント状態になっているのであれば、拡張ボード上で対策していただく
> 必要があります。
>
> [1] これは、CAN_TXに当たるCON14 EXTIO22の
> i.MX257リセット時のパッド設定です。
>
> http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_hard…
>
> ■パッチの当て方
>

> [ATDE ~]$ cd linux-2.6.26-at25
> [ATDE ~/linux-2.6.26-at25]$ ls fix-CAN2-CAN_TX-initial-value.patch
> fix-CAN2-CAN_TX-initial-value.patch
> [ATDE ~/linux-2.6.26-at25]$ patch -p1 < fix-CAN2-CAN_TX-initial-value.patch
> patching file arch/arm/mach-mx25/armadillo400.c
> 

>

tsuka

2015年8月21日 13時01分

倉田です。

> 電源投入からブートローダーがパッド設定を変えるまでの間、
> CAN_TXのパッド設定が100kΩ Pull Down[1]となります。
>
> そのため、Armadillo-440では、電源投入の瞬間に
> CAN_TXがLowになります。
>
> 電源投入時にCAN Busがリセッシブ状態であるかどうかをお使いの
> CAN拡張ボードで確認していただき、
> もしドミナント状態になっているのであれば、拡張ボード上で対策していただく
> 必要があります。

拡張ボード上での対策を具体的に教えてください。

これは、CANのボード上で、Txd信号をHIGHにプルアップするような
対策になりますか?。
もしそうだとすると、抵抗値、およびプルアップ先の電圧を
教えてください。

また、CAN_TXのパッド設定を100kΩ プルアップするような対策は
できないのでしょうか?。

質問ばかりで申し訳ありませんが、よろしくお願い致します。

at_kojiro.yamada

2015年8月21日 15時02分

CANのTransceiverは弊社の推奨デバイスであるATB-A400CANでしょうか?

http://armadillo.atmark-techno.com/devices/atb-a400can

ATB-A400CANは、Armadillo-440に電源を投入した瞬間でもCAN Busをドミナント状
態にしないよう設計されております。

ATB-A400CANでは、EXT_IO1(CON9 2pin)が拡張ボードの5V電源を供給するICの
ENピンに接続されており、リセット時はEXT_IO1がLow(ENがdisable)となります。

そのため、CAN Bus Transceiverの5V入力がOFFになり、CANのBusをドミナン
ト状態にすることはなく、対策の必要はありません。

tsuka

2015年8月21日 15時50分

倉田です。

> CANのTransceiverは弊社の推奨デバイスであるATB-A400CANでしょうか?

はい、そうです。

>
> http://armadillo.atmark-techno.com/devices/atb-a400can
>
> ATB-A400CANは、Armadillo-440に電源を投入した瞬間でもCAN Busをドミナント状
> 態にしないよう設計されております。
>
> ATB-A400CANでは、EXT_IO1(CON9 2pin)が拡張ボードの5V電源を供給するICの
> ENピンに接続されており、リセット時はEXT_IO1がLow(ENがdisable)となります。
>
> そのため、CAN Bus Transceiverの5V入力がOFFになり、CANのBusをドミナン
> ト状態にすることはなく、対策の必要はありません。

了解しました。

対策のパッチを当てて確認したところ、電源投入後からリセッシブ状態を
継続しているため、今回の対策を確認することができました。

今回は、迅速に調査・対策をしていただき、誠にありがとうございました。

今後とも、よろしくお願い致します。

tsuka

2015年8月21日 12時06分

倉田です。

> 上記現象ですが、こちらでも再現することを確認しました。
> 現在調査中ですので、もう少々お待ちください。

現象の再現、および調査中とのこと、サポートいただき
ありがとうございます。

こちらの状況は、開発日程が逼迫しており、対策の
目処付が必要な状況です。

つきましては、現状の調査状況、および対策日程の見込みを
お知らせください。

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