- - PR -
これまで12回にわたって連載してきた「H8で学ぶマイコン開発入門」は今回をもって最終回となります。最後ということで、今回は連載各回の概要、要点をピックアップすることで総まとめとしたいと思います。
第1回「組み込みソフトウェア開発の第一歩を踏み出そう」
記念すべき第1回では、組み込みソフトウェアを開発するためには最低限どの程度の知識が必要か、ということで「機能面、構造面から見たマイコンの種類」「シングルチップマイコンが一体どういうもので構成されているか」「割り込みについて」「連載で使用するH8マイコンの概要」などを説明しました。
このうち「割り込みについて」は少々扱いが面倒なため概要を説明するにとどめましたが、考え方としては第4回「OSが起動する以前のスタートアップルーチン」とよく似ています。スタートアップルーチンとは「システムのリセットによる割り込み」で何を行うかを記述したものともいえますので、スタートアップルーチンとは何かということが分かれば、割り込み処理を理解することもそんなに難しくはないと思います。
余談ではありますが、割り込み処理中にさらにほかの割り込みが発生する「多重割り込み」については十分注意が必要です。
ポイント
- マイコンを構成している要素は何か。
第2回「組み込みソフトウェア開発はC言語が主流だ」
第2回では、組み込みソフトウェア開発で使用するプログラミング言語は何か? ということを主題にして、機械語やアセンブリ言語と呼ばれるハードウェア寄りの言語(注1)からC言語までを紹介しました。
開発言語の種類を話すことは、開発言語が登場した歴史を追うことでもあります。現在では機械語を使って開発を行うことはまずないと思いますが、デバイスドライバなど、ハードウェアを直接扱うようなソフトウェア開発では、アセンブリ言語は使うことがあるかもしれません。筆者も時々ではありますが、アセンブリ言語で簡単な処理を記述することがあります。
また、この回の後半では組み込みソフトウェア開発でC言語を使うことのメリットを書いています。
ポイント
- 機械語、アセンブリ言語は方言のようなもの。マイコンによって書き方は異なるがそのマイコンで何ができるのか(特有の処理)を端的に表している。
- C言語やそれ以外の高級言語はマイコンによらず汎用的な処理が記述できる。そのため、異なるマイコンへの移植が機械語、アセンブリ言語に比べてはるかに容易。
| 注1:大まかに機械語やアセンブリ言語を低級言語、それ以外を高級言語と区別できます。低級言語に変換できる言語を高級言語としています。 |
第3回「開発プロセスとクロス開発環境、そしてOSのこと」
第2回でC言語などのいわゆる高級言語について紹介したのを受けて、この回ではC言語をアセンブリ言語・機械語に翻訳する「クロスコンパイラ」について紹介しました。
C言語ではCPUに依存しない汎用的なプログラムを書けますが、CPUに依存しないということは逆にいうとそのままでは個々のCPU上では動作しない、ということになります。そこで汎用的なプログラムを、開発環境として使っているCPU(われわれが使用しているパソコンのCPUのこと)用にではなく、ターゲットとする個々のCPU(本連載で使用しているH8マイコンなどのこと)で理解できるように翻訳するのがクロスコンパイラというわけです。
この回ではそのほかに、組み込みソフトウェアの一般的な開発手順について触れています。開発手順では、「仕様検討の段階で、この機能はハードウェアで実現すべきかソフトウェアで実現すべきかを吟味する」など、OS上で動くアプリケーションの開発だけではあまり意識しないようなところから解説をしています。また、最後に組み込みOSの有用性について簡単に触れています。
ポイント
- 組み込みソフトウェアの開発ではハードウェアに対する意識も重要。
- クロスコンパイラはC言語などで書かれた汎用的な内容をマイコンごとの機械語に翻訳してくれるコンパイラ。
第4回「OSが起動する以前のスタートアップルーチン」
第4回では、組み込みソフトウェアが最初に動作する部分であるスタートアップルーチンについて説明しました。
最初とは、具体的にはシステムの電源投入時やリセット時のことをいい、例えばスタックの設定やハードウェアの初期化など、システム全体の初期設定を行っています。OSを使わないシステムや組み込みOS自体を移植する場合は、スタートアップルーチンなしではシステムが動作しないので、重要な要素の1つです。
ポイント
- スタートアップルーチンは組み込みソフトウェアの中で最初に動作する部分。
- スタートアップルーチンの最後で、C言語でいうところのmain関数にジャンプする。
第5回「統合開発環境“HEW”をセットアップする」
本連載は「H8で学ぶマイコン開発入門」ということで、実際にあるH8/3048F-ONEというマイコンを使って、組み込みソフトウェアの開発で何が必要か、何ができるのか、の一番初歩の部分を紹介しています。じゃあ開発する環境には何があるの? ということで、この回ではH8マイコンの統合開発環境について紹介しました。開発環境はマイコンごとに異なりますので、自分が扱うマイコンにどのような開発環境があるのか、そもそも開発環境が整っているのかどうかによって、ソフトウェア開発の効率が大きく変わってくるかもしれません。
特に開発環境がないという場合、プログラムはテキストエディタで記述し、クロスコンパイラはGNUということは大いにあり得ます。この場合、makefileを用意したりと、開発を始めるまでの準備が手間になります。ですが、最近はEclipseという無償で強力な開発環境が使える場合があるので、開発環境を整えるのが大変ということは徐々に少なくなっていくのかもしれません。
Eclipseのプラグインには組み込みC/C++の開発環境があり、ビルド環境の設定でGNUのクロスコンパイラを指定することで、組み込みソフトウェア開発であってもVCライクな開発を行うことができます。
ポイント
- ターゲットとするマイコン用の開発環境がそろっているかいないかで、すぐに開発に着手できるかどうかが変わってくる(事前の準備に手間を取られることがある)。
関連記事 半導体/エレクトロニクス
- 連載:イチから作って丸ごと学ぶ! 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)














