Armadilloフォーラム

CANの設定について

n.yamamoto

2014年12月18日 17時25分

Yamamotoです。

460用の既存システムをクリアな状態で再構築するために、
新規で環境やコンフィグレーションをしています。

CAN通信を使用しているので「Armadillo 実践開発ガイド」の
2.5.4. カーネルコンフィギュレーションの手順でコンフィグレーションを
実施して実機で動作させたところ
ifconfig can0 up/down
実施したところで”SIOCGIFFLAGS: No such device”のエラーと思われる表示が出ます。

調べたところCAN通信をするにあたって、
/sys/devices/platform/FlexCAN.1/ディレクトリ以下にCAN通信のファイルがあるようなのですが
FlexCAN.xディレクトリが存在しません。

これは何かコンフィグレーションに抜けがあるためでしょうか?
あるいは、何かで設定が必要なのでしょうか?

以前に実施時は、土台を別の担当者が作成してそこから動作確認していたので、通信速度とかで
/sys/devices/platform/FlexCAN.1内のファイルを触った記憶はあるのですが・・・

コメント

at_takashi.sasayama

2014年12月18日 19時10分

笹山です。

> これは何かコンフィグレーションに抜けがあるためでしょうか?
> あるいは、何かで設定が必要なのでしょうか?

Armadillo 実践開発ガイド 2.5.4. カーネルコンフィギュレーション の手順で、
コンフィグレーションを行い、ビルド、イメージの作成を行えば、
can0 は有効化されます。他の設定は必要ありません。

参考までに、実践開発ガイドに沿って、コンフィギュレーションを行った、
コンフィギュレーションファイルを添付します。

ファイル名: config-a460-can.txt

問題が発生する環境の linux-2.6.x/.config と 比較し、
CAN関連のコンフィグに差分が無いかを確認してみてください。

=======
参考情報
=======
Armadillo実践開発ガイド 第3部 ハードウェア機能をカスタマイズする 2.5. CAN
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-3_ja-2…

ファイル ファイルの説明
config-a460-can.txt linux-2.6.26-at20 Armadillo-460用 can 有効

Yamamotoです。

ザットです比較しましたが、CAN関係は同じように見えます。
UART関係が、先のSPIの設定と関係して違いがあるようです。

明日、もう少し詳細に見て見ます。

もしよければ、先にいただいたSPIの設定にCANを有効にしたファイルをいただく事はできますか?

贅沢を言ってすみません。

> 笹山です。
>
> > これは何かコンフィグレーションに抜けがあるためでしょうか?
> > あるいは、何かで設定が必要なのでしょうか?
>
> Armadillo 実践開発ガイド 2.5.4. カーネルコンフィギュレーション の手順で、
> コンフィグレーションを行い、ビルド、イメージの作成を行えば、
> can0 は有効化されます。他の設定は必要ありません。
>
> 参考までに、実践開発ガイドに沿って、コンフィギュレーションを行った、
> コンフィギュレーションファイルを添付します。
>
> ファイル名: config-a460-can.txt
>
> 問題が発生する環境の linux-2.6.x/.config と 比較し、
> CAN関連のコンフィグに差分が無いかを確認してみてください。
>
> =======
> 参考情報
> =======
> Armadillo実践開発ガイド 第3部 ハードウェア機能をカスタマイズする 2.5. CAN
> http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-3_ja-2…

Yamamotoです。

CANのみをコンフィグした内容と、添付ファイルとを比較して相違ないことを確認して
inconfig can0 up
および
ifconfig can1 up
行ったのですが
”SIOCGIFFLAGS: No such device”
と表示されます。

/sys/devices/platform/以下のフォルダにもFlexCAN.1はあるのですがFlexCAN.0は有りません。

zcat /proc/config.gz | grep CAN | grep =y では以下のようになりました。
CONFIG_FLEXCAN_SELECT2=y
CONFIG_ARMADILLO400_CAN2_CON14=y
CONFIG_ARMADILLO400_CON14_3_CAN2_TXCAN=y
CONFIG_ARMADILLO400_CON14_4_CAN2_RXCAN=y
CONFIG_CAN=y
CONFIG_CAN_RAW=y
CONFIG_CAN_BCM=y
CONFIG_CAN_FLEXCAN=y

忘れてましたがCAN1も使用したいのですが、CAN1が有効になっていないように思われるのですが・・・・

