組み込みシステムで作業する場合、2 つのケースがあります。組み込みシステムには、12 K フラッシュを搭載した ARM Cortex M0 マイクロコントローラーなどの限られたリソースがあります。
ケース 1 : ブートローダーとファームウェアで共通の機能/モジュールの使用法: ブートローダーとファームウェアは、コードの重複を防ぐために同じモジュールと機能を使用する必要がある場合があります。そうしないと、同じコードがファームウェアとブートローダーの両方に 2 回含まれます。これを防ぐには、関数アドレスを指定し、アドレスで関数を呼び出すことでこの関数を呼び出します。これが解決策の 1 つです。
一般的な機能の使用法を提供するスマートな方法はありますか?
ケース 2 : ファームウェアをアップグレードする必要がある場合があります。ブートローダーの役割の 1 つは、ファームウェアのアップグレードです。古いものを上書きすることで、ファームウェアを簡単にアップグレードできます。
これまで見てきたように、2 つのケースは別々に実装できます。しかし、それらをマージすると、いくつかの問題が発生します。
質問 : ブートローダーは一般に静的オブジェクトですが、ファームウェアは変更できます。したがって、一般的な機能は通常、ブートローダーに配置されます。しかし、共通のモジュール/関数を更新する必要がある場合、どうすればよいでしょうか?
ブートローダー、ファームウェア構造化組み込みシステムの一般的またはスマートなアプローチは何ですか? さらに、限られたリソースのために。
共通のモジュール/機能を分離するには、1 つまたは複数の追加領域でこの問題を解決できますか。ファームウェア、ブートローダ、ライブラリ(新しい領域)?
一般論を学びたい。高度なファームウェア管理に関する論文、書籍、ソースはありますか?
ありがとう