クリティカルな問題
この問題は、フラッシュでの実行を目的としたコードに影響します。
を使用 alt_load()
して RAM に書き込み可能なセクションをコピーします。
ELF セクション (例) .bss
をコピーする場合
flash to RAM 使用 alt_load()
、ソフトウェア・ビルド・ツール
セクションが RAM に収まるが、RAM に収まることを確認します。
にプログラムされるフラッシュメモリーを含みます。ツールは、
コードサイズのエラーが表示されていないプログラミング・ファイル。
この問題は、ターゲットのメモリーに影響を与える可能性が高くなります。
は比較的小さいMAX 10 オンチップ・フラッシュです。このことが
使用している場合にのみ影響を与 alt_load()
える .
コードが適合するかどうかは、以下を参照して手動で判断できます。 次に作成される .00000.000000.00000.0000.0000.0 アプリケーションをビルドします。このファイルには次の情報が含まれています。 各セクションがフラッシュに収まるかどうかを確認できます。 次の例で示されているように、メモリー。
.77.00000.00000.0000.0000.0000.000
アプリケーションのトップレベル・ディレクトリー。次から生成できます。
アプリケーションに入力してコマンドライン make app
を表示します。
ディレクトリ。
.700.000.000000.00000.0000.0000.00.0 以下のようなセクションを参照してください。
Sections: | ||||||
Idx | Name | Size | VMA | LMA | File off | Algn |
0 | .entry | 00000020 | 00028000 | 00028000 | 00001000 | 2**5 |
| | CONTENTS, ALLOC, LOAD, READONLY, CODE | ||||
1 | .exceptions | 00000220 | 00028020 | 00028020 | 00001020 | 2**2 |
| | CONTENTS, ALLOC, LOAD, READONLY, CODE | ||||
2 | .text | 00006504 | 00028240 | 00028240 | 00001240 | 2**2 |
| | CONTENTS, ALLOC, LOAD, READONLY, CODE | ||||
3 | .rodata | 0000005c | 00040000 | 0002e744 | 00008000 | 2**2 |
| | CONTENTS, ALLOC, LOAD, READONLY, DATA | ||||
4 | .rwdata | 00001b78 | 0004005c | 0002e7a0 | 0000805c | 2**2 |
| | CONTENTS, ALLOC, LOAD, DATA, SMALL_DATA | ||||
5 | .bss | 00000154 | 00041bd4 | 00030318 | 00009bd4 | 2**2 |
| | ALLOC, SMALL_DATA |
各セクションには、サイズ、VMA、LMA の値があります。VMA は次の製品です。 ランタイムアドレス、および LMA はロードアドレスです。セクションが未設定の場合 コピー、VMA = LMA。セクションがコピーされた場合、LMA からコピーされます。 を VMA に送信します。
この場合、以下を使用 alt_load()
.entry
し、 .text
コピーされません (VMA = LMA)。 .rodata
, .rwdata
,
フラッシュ .bss
アドレス (LMA) から RAM にコピーされます。
アドレス (VMA)。
この例のフラッシュには、0x30000する0x28000の範囲があります。
.rwdata
セクションがフラッシュ起動するようにプログラムされています。
VMA = 0x2e7a0で、VMA サイズ = 0x2e7a0 0x1b78 = まで拡張
0x30518. フラッシュに収まらない。