STM32マイコンのリンカスクリプト

いろいろなところで説明されていることを収集しつつ、考えてみる。
STM32F4discovery(STM32F407VGT6)のリンカスクリプトサンプルがベース。
リンカスクリプトとスタートアップアセンブリは一対。
サンプルアセンブリには、.cpu cortex-m3とある。
F4discoveryはcortex-m4なので、スタートアップアセンブリはm3のままで
動作する、ということか。
FLASH : ORIGIN = 0x08000000とある。これはARMのメモリマップの指針。
32ビットマイコンのメモリアドレスMAXを使うための構造。
SECTIONSの先頭をみると .isr_vector :{}>FLASHとある。
FLASHのORIGINは0x08000000なので、つまり、isr_vectorFLASH領域の
先頭0x08000000から配置される。
従って、スタートアップアセンブリファイル(以後、.sと略)のどこに .isr_vectorの記載が
あろうと、それはメモリ上の位置との相関関係はない。
.isr_vectorのコメントにはStartup codeとある。これは割り込みテーブル→リセット
ハンドラすなわち、最初に起動するコードということ。
isr_vectorの次に配置されるのが、.text、つまり命令コード。
ここには定数(read only variable)も含まれる。