2016-09-20 4 views
2

私は初心者として組み込みシステムに取り組んでおり、start.sまたはcstartのようなファイルがmain()関数の前に実行されています。これらのファイルまたは同様のファイルの目的は何ですか?システムにどのような情報を伝えていますか?システムがmain()を実行する前にどうなりますか?

+3

あなたはこれらのファイルを読んでいますか?内容のWhtあなたは具体的に理解していないのですか?あなたのアーキテクチャのデータシートを読んだことがありますか?ツールチェーンのドキュメントですか?デバッガを使用してコードをステップ実行しましたか?はい、あなたはほとんど学ぶことを避けることができます。 – Olaf

+1

[これは興味深いかもしれません](http://electronics.stackexchange.com/questions/237740/what-resides-in-the-different-memory-types-of-a-microcontroller)。 – Lundin

答えて

2

アーキテクチャによって異なりますが、通常、初期化されていないグローバル変数はすべてゼロに設定され、スタックポインタが設定されます。

8

main()前の起動コードは、スタックポインタを初期化し、初期化された変数値(.data)を不揮発性メモリからRAMにコピーし、初期化されていない変数をすべて設定します。 bss)を0にする。

アーキテクチャによっては、さらに何かを行う必要があるかもしれません。システムの起動を続けるためにmain()に行く前に、クロッキングやその他の重要な周辺機器を初期化したり、割り込みベクタを設定したり、プロセッサコンテキストを設定したりする必要があるかもしれません。

+2

...このコードは通常、 'argc'と' argv'も設定します。 –

+0

@LeeDanielCrocker argc組み込みシステムでのargv?どんな奇妙なシステムですか? – Lundin

関連する問題