Armadilloフォーラム

Armadillo IoT A6Eを使用したRS-485シリアル通信の送受信間隔について

jfurukawa

2024年3月27日 11時14分

表題の件につきまして、Armadillo IoT A6E(以下、A6Eと記載)を使用して他社製品とRS-485にてシリアル通信の送受信確認を行っておりますが
A6Eからデータ送信後、早い周期(約9ミリ秒以内)で他社製品からデータを受信すると受信データの一部が消失してしまう問題が発生しております。

送信後の受信間隔を変更せずに、受信データを正常に受信する方法がありましたらご教示いただけますでしょうか。

デバイスファイル:/dev/ttymxc4
ボーレート:19200 bps

コメント

at_syunya.ohshio

2024年3月29日 13時21分

大塩です。

> 表題の件につきまして、Armadillo IoT A6E(以下、A6Eと記載)を使用して他社製品とRS-485にてシリアル通信の送受信確認を行っておりますが
> A6Eからデータ送信後、早い周期(約9ミリ秒以内)で他社製品からデータを受信すると受信データの一部が消失してしまう問題が発生しております。
>
> 送信後の受信間隔を変更せずに、受信データを正常に受信する方法がありましたらご教示いただけますでしょうか。
>
>
> デバイスファイル:/dev/ttymxc4
> ボーレート:19200 bps

差し支えなければ、使用している他社製品の対向機に関する詳細をお教え頂けますでしょうか。

以上です。

> 大塩です。
> > デバイスファイル:/dev/ttymxc4
> > ボーレート:19200 bps
>
> 差し支えなければ、使用している他社製品の対向機に関する詳細をお教え頂けますでしょうか。
>
> 以上です。

大塩様
お世話になっております。ご返信いただきありがとうございます。
どのような情報が必要かご教示いただけますでしょうか。

また、簡単ではございますが通信の流れについて先に追記させていただきます。

・流れ
①対向機がGW宛にポーリングを行う
 ※1.ポーリング電文は10byte未満で5msec以内にデータの送信を行う
 ※2.送信後、次の宛先にポーリングを開始するまで4msecほど待機する

②GWはポーリングを受信すると※2の4msec以内に応答データを送信する(応答データも10byte未満です。)

・発生した現象
 応答データを4msec以内に返送しているが、対向機から受信したデータが欠損している

at_syunya.ohshio

2024年4月1日 9時44分

大塩です。

> どのような情報が必要かご教示いただけますでしょうか。

失礼しました。
以下内容について、回答できる範囲で良いのでお教え頂けますでしょうか。
・対向機の品名(型番)
・対向機の設定(ボーレート、パリティ設定、データ長、ストップビット)

以上です。

> 以下内容について、回答できる範囲で良いのでお教え頂けますでしょうか。
> ・対向機の品名(型番)
> ・対向機の設定(ボーレート、パリティ設定、データ長、ストップビット)
>
> 以上です。

大塩様
ご返信いただきありがとうございます。
製品の品名等に関しては、確認を行いますので少々お待ちいただけますでしょうか。
先に、対向機の設定について回答させていただきます。

・ボーレート:19,200bps
・パリティ設定:なし
・データ長:8bit
・ストップビット:1bit

at_syunya.ohshio

2024年4月9日 15時11分

大塩です。

回答遅くなり申し訳ございません。
情報の送付ありがとうございます。

追加で2点確認させてください。
・「受信データの一部が消失してしまう」とありましたが、消失したデータは「先頭からのデータ」でしょうか
・delay_rts_after_send の設定を行っているでしょうか

以上です。

> 追加で2点確認させてください。
> ・「受信データの一部が消失してしまう」とありましたが、消失したデータは「先頭からのデータ」でしょうか
> ・delay_rts_after_send の設定を行っているでしょうか
>

大塩様
ご連絡いただきありがとうございます。
お問い合わせいただいた内容について、回答させていただきます。

・「受信データの一部が消失してしまう」とありましたが、消失したデータは「先頭からのデータ」でしょうか
はい、先頭からのデータが数Byte消失しておりました。

・delay_rts_after_send の設定を行っているでしょうか
こちらについて、特に設定を行っておりません。
該当の設定箇所が不明なためお手数ですが、ドキュメント等ご展開いただけますでしょうか。

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

at_syunya.ohshio

2024年4月16日 15時10分

大塩です。

> ・「受信データの一部が消失してしまう」とありましたが、消失したデータは「先頭からのデータ」でしょうか
> はい、先頭からのデータが数Byte消失しておりました。
>
> ・delay_rts_after_send の設定を行っているでしょうか
> こちらについて、特に設定を行っておりません。

