Armadilloフォーラム

CRCエラー回避対策のご相談

akio_tsuchiya

2020年3月5日 17時56分

「Armadillo-840の「NORフラッシュメモリ書き換え処理に関する仕様変更のお知らせ (2018年4月/Armadillo-800シリーズ対象)」 に対処するご相談」

として記述させていただいておりました。

しかし、原点に立ち返ると、「CRCエラー回避対策」のご相談として、商社を通して、

「CRCエラー回避対策」の有効な対策として、
「Armadillo-840の「NORフラッシュメモリ書き換え処理に関する仕様変更のお知らせ (2018年4月/Armadillo-800シリーズ対象)」
をいただいております。

本件は、「プラットフォームレベルでのエンハンス対応」が要求されます。

<ご質問1>
https://armadillo.atmark-techno.com/news/announce/20180409
本件は、プラットフォームレベルでのエンハンス対応が要求されます。

しかし、次の[既存環境ファイル]が、下記の様に修正されている事が判明いたしました。

 ⇒ 現時点で、追加モジュール及び修正が特定できない場合、既存環境ファイルに適用可能な、
   CRCエラー回避となるようなパッチファイル等は存在しないでしょうか?
   
[既存環境ファイル]
・Linux Linuxカーネル linux-3.4-at20.tar.gz
・AtmarkDist ユーザランド atmark-dist-20160927.tar.gz
・Hermit ブートローダ hermit-at-3.8.1-source.tar.gz

       -記-

[既存環境に対する変更]
①未変更ファイル
・Linux 37,669
・AtmarkDist 81,532
・Hermit 567

②内容が変更されているファイル
・Linux 13
・AtmarkDist 3
・Hermit 1

③タイムスタンプが変更されているファイル
・Linux 1,129
・AtmarkDist 182
・Hermit 0

④オリジナルから削除されているファイル
・Linux -10
・AtmarkDist -33
・Hermit 0

⑤オリジナルに追加されているファイル
・Linux 730
・AtmarkDist 2,365
・Hermit 210

以上


コメント

at_mizo

2020年3月6日 10時23分

溝渕です。

> しかし、原点に立ち返ると、「CRCエラー回避対策」のご相談として、商社を通して、
>
> 「CRCエラー回避対策」の有効な対策として、
> 「Armadillo-840の「NORフラッシュメモリ書き換え処理に関する仕様変更のお知らせ (2018年4月/Armadillo-800シリーズ対象)」
> をいただいております。
:省略
>  ⇒ 現時点で、追加モジュール及び修正が特定できない場合、既存環境ファイルに適用可能な、
>    CRCエラー回避となるようなパッチファイル等は存在しないでしょうか?

申し訳ございませんが、パッチファイルとしては存在しません。前バージョン
のソースアーカイブとの差分をご自信でご確認していただくこととなります。

「CRCエラー回避対策」==「動作の安定性向上を目的とした、NORフラッシュメモリ書き換え処理に関する仕様変更」

と思います。以下ニュースにそれぞれのバージョンが記載されておりますので、
差分をご確認ください。

https://armadillo.atmark-techno.com/news/20180402/software-update-a800
https://armadillo.atmark-techno.com/news/announce/20180409

akio_tsuchiya

2020年7月14日 11時24分

以前より、[CRCエラー回避対策のご相談]をさせていただいております、
マルタカテクノ 技術部 土屋明生と申します。

私の理解が至らず、もう一度、御教示ください。

https://armadillo.atmark-techno.com/news/announce/20180409

上記ページの 本文 先頭から2行目に、

「本仕様変更は、NORフラッシュメモリの変更後(2017年発行の変更通知によるもの)の製品には影響しません。」

と記載がありますが、この内容は、NOR型Flashメモリのハードウェアを利用すれば、
「以下の資源を適用した「Armadillo-840」であっても、CRCエラー対策が可能となる。」
と理解してもよいでしょうか?
<適用資源>
 ・ブートローダ
hermit-at-3.8.1-source.tar.gz
 ・Linuxカーネル
linux-3.4-at20.tar.gz
 ・AtmarkDist
atmark-dist-20160927.tar.gz

ご回答の程、何卒、宜しくお願い申し上げます。

