先日 Atmel 社のワンチップマイコン Atmega168 で Tumblr 新着件数表示ボードを作りソースを公開しましたが、このために統合開発環境 WinAVR で私が書いたコードは PC で作成するプログラムと同様に main 以降の関数と割込関数だけでした。

通常の PC や UNIX サーバでユーザプログラムをリンクすると通常は書いたプログラムにスタートアッププログラムがリンクされて実行バイナリができあがりますが、WinAVR で使っている AVR-gcc コンパイラでは自分が書いていないプログラムがどういうふうに組まれてマイコン上で動くバイナリが作成されているのかを調べてみました。

調査対象はビルドしたときに作られるリストファイルです。リストファイルとは拡張子が *.lss のファイルで、中身はテキスト型式で、ビルドされたプログラムについて C 言語との対応がわかるように、対応するアセンブリと機械語が書かれたファイルです。

次に調べたいことですが、こちらは今回私がコードを書かなかった部分の処理がどうなっているかです。つまり、

  • 割り込みベクタテーブル
  • 電源リセットがかかり、プログラムカウンタがリセットベクタに移ってから main 関数が呼ばれるまでの処理
  • main が終わった後の処理(実際には main 内で無限ループなので main は終わりませんが)
  • 割り込みが発生し、処理が割り込みベクタに移ってから私が書いた割り込み処理関数が呼ばれるまで
  • プログラムのメモリ上の配置

です。

ということで明日以降、上記の項目それぞれがどうなっているのか説明していきたいと思います。PC で言えば「電源ON → BIOS 起動 → OS 起動」に当たる部分でしょうか。今回の Tumblr 新着件数プログラムは OS は使っていないですし、ペリフェラルの初期化も main の中で行っているので完全に同じ対応ではないですが。

よろしければどうぞお付き合いください。

トラックバック(1)

このブログ記事を参照しているブログ一覧: AVR 向けバイナリをアセンブラレベルで見てみる(1)

このブログ記事に対するトラックバックURL: http://tsuyuguchi.com/mt/mt-tb.cgi/437

昨日から始まった マイコン向けバイナリの動作を見ていこうというシリーズ第 2 回... 続きを読む

最近の画像

Zero History - ギブスンの新作が 9 月に発売 -
虐殺器官
ドミニオンのランダマイザアプリ、dominion minion が日本語対応!
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオン - 長大な叙事詩 SF のスタート -
ハイペリオン - 長大な叙事詩 SF のスタート -
「都市と星」 - 10億年と言われてもよく分からない -
「星を継ぐもの」 - 良い Sci-Fi -
トールサイズのニューロマンサーを買った
虎よ、虎よ! - 主人公フォイルの執念の物語 -

私の本棚

 

自転車走行距離

自転車走行距離

Flickr Photos

FlickrPhotos

なかのひと

Y!ログール

このサイトについて

2015年2月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

アーカイブ

My Update

  • Loading...

その他

あわせて読みたいブログパーツ