上記情報ありがとうございます。
おそらくは処理の遅れによって先頭の文字を取りこぼしているように見えますので
以下のパッチをカーネルに適用することによって改善される可能性があります。
https://github.com/nxp-imx/linux-imx/commit/582e9a24fc139adabb1dc951620…

パッチを適用したカーネルのswuを作成しましたので、カーネルビルドが難しい場合はこちらをお試しください。

以上です。

at_syunya.ohshio

2024年4月16日 15時44分

大塩です。

> パッチを適用したカーネルのswuを作成しましたので、カーネルビルドが難しい場合はこちらをお試しください。

申し訳ありません、swu 証明書からswu送付で入れていただくのは難しいため
お客様の方で記載したパッチの内容を適用し、カーネルをビルドしていただけますでしょうか。
以下製品マニュアルに方法は記載しています。
https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

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

> 大塩です。
>
> > パッチを適用したカーネルのswuを作成しましたので、カーネルビルドが難しい場合はこちらをお試しください。
>
> 申し訳ありません、swu 証明書からswu送付で入れていただくのは難しいため
> お客様の方で記載したパッチの内容を適用し、カーネルをビルドしていただけますでしょうか。
> 以下製品マニュアルに方法は記載しています。
> https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…
>
> 以上です。
> よろしくお願いします。

大塩様
お世話になっております。
ご返信までに期間が空いてしまい申し訳ございません。

ご教示いただいた手順について、SDブートの手順まで実行する認識ですが
あっておりますでしょうか。

手順に従い、SDブート実行を行いログインできるところまで確認いたしましたが、改修したカーネルの内容が反映できているのか不明なため確認させていただきました。

実施した際の手順は以下の通りです。

https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

①6.27.3. Alpine Linux ルートファイルシステムをビルドする
②6.27.1. ブートローダーをビルドする
③6.27.2. Linux カーネルをビルドする
⇒ご連絡いただいたソースコードの改修部分を反映
④6.25.1. ブートディスクの作成
※ここで、WLAN搭載モデルを使用していたため下記のフォーラムを参考にブートディスクを作成
・参考にさせていただいたフォーラム:https://armadillo.atmark-techno.com/forum/armadillo/17912
⑤6.25.2. SDブートの実行

上記手順を実施後、SDブート実行を行えることまでを確認しましたが、SW2の起動デバイスをeMMCに戻すとビルドした内容は反映されていない認識です。
eMMCにも、ビルドした内容を反映させるために必要な手順がありましたらご教示いただけますでしょうか。
初歩的な質問で大変申し訳ございませんが何卒よろしくお願い申し上げます。

at_syunya.ohshio

2024年6月24日 10時20分

大塩です。

記載頂いている方法でインストールディスクを作成し、初期化することでも確認可能かとは思いますが
以下の製品マニュアル の 5.インストール で記載されている方法のうち、swu ファイルを用いてインストールする方法が手軽にご確認いただけると思いますので、そちらをお試しいただけますでしょうか。
https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

swu 初期化などのSWUpdate については、Armadillo BaseOS開発ガイドをご確認ください。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-dev…

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

> 大塩です。
>
> 記載頂いている方法でインストールディスクを作成し、初期化することでも確認可能かとは思いますが
> 以下の製品マニュアル の 5.インストール で記載されている方法のうち、swu ファイルを用いてインストールする方法が手軽にご確認いただけると思いますので、そちらをお試しいただけますでしょうか。
> https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…
>
> swu 初期化などのSWUpdate については、Armadillo BaseOS開発ガイドをご確認ください。
> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-dev…
>
> 以上です。
> よろしくお願いします。

大塩様
お世話になっております。
ご回答いただいたswupdateによる更新を実施いたしましたがデータが消失している件が解消されていないと思われます。
こちら原因切り分けのためにまずパッチの内容が適用されているかから確認したいと思いますが何か手段はございますでしょうか。

at_syunya.ohshio

2024年6月24日 15時28分

大塩です。

> こちら原因切り分けのためにまずパッチの内容が適用されているかから確認したいと思いますが何か手段はございますでしょうか。
作成したswu ファイルが適用されているかどうかの確認方法はいくつかあります。
swupdate が完了している場合、起動時に以下のようなログが表示されますのでそちらをご確認するだけでも判断可能です。

Last update on Mon May 27 10:16:42 JST 2024, updated:

