組み込みソフトウェア開発の第一歩 4/4H8/3048F-ONEの概要H8マイコンは、ルネサステクノロジ社の8/16ビットマイコンです。H8マイコンには、8ビットCPUコアのH8/300シリーズと16ビットCPUコアのH8/300Hシリーズがあります。そのほかに、H8/300LやH8/300H Tinyなどもシリーズ展開されています。ここではH8/300H CPUをコアに持つ、H8/3048F-ONEの概要について解説します。http://monoist.atmarkit.co.jp/fembedded/h8/h8primer01/fig06.gif 図6 ルネサステクノロジ社のマイコン製品展開マップ H8/3048F-ONEは、H8/300H CPUをコアにしたワンチップマイコン(MCU)です。内部は32ビット構成で、最大25MHzクロックをサポートしています。CPUコアの周辺に、フラッシュROMやRAM、I/Oポート、D/A変換機、A/D変換機、16ビットインテグレーテッドタイマユニット、シリアルインターフェイス、DMAコントローラ、割り込みコントローラなどが内蔵されています。 http://monoist.atmarkit.co.jp/fembedded/h8/h8primer01/fig07.gif 図7 H8/3048F-ONEのブロック図 アドレス空間と動作モードH8/300H CPUは、最大16Mbytesのリニアアドレス空間を持っています。http://monoist.atmarkit.co.jp/fembedded/h8/h8primer01/fig08.gif 図8 H8/300H CPUのアドレス空間 H8/3048F-ONEは、モード端子(MD2、MD1、MD0)の状態により、モード1〜7までの動作モードが選択できます。モード1〜6では、外部メモリや周辺デバイスをアクセスできます。バス幅コントロールレジスタ(ABWCR)を操作することで、バス幅はリセット時バス幅から変更できます。内蔵RAMは、システムコントロールレジスタを操作することで無効にできます。これにより、内蔵RAMがマッピングされているアドレス範囲は、外部アドレス空間として使用できるようになります。 表1 H8/3048F-ONEの動作モード |
過去の投稿日別表示
[ リスト | 詳細 ]
2007年09月13日
全1ページ
[1]
組み込みソフトウェア開発の第一歩 3/4「割り込み」という概念組み込みソフトウェアを開発するうえで、「割り込み」は重要な要素です。割り込みとは、その名のとおり、何らかの作業(処理)を行っている途中に、別の作業(処理)が割り込んでくることです。 割り込みの概念を理解するために、日常生活を考えてみます。いまパソコンに向かって新規プロジェクトの企画書を書いているとします。すると、今回のプロジェクトに関する緊急会議の開催を知らせるメールがきました。この会議には、すべての作業を中断して出席する必要があります。また社内規定により、席を長時間外す場合は、パソコンの電源を切ることが義務付けられています。 そこで、現在開いているページにブックマークを付けて、文書を保存し、パソコンの電源を切ります。会議終了後、パソコンの電源を再び入れ、企画書を開き、ブックマークの位置から作業を再開しました。 すると、またメールが来ました。差出人は、いつもくだらない用事を頼んでくる同僚です。相手は至急の回答を求めていますが、企画書の提出期限が迫っているため、同僚への返事は後回しにしました。 組み込みソフトウェアの場合、メールを受信する前の企画書作成が通常処理です。通常処理(企画書作成)を行っているときに、割り込み(最初のメール受信)が発生し、割り込み処理(会議への参加)を行います。割り込みが終了したら通常処理(企画書作成)に復帰します。 割り込み処理から割り込み発生前の状態に復帰するためには、どの時点で割り込みが発生したか、割り込みが発生した個所はどこか、といった情報が必要です。企画書の場合は、現在開いているページにブックマークを付けることで、割り込み復帰後に再開する個所が分かります。 コンテキスト組み込みソフトウェアの場合は、割り込み発生時の実行環境が分かれば、割り込みから正常に復帰できます。この実行環境はコンテキストと呼ばれます。コンテキストは割り込み発生時にスタックメモリに保存し、割り込み終了後は保存したコンテキストの内容をスタックメモリ(「FILOメモリ」とも言う)から読み出して、通常処理に復帰します。http://monoist.atmarkit.co.jp/fembedded/h8/h8primer01/fig05.gif 図5 割り込み処理とコンテキスト コンテキストに対する考え方はいろいろありますが、本連載ではコンテキストを現在のプログラムカウンタやステータスレジスタなどの内容とします。スタックメモリに保存された、割り込み発生時のプログラムカウンタを読み出すことで、割り込み終了後に再開するべきプログラムアドレスが分かります。 割り込みの優先度とマスクまた割り込みには、優先度があります。割り込み要求を直ちに行うか、後回しにするかは、割り込みの重要度に依存します。企画書作成の場合、緊急会議開催のメールは優先度の高い割り込みです。これに対して同僚からのメールは、優先度の低い割り込みです。組み込みソフトウェアでは、あらかじめ設定した優先度に従って、割り込み処理が行われます。 シングルチップマイコンでは割り込みコントローラに対して、割り込みの優先度がプログラミングできます。割り込みの優先度は通常、レベルx(xは数字)で表現され、xが小さい数字ほど高優先度の割り込みとなります。例えばレベル2の割り込み発生時にレベル6の割り込みが発生しても、レベル6の割り込みは実行されません。 割り込みは、必要に応じて禁止することができます。割り込みを禁止することを、割り込みマスクと呼びます。ただし、禁止(マスク)できない割り込みがあり、これをNMI(ノンマスカブル割り込み)と呼びます。企画書作成の例では、緊急会議への参加がNMIに相当します。 割り込みの動作組み込みOSが搭載されたシステムの場合、すべての処理(タスク)はOSが管理します。このためイベントが発生してもタスクの優先順位やスケジューリングはプログラマの関知するところではなく、OSにすべて任せます。これに対してOSが搭載されていないシステムでは、イベント発生による割り込み処理は、プログラマ側で処理する必要があります。以下は、割り込み発生時の一般的な動作です。 |
|
内蔵メモリ 内蔵メモリの容量はマイコンによって異なりますが、数百Kbytes程度のROMやRAMがチップ内部に内蔵されています。内蔵ROM/RAMの利点は、 チップ内部にあるのでアクセススピードが速い チップ外部の部品点数が少なくて済む チップ外部にノイズを出さない などが挙げられます。内蔵RAMはユーザー側で書き込みや消去が容易にできますが、内蔵ROM(マスクROMタイプ)は、ユーザーが用意したプログラムを半導体メーカーの製造工程でROMに書き込んでもらう必要があるため、ソフトウェアの改定が難しいという欠点があります。 ただし最近では、フラッシュタイプの内蔵ROMが増えてきました。これにより、半導体メーカーが保証する回数分、ユーザー側でオンボードあるいは市販のフラッシュメモリライタによる書き込みや消去などが可能となり、内蔵ROMの欠点が解消されています。 I/Oポート チップ外部の周辺機器とやりとりを行うためのI/Oポートがマイコンに内蔵されています。I/Oポートに割り当てられた端子は、アドレスやデータバスと兼用(マルチプレクス)されている場合が多いため、マイコンに内蔵されたレジスタを操作することで、該当する端子をポートとして使うか、アドレス/データバスとして使うかを決定します。 例えば、ある端子からデータを入力したい場合は、以下の機能を実行するプログラムを書きます。 ポートI/Oレジスタの特定ビットを操作して、該当する端子を汎用ポートに設定 ポートI/Oレジスタの特定ビットを操作して、該当する端子を入力側に設定 ポートデータを格納したレジスタから入力データをリード 動作モード モード端子の状態を変更することで、マイコンの動作モードを決定できます。例えば、プログラムが内蔵メモリ内に収まらない場合、外部メモリにプログラムを格納することができます。一般的に、図2〜4に示した3つのモードが利用可能です。 http://monoist.atmarkit.co.jp/fembedded/h8/h8primer01/fig02.gif 図2 拡張モード 内蔵ROM/RAMとターゲット基板上の外部ROM/RAMの両方を使用するモード http://monoist.atmarkit.co.jp/fembedded/h8/h8primer01/fig03.gif 図3 ROMレスモード 内蔵ROM/RAMを使用せず、ターゲット基板上の外部ROM/RAMのみ使用するモード http://monoist.atmarkit.co.jp/fembedded/h8/h8primer01/fig04.gif 図4 シングルチップモード 内蔵ROM/RAMのみ使用するモード 周辺I/O機能 シングルチップマイコンには、以下に示すさまざまな周辺I/O機能が内蔵されています。 各種外部メモリインターフェイス:SRAM、DRAM、SDRAMなど タイマコントローラ AD/DAコンバータ DMAコントローラ 割り込みコントローラ これらの機能を使うことで、ハードウェア設計が容易になるだけではなく、ソフトウェア開発も効率よく行うことができます。各機能の詳細は、次回以降のプログラミング編で具体的に解説します。 低消費電力モード 携帯電話やPDAなどのモバイル機器には、低消費電力の機能が必須です。基板に実装されている部品の消費電力を抑える技術と同時に、マイコン自体にも低消費電力を実現するための機能が用意されています。マイコンによって手法は異なりますが、本連載で使用するH8マイコンには、以下に示す低消費電力モードが用意されています。 外部クロックを停止または可変
マイコンに内蔵されたスリープモードを使用 スタンバイコントロールレジスタ=0のときにSLEEP命令実行 → CPU:停止、内蔵周辺I/O:動作、クロック:動作 マイコンに内蔵されたスタンバイモードを使用 スタンバイコントロールレジスタ=1のときにSLEEP命令実行 → CPU:停止、内蔵周辺I/O:停止、クロック:停止 外部端子(スタンバイ端子)の状態を変更 内部クロックの逓倍率を落とす |
全1ページ
[1]






