2016-05-19 14 views
0

私はAurix TC234を使用する組み込みデバイスで作業しています。 起動時に特定のROMアドレス範囲で何らかのチェックを行う必要があるMy(AUTOSAR)ソフトウェア。埋め込み:未書き込みのROMアドレスの内容へのアクセス

私のソフトウェアの16進ファイルのフラッシュ中に、チェックする必要があるデータは書き込まれません。 これは、ソフトウェアがそのデバイスでフラッシュされる前にアドレス範囲を書き込む必要があることを意味します。

私の最悪のシナリオ: 誰かがそのアドレス範囲をフラッシュするのを忘れています。私のソフトウェアはフラッシュされ、起動時にメモリにアクセスします。 この場合、トラップが発生します。

私の質問: 書かれているかどうかその特定のROMアドレス範囲を確認する安全な方法はありますか? この種のトラップを扱うことは可能ですか?

+0

デフォルトのフラッシュコンテンツで必要なアドレス範囲をカバーするセクションを追加しない理由はありますか?後で追加データを書き込むことができますか? – Blueman

+0

@Blueman点滅の順序は固定されています。最初のデータは、ソフトウェアよりもフラッシュされなければならない。私のソフトウェアのデフォルトのフラッシュコンテンツは、正しくフラッシュされた追加データを上書きします。私はECC修正に精通していません。 ECCに影響を与えることは可能ですか? ROM内の特定のアドレス範囲で無効にすることはできますか? – Ferhat

+0

私はこのバージョンのmicroに精通しておらず、トラップで直接作業していませんでしたが、TC27XとTC29XはECCトラップを正しく終了させる可能性があり、 。インフィニオンで公開された各ドキュメントの機密性を高めることは難しく、私はオフィスでのみアクセスできます。 – Blueman

答えて

2

、ROM用のECCエラーとTC29Xフローは以下のように扱うことができるため:ISRで

  • SMUアラームを
  • を有効キャッチECCエラーSMU
  • から
  • ない初期化RAMに格納フラグ次回の起動チェックフラグ値の領域
  • SWリセット(ECC用トラップからの出口)と呼ばれてはならない

このヘルプと同様のソリューションがマイクロソフトで利用可能になることを願っています。

+0

私はそれを試してみましょう。ありがとう! – Ferhat

0

私はTC234に精通していませんが、埋め込みデバイス上の未書き込みのフラッシュにアクセスするとトラップが発生することに驚いています。書かれたフラッシュと書かれていないフラッシュとの唯一の違いは、後者が全てのフラッシュを書き込むべきであることである(フラッシュが消去されたと仮定して)。すべてのバイトが0xFFであることをデータブロックで簡単にチェックできるはずです。

フラッシュが最初に消去されていない可能性がある場合は、データブロックにチェックフィールドを追加できます。おそらく残りのブロックのCRC値が含まれています。起動時に、ブロックの内容をCRCフィールドと照合して確認します。

編集:もしあなたが本当にトラップを取得しているのであれば、これはブロック内のデータを最初に検証せずに無効なインデックスを使っているコードや不正なポインタ。 回答が収縮しました。コメントを参照してください。いくつかチェックした後

+0

私のソフトウェアはAUTOSARをベースにしています。誰がこのトラップを引き起こすのか再度確認する必要があります。 AUTOSARに関する経験はありますか?私は固定メモリアドレスを使ってメモリにアクセスしていますが、これは間違いありません。 – Ferhat

+0

このAurixファミリにはRAMとROMの領域全体がECC保護されているため、初期化されていない領域(この文脈でフラッシュされていない)へのアクセスは@Ferhatが記述したようにトラップを引き起こします – Blueman

+0

その場合は修正して返します。私はそれを打つだろうが、これらのコメントが失われないようにそれを残す。 – DoxyLover

関連する問題