組み込み開発:技術語り

組み込みとC言語

C言語による組み込み開発のカギは「main関数の前」にあり

  • C言語
  • 組み込み
  • 開発

C言語を学んだ方がこれから組み込み開発に足を踏み入れるとき、何をすればいいのでしょうか?そのカギは「main関数の前」に隠れています。

C言語の入門書を読むと、プログラムは「main関数から始まります」と書かれているのを目にします。確かに、WindowsやLinux環境ではmain関数を元に様々な機能をコーディングし、一つのアプリケーションを作成します。出来上がったアプリケーションを起動すればmain関数が最初に実行されます。そのアプリケーションを起動しているのは、あなた自身であったり、WindowsやLinuxのタスクで管理されたものであったりします。

では、組み込み機器はmain関数をどのように実行しているのでしょうか。組み込み機器の場合、電源が入るとスタートアップという処理が実行されます。スタートアップでは、main関数を呼び出す準備を色々と行なって、その準備が整ったところでmain関数が実行されます。

スタートアップで行われる処理

MPU/CPU/FPGAなど、デバイスにより様々なスタートアップの処理があります。スタートアップについて、ここではザックリとした概念的なものを理解して頂ければと思います。実際にあなたが組み込み開発を行う場合には、お使いになるデバイスのユーザーマニュアルとしっかりにらめっこして、そのデバイスを熟知する必要があります。

組み込み機器の電源を入れると、メモリの中の決まったアドレスの内容が読み込まれます。読み込まれる内容は、スタートアップが置かれているジャンプ先アドレスや、スタートアップが2段階になっている1段目の簡単なプログラムなど様々です。

スタートアップでは、大きく分けて以下の処理がおこなわれます。

○メモリ設定
○デバイス/ペリフェラル設定

まず、メモリ設定ではプログラムが動作するのに必須となるスタックの設定を行います。あなたが作成したmain関数から始まるC言語プログラムのコード、定数、グローバル変数、標準ライブラリなど、それぞれ所定のメモリ上に展開されます。
次に、デバイス/ペリフェラル設定では割り込みの設定や使用するペリフェラルの設定、デバイスによっては省電力やセキュリティの設定などなど、先ほど述べた通りデバイスを熟知していないと頭を悩ます項目ばかりです。

このスタートアップの最後は、あたなが作成したmain関数へジャンプするという仕組みになっています。

組み込み開発ではこのスタートアップで行われている処理が非常に大事で、なにかトラブルが発生した場合にもスタートアップの内容を知っているか・いないかで大きくトラブル解決に掛かる時間も変わってくることが多々あります。
なんか難しくてよくわからないなぁ~と逃げ腰にならず、率先して使用するデバイスのスタートアップと仲良くなりましょう。
「スタートアップを征すものは、組み込みを征す」です。

お問い合わせはこちらから

ご質問だけでも結構です!
組み込み製品・システム開発に関してご相談があれば、お気軽にお問い合わせください。

お急ぎの方はこちらから

0120-593-111平日9:00〜17:00