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

 

全ての製品名は、それぞれの所有者の商標または登録商標です。

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。