- - PR -
皆さんの身の回りは、コンピュータを使ったシステムであふれ返っています。
一見するとPCなどを使った“分かりやすいシステム”に目を奪われてしまいますが、普段皆さんが何げなく使用している自動車や携帯電話、情報家電、さらにはロボットに至るまで、実際には“組み込みのコンピュータ・システム”がその大半を占めています。
本連載では、こうした組み込みの世界とその魅力を分かりやすくお伝えすることを目的に、8ビット・マイコンを使った制御プログラミングの基礎について解説していきます。組み込みになじみのない方にも理解していただけるよう配慮していきますので、この機会に組み込みの世界にぜひ足を踏み入れてみてください。
連載第1回となる今回は、制御用マイコン・システムでどんなことができるのか? どのようにプログラムを開発するのか? など、マイコン制御プログラミングの概要についてデモを交えながら説明していきます。なお、本連載ではフリースケール・セミコンダクタの「DEMOQE128ボード」と「CodeWarrior Development Studio for Microcontrollers」を使用します。
マイコン・システムの構成
ご存じのとおり、コンピュータ・システムには、「入力」「出力」「演算」「制御」「記憶」の5大機能があります。これは、8ビット・マイコンを使った制御用組み込みシステム(以下、マイコン・システム)でも同様に当てはまります。
図1にマイコン・システムの構成を示します。
図1 マイコン・システムの構成例 |
――コンピュータ・システムはヒトに似ています。
ベテランエンジニアの方であれば当たり前のように図1に示した構成を理解していることと思いますが、マイコン初体験で不安を感じている方はこのように考えてみてください。
- 入力装置(センサ)=“五感”
- 演算・制御・記憶=“頭脳”
- 出力装置(アクチュエーター、ブザー)=“声”や“体の動き”
いかがでしょうか? このように人間のカラダと対比してみると親しみやすく感じませんか?
――突然ですが、
『お風呂を沸かすとき皆さんはどのような作業を行いますか?』
まず風呂おけに水を張ります。目視して適切な水位になったら水道の蛇口を締めて、風呂釜に火を付けます。しばらくたってお湯に手を入れ適切な水温か調べます。ぬるければもうしばらく待ちますし、熱ければ「あっち〜」と叫びながら水を加えることでしょう。そして、ようやく適温になったら「お風呂に入れるよ〜」と家族に伝えます。昔ながらの方法ですが、おおむねこのような作業を行うことでしょう。
“昔ながら”といいましたが、現在ではお風呂の湯沸かし器にもマイコン・システムが使われています。その作業は至ってシンプルで、風呂を沸かすボタンを押すだけです。設定された水位まで水を張り、設定された温度になるまで追いだきをします。作業が終われば「お風呂が沸きました」と音声で知らせてくれます。このマイコン・システムによるお風呂の湯沸かし器において、水位や温度を検知するのがセンサの役目、水の量や釜の火力を制御するのがマイコンの役目です。この例からも分かるようにセンサは、マイコン・システムによる自動制御に欠かせない装置といえます。
ここで、マイコン・システムに欠かせないセンサについて少し触れておきたいと思います。センサは、「速度」「加速度」「温度」「光」「磁気」「放射線」「赤外線」など私たちの身の回りにあるさまざまなモノの量を主に電気信号に変換します(また最近では、においのセンサも登場しています)。さまざまなモノの量を電気信号に変換が可能ということは、機械や電化製品、コンピュータに組み込んで使用できるということです。また、近年では半導体製造技術を用いた「MEMS(Micro Electro Mechanical Systems)センサ(図2)」が主流になっています。半導体のメリットは小型かつ高い精度の検出が可能なことです。半導体MEMSセンサには、「加速度」「圧力」「角速度(ジャイロ)」センサなどの種類があります。
図2 MEMSセンサ(画像提供:フリースケール・セミコンダクタ・ジャパン) |
圧力センサは、その名のとおり圧力を検出するセンサで、血圧計、高度計、タイヤ空気圧モニタなどに使われます。また、加速度センサはある単位時間当たりの速度の変化を検出し、1980年ころから自動車のエアバッグなどに多く使われてきました。いまでは「3軸(X-Y-Z軸)加速度センサ」が携帯電話、ゲーム機、医療機器、家電、コンピュータなど、多くのアプリケーションに利用されています。ちなみに、本連載でもこの3軸加速度センサからデータを取り込み応用する演習を行う予定です。
DEMOQE128ボードの構成
それでは、本連載で使用するDEMOQE128ボード(以下、デモ・ボード)について見てみましょう。このボードも図1で説明したマイコン・システムの構成になっています(図3)。
図3 DEMOQE128ボード |
このデモ・ボードには8ビット・マイコンとして「MC9S08QE128」が採用されています。この製品は、CPUのほかにROM/RAM、周辺I/F、タイマ、クロック・ジェネレータなどが1つのチップに集約された、「MCU(MicroController Unit)」と呼ばれるタイプのものです。入出力装置としては、センサやスイッチ、LED、RS-232などがあります(表1)。そのほかにもプログラムのデバッガがボード上に搭載されており、デモ・ボードとPCとをUSBケーブルで接続するだけでデバッグが行えます。
表1 デモ・ボードに搭載されている入出力装置 |
プログラム開発環境の概要と準備
PCを核に構成されたシステムのプログラム開発は主に同じPC上で開発されますが、マイコン・システム(組み込み開発)の場合は規模が小さく、リソースが限られているため、PC上でプログラムを開発してから、完成した実行形式のプログラムをマイコン・システムのROMにダウンロードする方法を取ります。
また、マイコン・システムのプログラミングと聞くと「アセンブリ言語」をイメージするかもしれませんが、いまでは「C言語」による開発が主流になっています。ターゲットとなるマイコン・システムは8ビットのマイコンで、通常のPCに搭載されているものとはCPUアーキテクチャが異なります。そのため、マイコン・システム開発で使用するCコンパイラはPC上で動作し、かつマイコン・システム用のプログラムを出力できる「クロス・コンパイラ」である必要があります。また、マイコン・システムはリソースの制限が厳しいため、OSを使わないケースが多くあります。そのため、プログラムのメモリ・マッピングなどは、プログラマ側で行う必要があります。
図4 プログラム・ビルドの流れ |
デバッガには、PC上の仮想ターゲットを使ってデバッグする「シミュレータ」とターゲット・ハードウェアにプログラムをダウンロードし、PC側のツールとデバッグ情報を通信してデバッグを行う「リモート・デバッガ」があります。
シミュレータの多くは、センサ入力やタイマ、割り込みなどのシミュレーションができないため、ターゲット・ハードウェアが用意できていない開発初期段階や、処理アルゴリズムのチューニングなどモジュール単位のデバッグによく用いられます。リモート・デバッガには、ターゲット・マイコンのデバッグ機能を利用するもの、ターゲット・マイコンにモニター・プログラムを搭載し、それと通信するもの、ターゲット・マイコンと同機能のデバッグ用ハードウェア「ICE(In-Circuit Emulator)」を利用するものなどがあります。
本連載で使用するCodeWarrior Development Studio for Microcontrollers(以下、CodeWarrior)は、Cコンパイラやアセンブラ、リンカなどのビルド・ツール、デバッガやシミュレータ、エディタ、プロジェクト管理ツールなどを1つにまとめた統合開発環境(IDE)です。ただし、CodeWarriorと一口にいっても機能によっていろいろな製品があります。今回は32kbytesまでのコード・サイズ制限付きながら、無償で利用可能なSpecial Editionを使います(注)。
下記のURLから「Special Edition: CodeWarrior for Microcontrollers」をダウンロード/インストールしてください。なお、原稿執筆時点ではV.6.2が最新バージョンです。
| ▼「Special Edition: CodeWarrior for Microcontrollers」のダウンロード: | |
| http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=01272600610BF1 | |
| 注:インストール後30日間は機能制限なし(Professional Edition相当)。それ以降は、制限付きのSpecial Editionとして使用し続けることができます。 |
>>次ページでは、動作確認を兼ねて「クイック・スタート・デモ」を実行します!
関連記事 半導体/エレクトロニクス
- 連載:イチから作って丸ごと学ぶ! H8マイコン道
- 特集:組み込みシステムに吹く“仮想化”の風
- 連載:組み込みマルチコア進化論(連載中)
- 連載:必修! FPGAタイミング解析の基礎(全5回)
- 連載:−ザ・組み込み−ソフトウェアのハードウェア化(連載中)
- 連載:S08ではじめるマイコン制御プログラミング(全6回)
- 連載:マイコン制御基礎の次(連載中)
- 連載:マイコン制御基礎の基礎(全10回)
- 連載:マイコン制御基礎以前(全10回)
- 連載:H8で学ぶマイコン開発入門(全13回)
- 連載:触って学ぼう FPGA開発入門(全6回)
- 連載:FPGA開発テクニック、チューニングの心得(全6回)
- 特集:いまさら聞けない FPGA入門
- 連載:バラして納得! 電子部品入門(全18回)
- 連載:完全マスター! 電子回路ドリル III(全14回)
- 連載:完全マスター! 電子回路ドリル II(全25回)
- 連載:完全マスター! 電子回路ドリル(全25回)
- 目指せ! 電子回路マスターへの道
- 目指せ! 電子回路マスターへの道 Part2
- 分かっておきたい、IP活用の落とし穴
組み込み開発フォーラム 新着記事
- フルスクラッチの“Hello World”を動かしてみよう(2011/3/31)
- FlexRayプロトコルの概要(その2)(2011/3/29)
- JASA、東北地域に拠点を置く会員企業を支援(2011/3/25)
- NEC、震災の影響を受けた4拠点の生産再開を発表(2011/3/23)
- 内部ブロック図の基礎と共通要素(2011/3/22)
- インテル、被災地におけるITインフラの復旧を支援(2011/3/22)
- Facts on AUTOSAR/AUTOSAR導入の現実(2011/3/18)
- 計測器・震災被害ホットラインを開設、テクトロニクス(2011/3/18)
- ZMP、地震の揺れを多角的に計測するアプリ無償配布(2011/3/16)
- メンター、3Dテレビ・マルチメディア検証プラットフォーム(2011/3/16)
- 【番外編】タチの良い計測値、悪い計測値とは?(2011/3/15)
- tarファイルシステムをAndroidに組み込む!!(2011/3/10)













