スタートアップコードの処理

テクニカル・ノート 181205J

アーキテクチャ:

All

コンポーネント:

compiler

更新日:

2018/12/18 6:22

はじめに

スタートアップ時の処理内容について説明します。

解説

スタートアップ時の処理内容(__iar_program_start ~ main()まで)については、下記のとおりです。

 

Cortex-M0/M3/M4 VectorTable: thumb¥vector_table_M.s or thumb¥cstartup_M.c __iar_program_start //Reset

デフォルトプログラムエントリ:thumb¥cstartup_M.s or thumb¥cstartup_M.c

void __iar_program_start(void)

{

    __iar_init_core();

    __iar_init_vfp();

    __cmain();

}

main()前の初期化:thumb¥cmain.s

void __cmain(void)

{

    __low_level_init();

    __iar_data_init3();

    main();

}

User’s Application: main.c

int main(void) { … }

 

該当のソースコードは、Embedded Workbench for Armインストール先のarm¥arm¥src¥libフォルダ以下に格納されています。

 

製品版ライセンスの場合、Embedded Workbench for Arm 6.50以降(LMS2)では、ライブラリファイルの抽出を行ってください。また、それ以前のバージョンでは製品版インストーラをご使用ください。評価版ライセンスの場合、一部含まれないファイルがあります。

 

  •   main()実行前の初期化処理内容

 主な初期化フェーズは下記の項目となります。

・スタックポインタの設定

・変数をゼロで初期化

・変数の初期化

・main()の呼び出し

 

  •  初期化処理のデバッグ

[プロジェクト]->[オプション]->[デバッガ]->[設定]

内の「指定位置まで実行」のチェックを外すとリセット直後からプログラムが開始します。

初期化処理のソースコードを直接ワークスペース内にドロップすることで初期化コードを確認でき、初期化処理内のデバッグ作業を可能にします。

 

テクニカルーノート作成対象製品:Embedded Workbench for Armバージョン:8.32.1

 

まとめ

main()実行前の初期化処理について説明しました。

 

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

 

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