2012年7月21日土曜日

組み込みシステム OS無しの開発 その1 void main()

組み込みシステムの場合、組み込みOSを使うケースがかなり多くなってきています。

それでも一部には OSを使わずに全てを、自前のプログラムで管理する開発もあります。


どういったものか理解してもらうために、まずは簡単な例を挙げてみます。


#include <stdio.h>


void main() {

 printf("hello world\n");

}


典型的な、Cの入門のソースです


Windowsのcmd.exe、Linux のターミナルから実行することが多いと思います。


printf は標準出力へ 出力するという命令です


そして、それはstdio.hで定義されている 標準ライブラリの中で実装されています。


OSを一切使わない開発の場合はこれすらも使えない事になります。


mem.h
math.h
strings.h

等も同様です、

ただし実際上は、各CPUメーカー等から組み込み用のライブラリが提供されているので
必要なものだけリンクするという形で使うことが出来ます

今ではあまりありませんが、ROMやRAMの制約でなるべく小さなサイズにしたい場合等はメーカーから提供されているライブラリを使わないという選択肢もありました。


コンパイル時にアセンブラソース出力付きでデバッグ情報付きでどのように処理されているか見ると組み込みシステムの理解に繋がります


是非一度お試しあれ


そしてICEでアセンブラレベルでステップ実行できるようでしたら、何をやっているかの理解がかなり進むと思います。


各種レジスタの設定、プログラムカウンタの設定、割り込みベクターの設定、スタックポインタの設定、割り込みマスクの設定、等システムの状態を設定した上で


最終的には アセンブラレベルで

goto _main

という形で処理が行われます

他にもいろいろあるのですが今回はこのあたりでおしまい。

0 件のコメント:

コメントを投稿