> 溝渕です。
>
> > しかし、原点に立ち返ると、「CRCエラー回避対策」のご相談として、商社を通して、
> >
> > 「CRCエラー回避対策」の有効な対策として、
> > 「Armadillo-840の「NORフラッシュメモリ書き換え処理に関する仕様変更のお知らせ (2018年4月/Armadillo-800シリーズ対象)」
> > をいただいております。
> :省略
> >  ⇒ 現時点で、追加モジュール及び修正が特定できない場合、既存環境ファイルに適用可能な、
> >    CRCエラー回避となるようなパッチファイル等は存在しないでしょうか?
>
> 申し訳ございませんが、パッチファイルとしては存在しません。前バージョン
> のソースアーカイブとの差分をご自信でご確認していただくこととなります。
>
> 「CRCエラー回避対策」==「動作の安定性向上を目的とした、NORフラッシュメモリ書き換え処理に関する仕様変更」
>
> と思います。以下ニュースにそれぞれのバージョンが記載されておりますので、
> 差分をご確認ください。
>
> https://armadillo.atmark-techno.com/news/20180402/software-update-a800
> https://armadillo.atmark-techno.com/news/announce/20180409
>

akio_tsuchiya

2020年7月14日 11時25分

以前より、[CRCエラー回避対策のご相談]をさせていただいております、
マルタカテクノ 技術部 土屋明生と申します。

私の理解が至らず、もう一度、御教示ください。

https://armadillo.atmark-techno.com/news/announce/20180409

上記ページの 本文 先頭から2行目に、

「本仕様変更は、NORフラッシュメモリの変更後(2017年発行の変更通知によるもの)の製品には影響しません。」

と記載がありますが、この内容は、NOR型Flashメモリのハードウェアを利用すれば、
「以下の資源を適用した「Armadillo-840」であっても、CRCエラー対策が可能となる。」
と理解してもよいでしょうか?
<適用資源>
 ・ブートローダ
hermit-at-3.8.1-source.tar.gz
 ・Linuxカーネル
linux-3.4-at20.tar.gz
 ・AtmarkDist
atmark-dist-20160927.tar.gz

ご回答の程、何卒、宜しくお願い申し上げます。

> 溝渕です。
>
> > しかし、原点に立ち返ると、「CRCエラー回避対策」のご相談として、商社を通して、
> >
> > 「CRCエラー回避対策」の有効な対策として、
> > 「Armadillo-840の「NORフラッシュメモリ書き換え処理に関する仕様変更のお知らせ (2018年4月/Armadillo-800シリーズ対象)」
> > をいただいております。
> :省略
> >  ⇒ 現時点で、追加モジュール及び修正が特定できない場合、既存環境ファイルに適用可能な、
> >    CRCエラー回避となるようなパッチファイル等は存在しないでしょうか?
>
> 申し訳ございませんが、パッチファイルとしては存在しません。前バージョン
> のソースアーカイブとの差分をご自信でご確認していただくこととなります。
>
> 「CRCエラー回避対策」==「動作の安定性向上を目的とした、NORフラッシュメモリ書き換え処理に関する仕様変更」
>
> と思います。以下ニュースにそれぞれのバージョンが記載されておりますので、
> 差分をご確認ください。
>
> https://armadillo.atmark-techno.com/news/20180402/software-update-a800
> https://armadillo.atmark-techno.com/news/announce/20180409
>

at_ohsawa

2020年7月14日 11時56分

>NOR型Flashメモリのハードウェアを利用すれば、
ここは誤解されています。

Armadillo-840は当初からNOR型フラッシュメモリを搭載しています。
型番が異なる新旧2種類があるだけです。

-----
「本仕様変更は、NORフラッシュメモリの変更後(2017年発行の変更通知によるもの)の製品には影響しません。」

これは、書き方が分かりづらいのですが、先述の新フラッシュメモリの搭載のためソフトウェアの
変更を実施した際に「新フラッシュメモリ対応」と同時に「CRCエラー対策」の2つの変更を
カーネルとAtmarkDistに追加したことについて、やや面倒な書き方をしております。申し訳ございません。

先のニュースでは下記の2つの事を説明しておます。

「変更後(新フラッシュメモリ)の製品(に対応しているソフトウェアであれば)最初から仕様が新しい
ソフトウェアが書かれているので、仕様変更にはあたりません。(=影響なし)」

一方で、言外ですが

