お客様は LPC54018J2M で問題を経験しています。
状況は次のように説明されます。
お客様が I2C 経由で Ether Back Up CODE ブロックに新しいバージョンをプログラムしてファームウェアを更新した後、再起動時に、BOOT CODE はまず Ether Back Up CODE に新しいファームウェアがあるかどうかを確認します。存在する場合、Ether CODE を上書きしてから実行します。
フラッシュメモリの配置
|-------------------------------------| 0x10000000 - 0x1000FFFF
| ブートコード(64k) 10000|
|-------------------------------------| 0x10010000 - 0x100fffff
| イーサコード(960k) f0000|
|-------------------------------------| 0x10100000 - 0x101effff
| イーサバックアップコード(960k) f0000|
|-------------------------------------| 0x101f0000 - 0x10200000
|予約済み(64k) 10000|
|-------------------------------------|
少数のユニットでは、ファームウェアのアップデートが完了すると、一定期間ソフトウェアは正常に動作します。しかし、しばらくすると、コードが突然動かなくなってしまいました。このような場合、再プログラムや消去を試みてもシステムを回復することはできず、IC を交換する必要があります。
異常のある IC については、JTAG を使用してさらにテストを実行しました。最初は、サンプル コードをプログラムしても正常に実行されず、フラッシュ直後に IC が停止してしまいます。
お客様ソフトウェアの場合、ブート コードはフラッシュ メモリをチェックし、SPIFI 初期化中に停止します。
ただし、SDK_2.x_LPC54018J2M (バージョン 24.12) のサンプル コードを JTAG 経由でプログラムすると、IC は正常に動作し、その後のプログラミングも期待どおりに動作します。
異常な IC の場合、お客様コードを直接再プログラムしても正常な動作は回復しません。異常状態から回復するためには、まずサンプルコードをプログラムする必要があります。
お客様コードは現在、SDK 2.11 に基づいて開発されています。
正常な動作を復元するサンプルコードは SDK 24.12 からのものです。
可能であれば新しいバージョンにアップデートすることをお客様に提案しましたが、これには時間がかかる可能性があります。
したがって、ここでは、この問題の原因が SDK のバージョンに関連しているのか、メモリ構成を調整する必要があるのかについて説明します。
現在、JTAG 経由でデバイスを回復することは可能ですが、この問題の発生を完全に防ぐ方法を見つけたいと考えています。
こんにちは@ZRay
ご投稿ありがとうございます!
これはLPC54XXデバイスのエラッタに関連している可能性があり、エラッタシートLPC540xx_LPC54S0xxの機能的問題の説明3.8 ROM.1に記載されています。ブート失敗時にペリフェラルピンが構成または駆動されたままになります。
また、 MCUXpresso SDK リリース ノートを確認することをお勧めします。また、常に利用可能な最新バージョンの SDK を使用することをお勧めします。
あなたが言及したサンプル コードではピン構成が実行されましたか?