jfurukawa
2024年3月27日 11時14分
表題の件につきまして、Armadillo IoT A6E(以下、A6Eと記載)を使用して他社製品とRS-485にてシリアル通信の送受信確認を行っておりますが
A6Eからデータ送信後、早い周期(約9ミリ秒以内)で他社製品からデータを受信すると受信データの一部が消失してしまう問題が発生しております。
送信後の受信間隔を変更せずに、受信データを正常に受信する方法がありましたらご教示いただけますでしょうか。
デバイスファイル:/dev/ttymxc4
ボーレート:19200 bps
コメント
jfurukawa
> 大塩です。
> > デバイスファイル:/dev/ttymxc4
> > ボーレート:19200 bps
>
> 差し支えなければ、使用している他社製品の対向機に関する詳細をお教え頂けますでしょうか。
>
> 以上です。
大塩様
お世話になっております。ご返信いただきありがとうございます。
どのような情報が必要かご教示いただけますでしょうか。
また、簡単ではございますが通信の流れについて先に追記させていただきます。
・流れ
①対向機がGW宛にポーリングを行う
※1.ポーリング電文は10byte未満で5msec以内にデータの送信を行う
※2.送信後、次の宛先にポーリングを開始するまで4msecほど待機する
②GWはポーリングを受信すると※2の4msec以内に応答データを送信する(応答データも10byte未満です。)
・発生した現象
応答データを4msec以内に返送しているが、対向機から受信したデータが欠損している
at_syunya.ohshio
jfurukawa
at_syunya.ohshio
jfurukawa
> 追加で2点確認させてください。
> ・「受信データの一部が消失してしまう」とありましたが、消失したデータは「先頭からのデータ」でしょうか
> ・delay_rts_after_send の設定を行っているでしょうか
>
大塩様
ご連絡いただきありがとうございます。
お問い合わせいただいた内容について、回答させていただきます。
・「受信データの一部が消失してしまう」とありましたが、消失したデータは「先頭からのデータ」でしょうか
はい、先頭からのデータが数Byte消失しておりました。
・delay_rts_after_send の設定を行っているでしょうか
こちらについて、特に設定を行っておりません。
該当の設定箇所が不明なためお手数ですが、ドキュメント等ご展開いただけますでしょうか。
以上、よろしくお願いいたします。
at_syunya.ohshio
大塩です。
> ・「受信データの一部が消失してしまう」とありましたが、消失したデータは「先頭からのデータ」でしょうか
> はい、先頭からのデータが数Byte消失しておりました。
>
> ・delay_rts_after_send の設定を行っているでしょうか
> こちらについて、特に設定を行っておりません。
上記情報ありがとうございます。
おそらくは処理の遅れによって先頭の文字を取りこぼしているように見えますので
以下のパッチをカーネルに適用することによって改善される可能性があります。
https://github.com/nxp-imx/linux-imx/commit/582e9a24fc139adabb1dc951620…
パッチを適用したカーネルのswuを作成しましたので、カーネルビルドが難しい場合はこちらをお試しください。
以上です。
at_syunya.ohshio
大塩です。
> パッチを適用したカーネルのswuを作成しましたので、カーネルビルドが難しい場合はこちらをお試しください。
申し訳ありません、swu 証明書からswu送付で入れていただくのは難しいため
お客様の方で記載したパッチの内容を適用し、カーネルをビルドしていただけますでしょうか。
以下製品マニュアルに方法は記載しています。
https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…
以上です。
よろしくお願いします。
jfurukawa
> 大塩です。
>
> > パッチを適用したカーネルの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
大塩です。
記載頂いている方法でインストールディスクを作成し、初期化することでも確認可能かとは思いますが
以下の製品マニュアル の 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…
以上です。
よろしくお願いします。
jfurukawa
> 大塩です。
>
> 記載頂いている方法でインストールディスクを作成し、初期化することでも確認可能かとは思いますが
> 以下の製品マニュアル の 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
大塩です。
> こちら原因切り分けのためにまずパッチの内容が適用されているかから確認したいと思いますが何か手段はございますでしょうか。
作成したswu ファイルが適用されているかどうかの確認方法はいくつかあります。
swupdate が完了している場合、起動時に以下のようなログが表示されますのでそちらをご確認するだけでも判断可能です。
Last update on Mon May 27 10:16:42 JST 2024, updated:
また、今回はカーネルをビルドしてアップデートしていますので、 uname -a コマンドによる表記がアップデート前後で変化していれば適用されています。
作成されたswu ファイルにパッチが本当に適用されているかどうかの確認ですが、これはmkswuでswuファイル作成時に対象カーネルの中身を確認し、パッチ部分が変化していることぐらいしか確認方法は無いと思います。
以上です。
jfurukawa
> 大塩です。
>
> > こちら原因切り分けのためにまずパッチの内容が適用されているかから確認したいと思いますが何か手段はございますでしょうか。
> 作成したswu ファイルが適用されているかどうかの確認方法はいくつかあります。
> swupdate が完了している場合、起動時に以下のようなログが表示されますのでそちらをご確認するだけでも判断可能です。
>
> Last update on Mon May 27 10:16:42 JST 2024, updated: >
> また、今回はカーネルをビルドしてアップデートしていますので、 uname -a コマンドによる表記がアップデート前後で変化していれば適用されています。
>
> 作成されたswu ファイルにパッチが本当に適用されているかどうかの確認ですが、これはmkswuでswuファイル作成時に対象カーネルの中身を確認し、パッチ部分が変化していることぐらいしか確認方法は無いと思います。
>
> 以上です。
大塩様
ご回答ありがとうございます。
Armadillo起動時にアップデート時の時刻が表示されていること、unameコマンドで更新がされていることを確認できました。
しかし、当初投稿させていただきましたデータが消失する件が解消されておりませんでした。
他に同じような事象についてご対応された実績等ございましたらご教示いただけますと幸いです。
at_syunya.ohshio
大塩です。
> しかし、当初投稿させていただきましたデータが消失する件が解消されておりませんでした。
確認ありがとうございます。
原因調査として、以下情報をいただけますでしょうか。
・パッチ適用に使用したLinuxカーネルのバージョン
・ビルドに使用したカーネルディレクトリの arch/arm/boot/uImage の、sha256sum コマンド結果
・swu アップデート実行後のArmadilloの /boot/uImageの、sha256sum コマンド結果
これらによって、パッチ適用が正しくされているかの確認を行うことが出来ます。
以上です。
よろしくお願いします。
jfurukawa
> 確認ありがとうございます。
> 原因調査として、以下情報をいただけますでしょうか。
> ・パッチ適用に使用した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
大塩です。
頂いた情報から、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 より遅い時間が表示されていれば、パッチ適用後にビルドした証明となります。
以上です。
jfurukawa
大塩様
お世話になっております。
確認方法のご連絡ありがとうございます。
確認結果を以下に記載いたしますのでご確認のほどよろしくお願いいたします。
> ・パッチ適用後の 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
大塩です。
各情報ありがとうございます。
> > ・パッチ適用後の 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 の方が早いため、パッチ適用後のビルドが出来ていない可能性があります。
カーネルを再ビルドしてご確認いただけますでしょうか。
以上です。
jfurukawa
> Change 値が uImage の方が早いため、パッチ適用後のビルドが出来ていない可能性があります。
> カーネルを再ビルドしてご確認いただけますでしょうか。
大塩様
お世話になっております。ご返信いただきありがとうございます。
承知いたしました。再度ビルドして確認したいと思います。
1点、念のため確認させていただきたいのですが、ATDE上で作成したuImageのchange(変更日)が該当のArmadillo上のカーネルのchange(変更日)より早いことがパッチがあたっている証明になるとお伺いしていたと認識しているのですが間違いでしょうか。
>drivers/tty/serial/imx.c のChangeが arch/arm/boot/uImage のChange より遅い時間が表示されていれば、パッチ適用後にビルドした証明となります。
at_syunya.ohshio
大塩です。
> 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を作成したか」が証明されます。
以上です。
jfurukawa
> 大塩です。
>
> いえ、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
jfurukawa
大塩様
arch/arm/boot/uImageを一度削除して、uImageのchangeがimx.cより新しい日付(本日の日付)になっていることを確認して再度swuイメージとしてArmadilloにインストールを行いましたが当初の先頭データが消失する事象が解消されておりませんでした。
手順実施時のログを添付させていただきますのでお手数ですがご確認をお願いいたします。
また、本現象に関してそのほかに解決策があれば共有をお願いします。
ファイル | ファイルの説明 |
---|---|
6.27.2. Linux カーネルをビルドする.txt | |
外部記憶装置からイメージのインストール.txt |
at_syunya.ohshio
at_syunya.ohshio
2024年3月29日 13時21分
大塩です。
> 表題の件につきまして、Armadillo IoT A6E(以下、A6Eと記載)を使用して他社製品とRS-485にてシリアル通信の送受信確認を行っておりますが
> A6Eからデータ送信後、早い周期(約9ミリ秒以内)で他社製品からデータを受信すると受信データの一部が消失してしまう問題が発生しております。
>
> 送信後の受信間隔を変更せずに、受信データを正常に受信する方法がありましたらご教示いただけますでしょうか。
>
>
> デバイスファイル:/dev/ttymxc4
> ボーレート:19200 bps
差し支えなければ、使用している他社製品の対向機に関する詳細をお教え頂けますでしょうか。
以上です。