『構造工学の薦め』 〜「秋迎え 向日葵色を 還しけり」

識らないこと以外は何でも識っている 『薄学』 阿奉さんが語る自然界構造形態と人工の構造形態の類似性。還暦2歳!ブログ再開!

過去の投稿日別表示

[ リスト | 詳細 ]

全1ページ

[1]

組み込みソフトウェア開発の第一歩 4/4

H8/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の動作モード



レジスタ構成

 H8/300H CPUは、32ビット長の汎用レジスタ8本、32ビット長のコントロールレジスタ(24ビットのプログラムカウンタと8ビットのコンディションコードレジスタ)を1本持っています。汎用レジスタは、32ビット×8本、16ビット×16本、8ビット×16本としても使用できます。汎用レジスタはすべて同じ機能を持っていますが、ER7レジスタはスタックポインタとして機能します。

組み込みソフトウェア開発の第一歩 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が搭載されていないシステムでは、イベント発生による割り込み処理は、プログラマ側で処理する必要があります。以下は、割り込み発生時の一般的な動作です。

内部または外部のI/Oからイベントが発生し、それを内蔵割り込みコントローラに入力
               
内蔵割り込みコントローラが優先順位を判断。優先順位の高い順に割り込みを発生させるようマイコンに知らせる
               
コンテキスト(現在のプログラムカウンタやステータスレジスタなどの実行環境)をスタックメモリに保存
               
対応する割り込みベクタ番地にジャンプ
               
割り込み処理終了後、割り込み復帰命令を実行し、保存したスタックメモリからコンテキストを読み出し、元のプログラムの実行状態に戻す

組み込みソフトウェア開発の第一歩 2/4

シングルチップ(ワンチップ)マイコンの機能
 一般的にシングルチップ(ワンチップ)マイコンには、以下の機能が内蔵されています。

内蔵メモリ
 内蔵メモリの容量はマイコンによって異なりますが、数百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/4

組み込みソフトウェア開発に必要な知識

 一口に組み込みソフトウェアを開発するといっても、システムのどの部分を担当するかにより、必要な知識は異なります。例えばシリアル通信や液晶パネルなどを制御するデバイスドライバを開発する場合、ハードウェアからソフトウェアまでを含めた組み込みの知識が必須です。デバイスドライバの開発者は、マイコンやハードウェアの機能や特性を可能な限り理解し、最適なプログラムを書く必要があります。

 これに対してUI(ユーザーインターフェイス)部分などのアプリケーションを開発する場合、極端な話、組み込みの知識は不要です。アプリケーション開発者は、OSが提供するシステムコールやAPIを使いこなせれば、後は勝手にOSがマイコンやハードウェアを制御してくれます。

とはいえ、小規模なシステムやOS経由においてはタイミングが間に合わないシステムなどでは、アプリケーションプログラムからデバイスを直接制御する場合もあります。このようなとき、アプリケーション開発者といえども、マイコンやハードウェアの知識が要求されます。そこで今回は、組み込みソフトウェアを開発するために最低限必要な知識を解説します。

マイコンとは?

                http://monoist.atmarkit.co.jp/fembedded/h8/h8primer01/fig01.jpg

マイコンという名称は、便利な呼び方です。厳密な用語の定義は難しいのですが、ここでは“組み込みシステムを制御するために中核となる半導体チップ”を総称してマイコンと呼びます。マイコンの分類方法にはいろいろとありますが、機能面と構造面から分けてみます。

機能面から見たマイコン分類

マルチチップ系マイコン

チップ内部にROMやRAMなどのメモリを持たず、アドレスバスとデータバスの端子が常時外に出ているタイプのマイコンです。ターゲット基板上に実装された比較的安価な外部ROM/RAMでプログラムを動作させるため、メモリを大量に消費する大規模なアプリケーション向けに使われます。また、周辺装置とのやりとりを行うためのI/O(入出力)ポートがメイン基板とは別基板になっているシステムにマルチチップ系マイコンが使われます。代表的なものにx86(インテル)、68K(フリースケール)、SH2/3/4(ルネサステクノロジ)などがあります。

シングルチップ系マイコン

ワンチップマイコンとも呼ばれます。チップ内部にROMやRAMなどのメモリ、I/Oポート、タイマや割り込みコントローラなどの周辺機能を内蔵したタイプのマイコンです。内蔵ROM(数Kbytes〜数百Kbytes)内にプログラムが格納できる、比較的小規模なアプリケーション向けに使われます。また、マイコン内に周辺機能が内蔵されているため、各種I/Oが必要でコストを下げたい場合やシステム全体をコンパクトに仕上げたい場合に有効なマイコンです。代表的なものにH8、SH1(ルネサステクノロジ)や8x51(インテル)、683xx(フリースケール)などがあります。

構造面から見たマイコン分類

CISC系マイコン

Complex Instruction Set Computerの略です。アセンブラレベルでの高度な命令セットを提供するタイプのマイコンです。マイクロプロセッサは当初、CISCとして発展してきました。CISCタイプのマイコンは、1命令のアセンブリコードで非常に高度な処理を行えますが、その分マイコン内のマイクロコードや回路は複雑になり、命令を実行するために必要なクロックが増加しやすい、スピードの限界も50MHzくらいまでなどの欠点があります。多くの8/16ビット系マイコンに採用されているアーキテクチャで、代表的なものにH8や68K、x86、8x51などがあります。
 

RISC系マイコン

Reduced Instruction Set Computerの略です。命令セットを簡略化することで高速処理を可能にするというアーキテクチャを基に作成されたマイコンです。RISCマイコンの命令セットは、CISCプロセッサのそれと比較して少なく単純です。このため、1命令は、高速に実行できます。32/64ビット系マイコンに採用されているアーキテクチャで、代表的なものにARM(アーム)やMIPS(ミップス・テクノロジーズ)、PowerPC(IBM/フリースケール)、SHなどがあります。
 本連載で使用するH8/3048F-ONEは、CISC系シングルチップ(ワンチップ)マイコンに分類され、後述するようにタイマや割り込みコントローラなど、各種周辺機能が内蔵されています(詳細は後述)。

全1ページ

[1]


.
あほさん きまま
あほさん きまま
男性 / A型
人気度
Yahoo!ブログヘルプ - ブログ人気度について

ブログバナー

1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

一期一会

短歌・俳句

文学

森羅万象

芸術・建築

絵画・写真

海外生活

日本紀行

工学

スマートフォンで見る

モバイル版Yahoo!ブログにアクセス!

スマートフォン版Yahoo!ブログにアクセス!

過去の記事一覧

検索 検索

Yahoo!からのお知らせ

友だち(7)
  • fujioka youko
  • とんかつ
  • 近い人
  • レベキ監督牧師
  • bug*nno*e
  • iron_2iza
友だち一覧

よしもとブログランキング

もっと見る

[PR]お得情報

いまならもらえる!ウィスパーうすさら
薄いしモレを防ぐ尿ケアパッド
話題の新製品を10,000名様にプレゼント
ふるさと納税サイト『さとふる』
11/30まで5周年記念キャンペーン中!
Amazonギフト券1000円分当たる!
いまならもらえる!ウィスパーWガード
薄いしモレを防ぐパンティライナー
話題の新製品を10,000名様にプレゼント

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事