「旧フラッシュメモリ製品については新フラッシュメモリにも対応したソフトウェアに
更新することで仕様に影響(=CRCエラー対策追加による仕様の変化)があります」

という事です。

-----
> 「以下の資源を適用した「Armadillo-840」であっても、CRCエラー対策が可能となる。」
> と理解してもよいでしょうか?

いいえ、先述のソフトウェアの対応によってCRCエラーの対策をしているので、
ソフトウェアもセットで使う必要があります。

> linux-3.4-at20.tar.gz
> atmark-dist-20160927.tar.gz

これらは未対策です。
カーネルはat26から、AtmarkDistはv20180330から対応になっているので、
先のat_mizoの回答どおり自作でパッチするかバージョンアップが必要です。

対策バージョンに関するニュース(Block Unlockしない事による対策)
https://armadillo.atmark-techno.com/news/20180402/software-update-a800

at_ohsawa

2020年7月14日 12時57分

すみません、後半間違いなので訂正します。

---------ここから-----------
「本仕様変更は、NORフラッシュメモリの変更後(2017年発行の変更通知によるもの)の製品には影響しません。」

これは、先述の新フラッシュメモリの場合はHWの特性により特段「CRCエラー対策」する
必要は無いため、影響無いという事です。

旧フラッシュメモリ搭載品で動作が変化するソフトウェアの実装となっています。

-----
> 「以下の資源を適用した「Armadillo-840」であっても、CRCエラー対策が可能となる。」
> と理解してもよいでしょうか?
> linux-3.4-at20.tar.gz

このカーネルのバージョンは新フラッシュメモリ搭載品対応ではありません。
カーネルコンフィグを変更してビルドするか
https://armadillo.atmark-techno.com/howto/2017_new-norflash

あるいは、at22をご利用ください
https://armadillo.atmark-techno.com/news/20170627/software-update-a800

CRCエラー対策については、先述のとおり新フラッシュメモリ版の
ハードウェアであれば対策済みとなります。

akio_tsuchiya

2020年7月14日 16時02分

マルタカテクノ 技術部 土屋です。
早速のご回答、誠に感謝いたします。

理解が乏しく、大変恐縮なのですが、次の2点について確認させてください。

<適用資源>
・ブートローダ :hermit-at-3.8.1-source.tar.gz
・Linuxカーネル :linux-3.4-at20.tar.gz
・AtmarkDist :atmark-dist-20160927.tar.gz

<Armadillo-840用参照URL>
 https://armadillo.atmark-techno.com/howto/2017_new-norflash

<質問1>
 ・弊社では、上記に示す<適用資源>を弊社用に一部修正して弊社製品に組み込んでいます。
  この場合、「Linuxカーネル :linux-3.4-at20.tar.gz」のままでも、<Armadillo-840用参照URL>に
  示す通り、「カーネルコンフィグを変更」して「ソースからビルド」し直せば、
  「CRC対策が実施される」と考えてよいでしょうか?

<質問2>
・上記の<Armadillo-840用参照URL>には、以下の注意書きが文末に記載されています。
 「ブートローダ―(hermit)は、新フラッシュメモリ対応版を適用してください。」

 弊社で利用している「ブートローダ :hermit-at-3.8.1-source.tar.gz」は、
 「新フラッシュメモリ対応版」と考えてよいでしょうか?

誤解との程、何卒、宜しくお願い申し上げます。

> すみません、後半間違いなので訂正します。
>
> ---------ここから-----------
> 「本仕様変更は、NORフラッシュメモリの変更後(2017年発行の変更通知によるもの)の製品には影響しません。」
>
> これは、先述の新フラッシュメモリの場合はHWの特性により特段「CRCエラー対策」する
> 必要は無いため、影響無いという事です。
>
> 旧フラッシュメモリ搭載品で動作が変化するソフトウェアの実装となっています。
>
> -----
> > 「以下の資源を適用した「Armadillo-840」であっても、CRCエラー対策が可能となる。」
> > と理解してもよいでしょうか?
> > linux-3.4-at20.tar.gz
>
> このカーネルのバージョンは新フラッシュメモリ搭載品対応ではありません。
> カーネルコンフィグを変更してビルドするか
> https://armadillo.atmark-techno.com/howto/2017_new-norflash
>
> あるいは、at22をご利用ください
> https://armadillo.atmark-techno.com/news/20170627/software-update-a800
>
> CRCエラー対策については、先述のとおり新フラッシュメモリ版の
> ハードウェアであれば対策済みとなります。

