割り込みと7セグメントLEDの制御:T-Engineプログラミング入門(2)(4/4 ページ)
リアルタイム処理に欠かせない「割り込み」の使い方と、デジタル時計などで見かける7セグメントLEDで数字を表示する方法を解説
「プロセスベース」と「T-Kernelベース」
前回と今回で解説した内容を、別の角度から整理してみましょう。
T-Engine上のプログラムは、「プロセスベース」と「T-Kernelベース」の2つに大別されます。どちらも一長一短がありますが、どちらでプログラムするのがいいのでしょうか? 実は、ハムレットのように二者択一に悩む必要はありません。実現したいシステムをモジュール単位に分割し、処理の流れの大部分はメモリ保護が可能なプロセスベースで記述し、必要に応じて個々のハードウェア操作などをT-Kernelベースで書く、というのが正しい方法です。このようにモジュール化することにより、プログラムの開発効率や移植性、再利用性などが大きく向上します。
例えば今回の計数器の場合、本来なら、
- 数をカウントするプロセス
- 押しボタンからの入力を検出するドライバ(T-Kernelベース)
- 7セグメントLEDへの表示を行うドライバ(T-Kernelベース)
の3つに分けるのがセオリーです。
しかし今回のプログラムは小規模なものですから、モジュール化せずに全体を1つのT-Kernelベースのプログラムとして構成することにしました。
実は、連載第1回の“Hello, world”プログラムはプロセスベースで作成しました。第1回と第2回を注意して読み比べると、手順に若干異なる点があることに気付くでしょう。その違いとは、以下の2つです。
今回は、「計数器」プログラムの作成を通して、T-Engineにおける割り込み処理を解説しました。
今回の例では、割り込みハンドラ内で、カウントアップやLED表示という単純処理を行わせました。しかし、割り込みハンドラ内で複雑な処理を行わせることはリアルタイム性能の低下につながるため、望ましくありません。そこで登場するのが「タスク」という概念です。
割り込みだけであればリアルタイムOSは不要かもしれませんが、タスクとなると、どうしてもリアルタイムOSが必要になります。そこで次回は、割り込みと並んで大きな鍵となる、タスクのプログラミングに進む予定です。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.