旧の動作環境では
CONFIG_FLEXCAN_SELECT1=y
CONFIG_FLEXCAN_SELECT2=y
CONFIG_ARMADILLO400_CAN1_CON11=y
CONFIG_ARMADILLO400_CAN2_CON14=y
CONFIG_ARMADILLO400_CON11_48_CAN1_TXCAN=y
CONFIG_ARMADILLO400_CON11_49_CAN1_RXCAN=y
CONFIG_ARMADILLO400_CON14_3_CAN2_TXCAN=y
CONFIG_ARMADILLO400_CON14_4_CAN2_RXCAN=y
CONFIG_CAN=y
CONFIG_CAN_RAW=y
CONFIG_CAN_BCM=y
CONFIG_CAN_DEBUG_DEVICES=y
CONFIG_CAN_FLEXCAN=y

/sys/devices/platformフォルダにもFlexCAN.0とFlexCAN.1が存在します。

> 笹山です。
>
> > これは何かコンフィグレーションに抜けがあるためでしょうか?
> > あるいは、何かで設定が必要なのでしょうか?
>
> Armadillo 実践開発ガイド 2.5.4. カーネルコンフィギュレーション の手順で、
> コンフィグレーションを行い、ビルド、イメージの作成を行えば、
> can0 は有効化されます。他の設定は必要ありません。
>
> 参考までに、実践開発ガイドに沿って、コンフィギュレーションを行った、
> コンフィギュレーションファイルを添付します。
>
> ファイル名: config-a460-can.txt
>
> 問題が発生する環境の linux-2.6.x/.config と 比較し、
> CAN関連のコンフィグに差分が無いかを確認してみてください。
>
> =======
> 参考情報
> =======
> Armadillo実践開発ガイド 第3部 ハードウェア機能をカスタマイズする 2.5. CAN
> http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-3_ja-2…

Yamamotoです。

色々と分割で確認するのは面倒なので旧システム設定を添付します。

この旧システムにSPI1を有効にしたかったのですが、前回上手くいかずに断念しました。

旧システムではCAN1,2とGPIOを使用可能にしただけのはずなのですが・・・・

一部、SPIを使用しようとした片鱗が残っているかもしれません。

ファイル ファイルの説明
config_CAN_GPIO.txt 旧システム.config

Yamamotoです。

https://users.atmark-techno.com/blog/750/1087
でCAN1は標準では有効になっていないのでKconfigのdiffで変更の必要があることがわかりました。

確かに、当方の前任者ファイルにもdiffファイルが残っていました。

が、Kconfigのdiffはどこで実施すればよいのでしょうか?
linux-2.6.26-atXX\arch\arm
でユーザログインでdiffファイルを実行してみたのでうが、CAN1がmenuconfigで表示されません。

> 笹山です。
>
> > これは何かコンフィグレーションに抜けがあるためでしょうか?
> > あるいは、何かで設定が必要なのでしょうか?
>
> Armadillo 実践開発ガイド 2.5.4. カーネルコンフィギュレーション の手順で、
> コンフィグレーションを行い、ビルド、イメージの作成を行えば、
> can0 は有効化されます。他の設定は必要ありません。
>
> 参考までに、実践開発ガイドに沿って、コンフィギュレーションを行った、
> コンフィギュレーションファイルを添付します。
>
> ファイル名: config-a460-can.txt
>
> 問題が発生する環境の linux-2.6.x/.config と 比較し、
> CAN関連のコンフィグに差分が無いかを確認してみてください。
>
> =======
> 参考情報
> =======
> Armadillo実践開発ガイド 第3部 ハードウェア機能をカスタマイズする 2.5. CAN
> http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-3_ja-2…

Yamamotoです。

お騒がせしました。
解決しました。

CAN1を有効(下記)にしておりませんでした。

Linux Kernel Configuration
System Type --->
Freescale MXC Implementations --->
MX25 Options --->
Device Option --->
[*] Enable FlexCAN1 module ← チェックを入れる

Yamamtoです。

済みません。

エラーが発生していなかったので、解決したと思っていたのですがCAN1側の送信が出来ていませんでした。

デバイスも登録されていて、OpenとWriteのエラーになっていないのですが出力されていません。
CAN2側は出力されています。

linux-2.6.26-at20を使用していますが、menuconfigでも上記の設定以外無くなっています。

linux-2.6.26-at15を使用していた時は”Armadillo-400 Board options --->”にCAN1の選択もあったのですが無くなっています。

何が設定の間違いがあるのでしょうか?

.configファイルを添付しておきます。

ファイル ファイルの説明
linux-2.6.26-at20_config.txt linux-2.6.26-at20の使用.configファイル

Yamamotoです。

笹山様へ

CAN0の出力が出ていない件で教えてください。

ご指摘の手順を見直したところ、初期の
[ATDE ~/linux-2.6.26-at19]$ make armadillo460_defconfig (Armadillo-460の場合)
を実施していませんでした。