at_ohsawa

2020年7月14日 16時25分

> <質問1>
>  ・弊社では、上記に示す<適用資源>を弊社用に一部修正して弊社製品に組み込んでいます。
>   この場合、「Linuxカーネル :linux-3.4-at20.tar.gz」のままでも、<Armadillo-840用参照URL>に
>   示す通り、「カーネルコンフィグを変更」して「ソースからビルド」し直せば、
>   「CRC対策が実施される」と考えてよいでしょうか?

ハードウェアとして新フラッシュメモリを使っているのであれば、その通りです。

>  弊社で利用している「ブートローダ :hermit-at-3.8.1-source.tar.gz」は、
>  「新フラッシュメモリ対応版」と考えてよいでしょうか?
いいえ、先程書き漏らしました。ブートローダーの対応は3.9.0からです。

また、その後に書き込み速度を高速化する修正が3.11.0で追加されているので、
3.11.0を使うことをお勧めします。どうか宜しくお願いいたします。

akio_tsuchiya

2020年7月14日 17時18分

ご回答、心より感謝いたします。
少し、CRC対策の兆しが見えてまいりました。

①hermitの修正は極わずかではありますが、修正を行っています。
  オリジナルと比較して、内容変更されているソースは、僅か1本です。
  しかし、フォルダが9つ追加され、合計210本のソースファイルが格納されています。

  先ずは、こちらの内容を解析し、改めて、後日、ご質問させていただきます。

②今回の開発では、LinuxやAtmarkDist内のソースファイルを書き換えています。
  これらについても、弊社で内容を解析し、ご相談させていただきます。

③気になるのはQTの置換えです。
  QTは、適用されているQT5.4ファイルを全て消して、QT5.4.2のモジュールを
  上書きしてバージョンを入れ替えているのですが、この場合、CRC対策が
  無効化してしまう事は無いでしょうか?
  (当時は、同じQT5系を置き換える為には、この方法しかなかったと伺っています。)
  もし、注意点やアドバイスがあれば幸いです。

今後とも、何卒、宜しくお願い申し上げます。
> > <質問1>
> >  ・弊社では、上記に示す<適用資源>を弊社用に一部修正して弊社製品に組み込んでいます。
> >   この場合、「Linuxカーネル :linux-3.4-at20.tar.gz」のままでも、<Armadillo-840用参照URL>に
> >   示す通り、「カーネルコンフィグを変更」して「ソースからビルド」し直せば、
> >   「CRC対策が実施される」と考えてよいでしょうか?
>
> ハードウェアとして新フラッシュメモリを使っているのであれば、その通りです。
>
>
> >  弊社で利用している「ブートローダ :hermit-at-3.8.1-source.tar.gz」は、
> >  「新フラッシュメモリ対応版」と考えてよいでしょうか?
> いいえ、先程書き漏らしました。ブートローダーの対応は3.9.0からです。
>
> また、その後に書き込み速度を高速化する修正が3.11.0で追加されているので、
> 3.11.0を使うことをお勧めします。どうか宜しくお願いいたします。

at_ohsawa

2020年7月14日 17時44分

> ③気になるのはQTの置換えです。
>   QTは、適用されているQT5.4ファイルを全て消して、QT5.4.2のモジュールを
>   上書きしてバージョンを入れ替えているのですが、この場合、CRC対策が
>   無効化してしまう事は無いでしょうか?

問題無いと思います。

と言うより、AtmarkDistに追加されているCRCエラー対策の変更は
「旧フラッシュメモリ搭載型番」に対するもので、
元よりHWの特性上対策済みとなっている新フラッシュメモリには
何の影響も与えません。

従って、「新フラッシュメモリ搭載型番のみを利用」する限りは、以前
から利用されている「上書きしてバージョンを入れ替えている」ものを
そのままご利用頂けます。

akio_tsuchiya

2020年7月20日 19時40分