また、今回はカーネルをビルドしてアップデートしていますので、 uname -a コマンドによる表記がアップデート前後で変化していれば適用されています。

作成されたswu ファイルにパッチが本当に適用されているかどうかの確認ですが、これはmkswuでswuファイル作成時に対象カーネルの中身を確認し、パッチ部分が変化していることぐらいしか確認方法は無いと思います。

以上です。

> 大塩です。
>
> > こちら原因切り分けのためにまずパッチの内容が適用されているかから確認したいと思いますが何か手段はございますでしょうか。
> 作成したswu ファイルが適用されているかどうかの確認方法はいくつかあります。
> swupdate が完了している場合、起動時に以下のようなログが表示されますのでそちらをご確認するだけでも判断可能です。
>

> Last update on Mon May 27 10:16:42 JST 2024, updated:
> 

> また、今回はカーネルをビルドしてアップデートしていますので、 uname -a コマンドによる表記がアップデート前後で変化していれば適用されています。
>
> 作成されたswu ファイルにパッチが本当に適用されているかどうかの確認ですが、これはmkswuでswuファイル作成時に対象カーネルの中身を確認し、パッチ部分が変化していることぐらいしか確認方法は無いと思います。
>
> 以上です。

大塩様

ご回答ありがとうございます。
Armadillo起動時にアップデート時の時刻が表示されていること、unameコマンドで更新がされていることを確認できました。
しかし、当初投稿させていただきましたデータが消失する件が解消されておりませんでした。

他に同じような事象についてご対応された実績等ございましたらご教示いただけますと幸いです。

at_syunya.ohshio

2024年7月2日 11時42分

大塩です。

> しかし、当初投稿させていただきましたデータが消失する件が解消されておりませんでした。
確認ありがとうございます。
原因調査として、以下情報をいただけますでしょうか。
・パッチ適用に使用したLinuxカーネルのバージョン
・ビルドに使用したカーネルディレクトリの arch/arm/boot/uImage の、sha256sum コマンド結果
・swu アップデート実行後のArmadilloの /boot/uImageの、sha256sum コマンド結果

これらによって、パッチ適用が正しくされているかの確認を行うことが出来ます。

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

> 確認ありがとうございます。
> 原因調査として、以下情報をいただけますでしょうか。
> ・パッチ適用に使用したLinuxカーネルのバージョン
> ・ビルドに使用したカーネルディレクトリの arch/arm/boot/uImage の、sha256sum コマンド結果
> ・swu アップデート実行後のArmadilloの /boot/uImageの、sha256sum コマンド結果
>
> これらによって、パッチ適用が正しくされているかの確認を行うことが出来ます。
>
> 以上です。
> よろしくお願いします。

大塩様

お世話になっております。
お問い合わせいただいた情報について下記に示す通りです。
ご確認のほどよろしくお願いいたします。

====
・パッチ適用に使用したLinuxカーネルのバージョン
5.10.218-r0
https://armadillo.atmark-techno.com/resources/software/armadillo-iot-a6…
※上記サイトから当時取得

・ビルドに使用したカーネルディレクトリの arch/arm/boot/uImage の、sha256sum コマンド結果
atmark@atde9:~/sdboot/linux-5.10-5.10.218-r0/arch/arm/boot$ sha256sum uImage
65ea1a9b74f67bfde1875d82f66cd27b1637a71e17f5e500365212f4e4355e66 uImage

・swu アップデート実行後のArmadilloの /boot/uImageの、sha256sum コマンド結果
armadillo:/boot# sha256sum uImage
65ea1a9b74f67bfde1875d82f66cd27b1637a71e17f5e500365212f4e4355e66 uImage

at_syunya.ohshio

2024年7月2日 14時16分

大塩です。

頂いた情報から、swu が正常にアップデートされていることはわかりました、ありがとうございます。
次にパッチが正常に当たっているかどうかの確認ですが、以下の情報をいただけますでしょうか。
・パッチ適用後の drivers/tty/serial/imx.c sha256sum コマンド結果
 こちらで 5.10.218-r0 にパッチを当てた際のsha256sum の値は以下のため、これと同値であればOKです。

$ sha256sum drivers/tty/serial/imx.c
ef2e3bddfd3a96eb8f123ebd34f17c3e2944cdede91ca58d8e752bbf673c3438 *drivers/tty/serial/imx.c

・パッチを適用したカーネル上で stat arch/arm/boot/uImage drivers/tty/serial/imx.c コマンド結果
 drivers/tty/serial/imx.c のChangeが arch/arm/boot/uImage のChange より遅い時間が表示されていれば、パッチ適用後にビルドした証明となります。

