ROM コンテンツのサイズを変数に保存する
テクニカル・ノート 52791
アーキテクチャ:
ARM
コンポーネント:
linker
更新日:
2018/09/04 7:44
はじめに
私のブートローダは、起動時にアプリケーションソフトウェアのCRCを計算します。このブートローダは、アプリケーションの開始アドレスを知っていますが、アプリケーションのサイズも知る必要があります(CRCアルゴリズムで使用するため)。
私は、テクニカルノート62709を参照して、checksum-startマーカとchecksum-endマーカを用いた「代替ソリューション」(IELFTOOLのチェックサム - チェックサムの配置)を使用しました。
フラッシュのROM_length_usedという名前のセクションに、ROMコンテンツのサイズを格納したいと考えています。
define block ROM_CONTENT with fixed order
{
readonly section checksum,
readonly section ROM_length_used,
readonly section checksum_start_mark,
readonly,
readonly section checksum_end_mark
};
place in ROM_region { block ROM_CONTENT };
Cによる解決方法
#pragma section = "ROM_CONTENT"
const size_t ROM_CONTENT_size @ "ROM_length_used" = __section_size("ROM_CONTENT");
アセンブラによる解決方法
SECTION ROM_length_used:CODE:NOROOT(2)
EXTERN ROM_CONTENT$$Length
DATA
DC32 ROM_CONTENT$$Length ; Number of RO bytes
END
例
サンプルプロジェクトは次のリンクから入手できます: Example project (TN 52791).zip
全ての製品名は、それぞれの所有者の商標または登録商標です。