弊社よりAtmark様のPertnerとなっている会社に開発を委託し、Armadillo-840のユーザープログラム開発を
 委託したところ、SGXエラー及びCRCエラーが発生いたしました。

 これらの対策を行うべく、委託先にもご協力を戴き、対策案を検討しているのですが、以下の理由により、
 OSのバージョンアップに支障を来たしています。

  ① 御社のオリジナル資源(AtmarkDist、Hermit、Linux)のソースが書き換えられている。
  ② 御社のオリジナル資源(AtmarkDist、Hermit、Linux)に対し、複数のファイルが追加適用されている。

「この内容から、OSが書き換えられていると、判断できる内容でしょうか?」
あくまで推測ですが、LCD周りのバッファ、解像度、同期周波数等に手が加えられているものと
思われますが、この判断は、正しいでしょうか?

  また、前任の方が、現在、他の都道府県に長期出張中で、過去の開発内容を確認させていただく事が出来ない為、
  御社のオリジナルソースに対し、明らかな修正が加えられている、次に示す17本のファイル修正内容をアドバイス
  いただけないでしょうか?

個別にご回答いただく事が難しい場合は、テレビ会議形式でのディスカッションは可能でしょうか?

何卒、宜しくお願い申し上げます。

> > ③気になるのはQTの置換えです。
> >   QTは、適用されているQT5.4ファイルを全て消して、QT5.4.2のモジュールを
> >   上書きしてバージョンを入れ替えているのですが、この場合、CRC対策が
> >   無効化してしまう事は無いでしょうか?
>
> 問題無いと思います。
>
> と言うより、AtmarkDistに追加されているCRCエラー対策の変更は
> 「旧フラッシュメモリ搭載型番」に対するもので、
> 元よりHWの特性上対策済みとなっている新フラッシュメモリには
> 何の影響も与えません。
>
> 従って、「新フラッシュメモリ搭載型番のみを利用」する限りは、以前
> から利用されている「上書きしてバージョンを入れ替えている」ものを
> そのままご利用頂けます。

ファイル ファイルの説明
OSのソース修正に対するアドバイスのお願い.pdf 本文に示す内容の、修正部分の抜粋です。

at_ohsawa

2020年7月21日 13時44分

> 「この内容から、OSが書き換えられていると、判断できる内容でしょうか?」
> あくまで推測ですが、LCD周りのバッファ、解像度、同期周波数等に手が加えられているものと
> 思われますが、この判断は、正しいでしょうか?

見た所そのように見えます。他にはeurasia_km(SGXグラフィックコアのデバイスドライバ)に
変更を加えているようです。これはSGX停止問題へのワークアラウンドだと思いますが、
いくつか当社でコメントしたものを元に独自に実装されているようですが、かなりアレンジ
されているので詳細は実装された方に確認していただいた方がいいです。

CRCエラー対策のための新フラッシュメモリ対応ですが、
結局これらのkernelの変更は先の新フラッシュメモリとは無関係な修正なので、先の新フラッシュメモリ対応の
コンフィグを有効にしてビルドしても、これらの変更と影響しあうものは無いと思います。

ユーザーランドのついても同様にフラッシュメモリの件とは無関係なので、そのまま使っても
問題ありません。

hermitの変更1箇所についてはLCDCのクロック周波数を変更していますが、こちらではLCDパネルの
仕様はわかりませんが恐らく標準のクロック設定では分周できない周波数のLCDパネルをお使いなの
だと思います。これはSGXの問題とは恐らく無関係なので、単にHWの仕様都合で必要なのでしょう。
従って新フラッシュメモリ対応のhermit v3.11.0を利用する際に、この1行の変更だけ加えてビルド
し直すと良いと思います。

>   また、前任の方が、現在、他の都道府県に長期出張中で、過去の開発内容を確認させていただく事が出来ない為、
>   御社のオリジナルソースに対し、明らかな修正が加えられている、次に示す17本のファイル修正内容をアドバイス
>   いただけないでしょうか?

お客様が変更された箇所について当社で見解を述べる事はできませんが、SGXまわりの対処を散発的に
実施しているように見えます。実装された方への確認をしていただきたく思います。

akio_tsuchiya

2020年7月21日 18時54分

マルタカテクノ 土屋です
私の乱筆/乱文への心を込めたご返信、本当に感謝いたします。