menuconfig内でArmadillo-460を選択した後にCAN設定しただけでしたが問題があるのでしょうか?

あと、添付の.configファイルを見たのですが
# CONFIG_FLEXCAN_SELECT1 is not set
でCAN1が選択されていないように見えるのですがこれでOKなのでしょうyか?

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

> 笹山です。
>
> > これは何かコンフィグレーションに抜けがあるためでしょうか?
> > あるいは、何かで設定が必要なのでしょうか?
>
> Armadillo 実践開発ガイド 2.5.4. カーネルコンフィギュレーション の手順で、
> コンフィグレーションを行い、ビルド、イメージの作成を行えば、
> can0 は有効化されます。他の設定は必要ありません。
>
> 参考までに、実践開発ガイドに沿って、コンフィギュレーションを行った、
> コンフィギュレーションファイルを添付します。
>
> ファイル名: config-a460-can.txt
>
> 問題が発生する環境の linux-2.6.x/.config と 比較し、
> CAN関連のコンフィグに差分が無いかを確認してみてください。
>
> =======
> 参考情報
> =======
> Armadillo実践開発ガイド 第3部 ハードウェア機能をカスタマイズする 2.5. CAN
> http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-3_ja-2…

at_takashi.sasayama

2015年2月24日 15時09分

笹山です。

> menuconfig内でArmadillo-460を選択した後にCAN設定しただけでしたが問題があるのでしょうか?

同様の現象をこちらでも再現できました。
原因の調査を行ってみます。

確認なのですが、CAN1 を有効にするにあたって
linux-2.6.26-at20 のソースに変更を入れていると思いますが、
その変更は下記の内容のみでしょうか?

Armadilllo-400シリーズで、CAN1を有効にする
https://users.atmark-techno.com/blog/750/1087

Yamamotoです。

下記ですが、前任者のメモに下記のパッチファイルがあったのですが適用すべきなのか如何かと適用方法が解らず何の実施していません。
昨日、 linux-2.6.26-at20 配下で”patch パッチファイル”で実施したのですが相当時間待っても終わらず、平行の別作業によりリセットが掛かり最終確認は出来ていません。

確認していただけましたら、patchの実施方法も教えていただけますでしょうか?

> 確認なのですが、CAN1 を有効にするにあたって
> linux-2.6.26-at20 のソースに変更を入れていると思いますが、
> その変更は下記の内容のみでしょうか?
>
> Armadilllo-400シリーズで、CAN1を有効にする
> https://users.atmark-techno.com/blog/750/1087
>

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

at_takashi.sasayama

2015年2月25日 17時57分

笹山です。

先に CAN1の信号が確認できないと記しましたが、
こちらの確認ミスでした。
下記の手順で Armadillo-460 でもCAN1の動作確認はできます。

Armadilllo-400シリーズで、CAN1を有効にする
https://users.atmark-techno.com/blog/750/1087

参考までに linux-2.6.26-at20 で動作確認ができた
CAN1 を有効にするパッチと、Armadillo-460用に CAN1,CAN2を有効にした .config を添付します。

パッチは以下のコマンドで、linux-2.6.26-at20 のソースに対して適用してください。

atmark-dist/linux-2.6.x 配下へ移動後
[ATDE3 ]$ patch -p0 < linux-2.6.26-at20-can1-support.patch

linux-2.6.26-at20-a460-can1-can2-enable.config.txt は、
atmark-dist/linux-2.6.x にある .config に置き換えます。

この環境でイメージを作成すれば、
CAN1 の動作が確認できるはずです。

Armadillo上のデバイス名は、
can0 が CAN1、can1 が CAN2 に対応しています。

CAN1_TX は CON11_48、CAN1_RX は CON11_49 から出ています。

5.20. CON11信号マルチプレクス(39~50ピン)
http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_hard…

以下のコマンドを実行時に、CAN1_TX から信号が出力されますので、
オシロスコープなどで観測を行ってみてください。

cansend can0 123#12345678
ファイル ファイルの説明
linux-2.6.26-at20-can1-support.patch linux-2.6.26-at20用 CAN1 を有効化するパッチ
linux-2.6.26-at20-a460-can1-can2-enable.config.txt linux-2.6.26-at20用 Armadillo-460 CAN1

Yamamotoです。

有難うございます。

別件対応ですぐに確認出来ません。
後ほど確認結果を返信させていただきます。

Yamamotoです。

パッチを充てて、I2C3無効でCAN1有効にできました。

再度イメージを作成し直してCAN1からもう正常に送信できました。

有難うございました。

なお、もう一件のGPIO信号の件はまだ不良がないか調査中です。