lpc1788に移植された重い GUI ライブラリを持つファームウェアを開発しています。フォントと画像の処理には 32 MB の SDRAM を使用し、デバイス構成データと共にフォントと bmp のバイナリを格納するために NAND フラッシュを使用しています。
Usage Fault、MemManage フォルト、および Bus Fault を無効にしました。そのため、GUI 機能で何か問題が発生すると、実行がハード フォールトになることがあります。今、私がGUIに使用したライブラリはemWinですまた、ハード フォールトの原因となった機能を知る手段がありません。NAND フラッシュが破損していて、ライブラリが表示するもの (背景画像など) をフェッチしようとすると、ハード フォールトが発生します。このような状況に対処できます。(フラグを使用したコード実装によって) NAND フラッシュが破損していて、バイナリを再プログラムする必要があることが確実にわかっているためです。そうしないと、デバイスが起動するたびにアップすると、ハードフォルトになります。
ただし、他のルーチンによってハード フォールトが発生する場合は、フラッシュ全体を再度プログラムし直す必要はありません。そのため、ハード フォールトの原因がわかっている場合は、ハンドラーを再プログラムする必要があるか、単にいくつかのパラメーターを変更して最後の既知の構成を続行する必要があるかを判断して、それに応じてハンドラーを変更できます。
ハード フォールトの原因となった関数を実行時に特定する方法はありますか? 住所さえあれば十分です。これはできますか?