1.SGXエラー対策の件
  変更点を全て抜き出して、徹底調査いたします。
  ⇒当時Qt5.4.1を使っている為、Qt5.9以降の技術的な変更内容を使えなかった物と推測します。
   その為、LCDの標準出力1つに、HDMIとUSBコンソールの標準出力のGRAM領域を割り付け、
   直接、イメージファイルを書き込んで、重ね合わせ表示を実現しているように思えます。
   (本来はOut-of-Treeの拡張を推奨されていますが、実際は、かなり幹をかじっている認識です。)

   先ずは、該当箇所を特定し、改めて、ご相談を行います。
   次に、Qt5.9以降では、大きな技術改革があり、このような分割を行わずとも実現できるように
   なったのではないかと思われます。
   (Qt5.9の発表時期から推測し、まだ、利用できなかった物と思われます。)
   この部分について、こちらでもう少し深堀した後、改めてアドバイスをいただければ幸いです。

2.Armadillo-840でサポートしているQtバージョンについて
   Armadillo-840では、Qtのどのバージョンまで導入可能なのでしょうか?
   Qtの売り文句としては、バイナリ互換がありますが、御社としてサポートいただけるバージョンを
   ご教示いただければ幸いです。
   (恐らく、Linuxのバージョン毎に異なる物と思われますので、at20と最新版でご教示いただければ幸いです。)

   もし導入するQtのバージョンを変える事で、標準的な開発に戻すことができれば、SGX対策も行いやすくなると
   思われるのですが、現時点では、上記の様に無理やり3レイヤを作り出し、
   その中の1つでは、H.264形式の動画ファイルを再生しています。
   SGXの発生頻度から、当時は場当たり的な対策もあるものと思われます。
   この部分はしっかりと調査し確認したいと思います。

3.Hermitの改造
  短期戦では、こちらがカギとなります。
  しかし、今回の解析で2つの大きな対策すべき項目が見えてまいりました。
  (1) CRCエラー対策 
      ・こちらは、Hermitのみを修正しハード刷新に頼ってCRCエラーを行う。
       ⇒しかし、この方法ではSGXエラーの根本原因は解消されない可能性がある。
  (2) SGXエラー対策
      ・既存ソースの深堀調査と、Qtのバージョンを考慮した、Out-of-Tree化への模索が必要。
       ⇒先ずは、幹をかじらない開発に軌道修正を試みます。

ご回答、心より感謝いたします。

> > 「この内容から、OSが書き換えられていると、判断できる内容でしょうか?」
> > あくまで推測ですが、LCD周りのバッファ、解像度、同期周波数等に手が加えられているものと
> > 思われますが、この判断は、正しいでしょうか?
>
> 見た所そのように見えます。他にはeurasia_km(SGXグラフィックコアのデバイスドライバ)に
> 変更を加えているようです。これはSGX停止問題へのワークアラウンドだと思いますが、
> いくつか当社でコメントしたものを元に独自に実装されているようですが、かなりアレンジ
> されているので詳細は実装された方に確認していただいた方がいいです。
>
> CRCエラー対策のための新フラッシュメモリ対応ですが、
> 結局これらのkernelの変更は先の新フラッシュメモリとは無関係な修正なので、先の新フラッシュメモリ対応の
> コンフィグを有効にしてビルドしても、これらの変更と影響しあうものは無いと思います。
>
> ユーザーランドのついても同様にフラッシュメモリの件とは無関係なので、そのまま使っても
> 問題ありません。
>
> hermitの変更1箇所についてはLCDCのクロック周波数を変更していますが、こちらではLCDパネルの
> 仕様はわかりませんが恐らく標準のクロック設定では分周できない周波数のLCDパネルをお使いなの
> だと思います。これはSGXの問題とは恐らく無関係なので、単にHWの仕様都合で必要なのでしょう。
> 従って新フラッシュメモリ対応のhermit v3.11.0を利用する際に、この1行の変更だけ加えてビルド
> し直すと良いと思います。
>
> >   また、前任の方が、現在、他の都道府県に長期出張中で、過去の開発内容を確認させていただく事が出来ない為、
> >   御社のオリジナルソースに対し、明らかな修正が加えられている、次に示す17本のファイル修正内容をアドバイス
> >   いただけないでしょうか?
>
> お客様が変更された箇所について当社で見解を述べる事はできませんが、SGXまわりの対処を散発的に
> 実施しているように見えます。実装された方への確認をしていただきたく思います。
>