以上です。

大塩様
お世話になっております。
確認方法のご連絡ありがとうございます。

確認結果を以下に記載いたしますのでご確認のほどよろしくお願いいたします。

> ・パッチ適用後の drivers/tty/serial/imx.c sha256sum コマンド結果
atmark@atde9:~/sdboot/linux-5.10-5.10.218-r0$ sha256sum drivers/tty/serial/imx.c
20cb826a33d0c7452f441b72dda71889f0c97a06158da31308fc67e17a3f79bc drivers/tty/serial/imx.c

⇒こちらはビルドに使用したカーネルディレクトリ上(ATDE上)での実行でよろしかったでしょうか?
 念のためカーネルディレクトリ上に配置しているimx.cのソースコードを添付ファイルで添付させていただきます。

> ・パッチを適用したカーネル上で stat arch/arm/boot/uImage drivers/tty/serial/imx.c コマンド結果

atmark@atde9:~/sdboot/linux-5.10-5.10.218-r0$ stat arch/arm/boot/uImage drivers/tty/serial/imx.c
File: arch/arm/boot/uImage
Size: 6307952 Blocks: 12328 IO Block: 4096 通常ファイル
Device: fe00h/65024d Inode: 782334 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-07-02 11:52:36.740535606 +0900
Modify: 2024-06-17 10:16:43.209387521 +0900
Change: 2024-06-17 10:16:43.209387521 +0900
Birth: 2024-06-17 10:16:43.149389582 +0900
File: drivers/tty/serial/imx.c
Size: 72985 Blocks: 144 IO Block: 4096 通常ファイル
Device: fe00h/65024d Inode: 870754 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-07-02 13:13:09.618507429 +0900
Modify: 2024-06-12 19:43:36.000000000 +0900
Change: 2024-06-17 11:55:31.199155134 +0900
Birth: 2024-06-17 09:59:52.928258618 +0900

ファイル ファイルの説明
imx.c パッチ適用後のimx.cファイル

at_syunya.ohshio

2024年7月3日 11時46分

大塩です。
各情報ありがとうございます。

> > ・パッチ適用後の drivers/tty/serial/imx.c sha256sum コマンド結果
> atmark@atde9:~/sdboot/linux-5.10-5.10.218-r0$ sha256sum drivers/tty/serial/imx.c
> 20cb826a33d0c7452f441b72dda71889f0c97a06158da31308fc67e17a3f79bc drivers/tty/serial/imx.c
>
> ⇒こちらはビルドに使用したカーネルディレクトリ上(ATDE上)での実行でよろしかったでしょうか?
>  念のためカーネルディレクトリ上に配置しているimx.cのソースコードを添付ファイルで添付させていただきます。
内容確認しましたが、改行やスペースの違いがある以外にコードに差異はありませんでしたのでパッチ適用は出来ているかと思います。

> > ・パッチを適用したカーネル上で stat arch/arm/boot/uImage drivers/tty/serial/imx.c コマンド結果
>
> atmark@atde9:~/sdboot/linux-5.10-5.10.218-r0$ stat arch/arm/boot/uImage drivers/tty/serial/imx.c
> File: arch/arm/boot/uImage
> Size: 6307952 Blocks: 12328 IO Block: 4096 通常ファイル
> Device: fe00h/65024d Inode: 782334 Links: 1
> Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
> Access: 2024-07-02 11:52:36.740535606 +0900
> Modify: 2024-06-17 10:16:43.209387521 +0900
> Change: 2024-06-17 10:16:43.209387521 +0900
> Birth: 2024-06-17 10:16:43.149389582 +0900
> File: drivers/tty/serial/imx.c
> Size: 72985 Blocks: 144 IO Block: 4096 通常ファイル
> Device: fe00h/65024d Inode: 870754 Links: 1
> Access: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root)
> Access: 2024-07-02 13:13:09.618507429 +0900
> Modify: 2024-06-12 19:43:36.000000000 +0900
> Change: 2024-06-17 11:55:31.199155134 +0900
> Birth: 2024-06-17 09:59:52.928258618 +0900

Change 値が uImage の方が早いため、パッチ適用後のビルドが出来ていない可能性があります。
カーネルを再ビルドしてご確認いただけますでしょうか。

以上です。

> Change 値が uImage の方が早いため、パッチ適用後のビルドが出来ていない可能性があります。
> カーネルを再ビルドしてご確認いただけますでしょうか。

大塩様

お世話になっております。ご返信いただきありがとうございます。
承知いたしました。再度ビルドして確認したいと思います。
1点、念のため確認させていただきたいのですが、ATDE上で作成したuImageのchange(変更日)が該当のArmadillo上のカーネルのchange(変更日)より早いことがパッチがあたっている証明になるとお伺いしていたと認識しているのですが間違いでしょうか。
>drivers/tty/serial/imx.c のChangeが arch/arm/boot/uImage のChange より遅い時間が表示されていれば、パッチ適用後にビルドした証明となります。

at_syunya.ohshio

2024年7月3日 13時35分

大塩です。

> 1点、念のため確認させていただきたいのですが、ATDE上で作成したuImageのchange(変更日)が該当のArmadillo上のカーネルのchange(変更日)より早いことがパッチがあたっている証明になるとお伺いしていたと認識しているのですが間違いでしょうか。
> >drivers/tty/serial/imx.c のChangeが arch/arm/boot/uImage のChange より遅い時間が表示されていれば、パッチ適用後にビルドした証明となります。

いえ、Armadilloにパッチが正しく当たっていることの証明は、以下が同値であることで確認可能です。
・ビルド実行後のカーネルディレクトリの arch/arm/boot/uImage の、sha256sum
・swu アップデート実行後のArmadilloの /boot/uImageの、sha256sum

stat コマンドで確認したChange 確認は、「カーネルにパッチ適用を行った後、ビルドしてuImageを作成したか」の証明です。

stat コマンドはどちらも ATDE上のカーネルディレクトリ内のファイルを対象としています。
ビルドする過程では以下の順で作業を行うと思います。
1.パッチを当てることでdrivers/tty/serial/imx.cの内容が変更される
2.ビルドを実行することでuImageが作成される
その結果として imx.cのChange 時間が前、uImageのChange 時間が後になるはずです。
これによって、「カーネルにパッチ適用を行った後、ビルドしてuImageを作成したか」が証明されます。

以上です。

> 大塩です。
>
> いえ、Armadilloにパッチが正しく当たっていることの証明は、以下が同値であることで確認可能です。
> ・ビルド実行後のカーネルディレクトリの arch/arm/boot/uImage の、sha256sum
> ・swu アップデート実行後のArmadilloの /boot/uImageの、sha256sum
>
> stat コマンドで確認したChange 確認は、「カーネルにパッチ適用を行った後、ビルドしてuImageを作成したか」の証明です。
>
> stat コマンドはどちらも ATDE上のカーネルディレクトリ内のファイルを対象としています。
> ビルドする過程では以下の順で作業を行うと思います。
> 1.パッチを当てることでdrivers/tty/serial/imx.cの内容が変更される
> 2.ビルドを実行することでuImageが作成される
> その結果として imx.cのChange 時間が前、uImageのChange 時間が後になるはずです。
> これによって、「カーネルにパッチ適用を行った後、ビルドしてuImageを作成したか」が証明されます。
>
> 以上です。

大塩様
ご説明ありがとうございます。
以下マニュアルを参考に6.27.2の手順1~5を実施しておりますが(※手順5は”「SWU イメージのインストール」 でインストールする”を実施)
https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

stat arch/arm/boot/uImage drivers/tty/serial/imx.c コマンド結果でchange値がビルドする前から変更が見られないのですが何か抜けている手順とありますでしょうか。
初歩的な質問で申し訳ございませんがご確認のほどよろしくお願いいたします。

at_syunya.ohshio

2024年7月4日 12時47分

大塩です。

ご確認ありがとうございます。
失礼いたしました、確認したところuImage自体は内容が変化していないためChangeの値が変わっていないようですね。
念の為削除->再作成していただければ確実にチェックできると思います。

以上です。

大塩様

arch/arm/boot/uImageを一度削除して、uImageのchangeがimx.cより新しい日付(本日の日付)になっていることを確認して再度swuイメージとしてArmadilloにインストールを行いましたが当初の先頭データが消失する事象が解消されておりませんでした。
手順実施時のログを添付させていただきますのでお手数ですがご確認をお願いいたします。

また、本現象に関してそのほかに解決策があれば共有をお願いします。

ファイル ファイルの説明
6.27.2. Linux カーネルをビルドする.txt
外部記憶装置からイメージのインストール.txt

at_syunya.ohshio

2024年7月5日 11時34分

大塩です。

ご確認、各ファイル送付ありがとうございます。

この件につきましては、別途営業からご連絡致します。

以上です。