...

1.カメレオンAVR基礎

by user

on
Category: Documents
82

views

Report

Comments

Transcript

1.カメレオンAVR基礎
1.カメレオンAVR基礎
1.1
カメレオンAVRボードについて【ディジタルシステムA→カメレオンAVR資料→カメレオンAVRについて】
http://lms.ict.sendai-nct.ac.jp/moodle/,http://lms.es.sendai-nct.ac.jp/moodle/
(1)カメレオンAVRボードとは
「カメレオンAVR」ボードは,MCU(micro control unit)とCPLD(complex programmable logic device)をボ
ード上で密に結合した多目的用途向けの組込み用ボードです.仙台電波高専と(有)エグゼキュート
システム社が共同で開発しました.
設計者は,開発用パーソナルコンピュータ上でソフトウェア(MCU)およびハードウェア(CPLD)の開発
を行い,その結果の設計情報を「カメレオンAVR」ボードのMCUやCPLDにダウンロードすることでシス
テムが完成します.設計情報は,不揮発性(電源が切られてもデータが消去されない)メモリに格納さ
れるため,電源をオフにしても再度電源を入れると直ちに動作を再開することができます.
このボード用いてソフトウェアとハードウェアのそれぞれの特徴を活かしたシステムを実現することがで
きます.図1-1にその外観を示します.左右および下側の3個のコネクタを介して他のボードに接続が
可能であり,拡張性に富んでいます.教育用だけではなく,実際に組込みシステムに搭載して機器の
制御に利用することができます.
MCU
ATmega64L
(Atmel 社)
CPLD
MAXⅡ (EPM570T100C5)
(altera 社)
図1-1
カメレオンAVR2ボードの外観
図1-2に「カメレオンAVR」ボードの基本的な構成を示します.ボード上には,8ビットMCU(ATmega64L,
Atmel社)とCPLD(MAXⅡ-EPM570T100C5,Altera社)が搭載され,前者にはユーザが設計したソフト
ウェアが,後者にはハードウェアが実装され,それらが統合してフレキシブルで,かつ高速な処理を可
能にしています.MCUとCPLD間は,高速なシリアル通信で接続され,お互いに必要なデータをやり取
りすることができます.
図1-2
カメレオンAVRボードの基本構成
- 3 -
MCUは,メモリとしてフラッシュメモリ64Kbyte,EEPROM2Kbyte,SRAM4Kbyteを持ち,タイマ/カウンタ,
高速シリアル通信(SPIなど),割り込みコントローラ,10bitA/D変換器など高機能な周辺デバイスを豊
富に有しています.
一方,CPLDは,ユーザがHDL(hardware description language)で設計した回路情報をJTAGコネクタを
介してダウンロードすることで瞬時に希望する回路を実現することが可能です.CPLDの規模は,ロジッ
クエレメント570個,ユーザ使用可能なIOピン76個であり,比較的規模の大きな回路を実現することが
できます.
MCUもCPLDも不揮発性のフラッシュメモリを内蔵しており,電源をオフにした後に再度投入した場合
にもダウンロードされたプログラムや回路情報は消えずに,続けて実行することができます.
図1-3は,カメレオンAVRボードの部品配置図を示します.
JTAG
(USB/Byte blaster)
AC アダプタ
SPI
(AVR ISP ライタ)
MCU
CPLD
USB
注)コネクタJ2,J3,J5のピン仕様はカメレオンAVRボードハードウェアマニュアルを参照して下さい.
図1-3 カメレオンAVRボードの部品配置図と機能
- 4 -
(2)MCUの基本的な仕様
MCUの主な特徴を以下に列挙します.
ATMEL ATmega64L
・高性能低消費電力8ビットマイクロコントローラ
131命令(多くは1サイクルで高速実行,乗算命令は2サイクル)
1バイト汎用レジスタ32個
動作速度8MHz
・豊富なメモリ構成
フラッシュメモリ64kバイト,EEPROM2kバイト,SRAM4kバイト
・内蔵周辺機器
8/16ビットタイマ・カウンタ:各2個,実時間カウンタ:1個,各種PWM出力機能
A/D変換器:8ch10ビット,ウォッチドッグタイマ
・豊富な通信機能
JTAGインタフェース,バイト対応2線シリアルインタフェース,
SPIシリアルインタフェース
(3)MCUの内部構造とピン配置
図1-4
内部構造
図1-5
ピン配置
32個の汎用レジスタはどれもほぼ同じように使えるため,柔軟性が高い.
豊富なメモリ構成に加え,タイマ・カウンタ,A/D変換器などの基本的な周辺機能および豊富な通信機
能を内蔵し,1チップ構成でシステムを構築することが可能.
入出力ピンに複数機能を持たせて兼用とすることにより,パッケージの小型化を図っている.
- 5 -
1.2
カメレオンAVR指南について
「カメレオンAVR」ボードを用いてMCUやCPLDの設計実習を効果的に行うためのインタフェースボー
ドが,「カメレオンAVR指南」です.ボードの外観を図1-6に示します.ボード上には,表示用に4個の7セ
グメントLED,16個のLED,1個の液晶表示器(LCD)が実装されています.また,16個のトグルスイッチ
および超音波測距回路,2対の赤外線通信回路,ステッピングモータ,DCモータ,RCサーボモータの
駆動回路が備わっています.
設計実習を行う場合には,図1-7に示すようにカメレオン指南ボードの中央の3個のコネクタにカメレオ
ンAVRボードを差込んで利用します.
- 6 -
図1-6
カメレオンAVR指南2ボード
の外観
図1-7
カメレオンAVR指南2ボード
にカメレオンAVR2ボードを
接続した様子
「カメレオンAVR指南」ボードの配置図を図1-8に示します.
図1-8
カメレオンAVR指南ボードの部品配置図と機能
表1-1
MCUport
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0~7
PD4~7
PE2
PE3
PE4~5
PE6~7
PF0
PF1
PF2~7
PG0~4
入出力ポートの割り付け
信号仕様
SS
SCK
MOSI
MISO
LED D2
SW S3
備考
SPI/ISPライタ
SPI/ISPライタ
SPI/ISPライタ
SPI/ISPライタ
カメレオンAVRボード
カメレオンAVRボード
DCモータ
DB0~7
ステッピングモータ
SB5
RCサーボモータ
アナログ出力
SB6~7
アナログ入力
アナログ入力
LCD
SB0~4
- 7 -
指南ボードLED
指南ボードSW
指南ボードSW
JP2:CdS/外部切替入力
指南ボードSW
1.3
組込み系におけるソフトウェア【組込みソフトウェアテキスト(AVR編)→2組込み系におけるソフトウェア 講義資料】
(1)組込み系ソフトウェアとは
ソフトウェアというと,パーソナルコンピュータ(PC)上で日常使っているワープロソフトや表計算ソフトを
思い浮かべる人が多いと思いますが,実はPC以外のさまざまな機器でもソフトウェアが使われています.
例えば,家電製品(炊飯器,電子レンジ,テレビ,電話,その他多数),携帯電話,自動車といった身
近なものから,工場で働く制御機械やロボット等,これらの機器にはコンピュータが組込まれていて,ソ
フトウェアの記述を元に動作しています.このように機器に組込まれたコンピュータ用のソフトウェアの
ことを「組込み系ソフトウェア」と呼びます.
PC系ソフトウェア(ここでは組込み系ソフトウェアと区別するため,PC上で使うソフトウェアをこう呼ぶこと
にします.)と組込み系ソフトウェアとの違いを以下の表にまとめてみました.
表1-2 PC系ソフトウェアと組込み系ソフトウェアの違い
PC系ソフトウェア
組込み系ソフトウェア
主な処理内容
データの計算処理
各種センサ情報の取り込み,各種アクチ
ュエータの制御,データ通信制御,その
他周辺機器の制御,データの計算処理
ハードウェア・リソース
制限なし.お金があれば大規模化も 必要最小限の規模に抑える必要がある.
可能.
処理時間に関する制限 特にない.処理速度はPCの環境によ 機器によっては,一定の時間的な制約が
って変化する.
ある.
信頼性
バグがあっても,人命にかかわるよう バグによる不具合で,非常に危険な状態
な影響はほとんどない.
になることもある.
主な処理内容では,PC系ソフトウェアではデータの計算処理が主な仕事ですが,組込み系ソフトウェ
アではそれ以外にセンサやアクチュエータといった入出力機器の制御や,データ通信,周辺機器の制
御と,いろいろな処理を考えなくてはなりません.ハードウェア・リソースについては,PCは簡単にCPU
やメモリ,ハードディスクといったスペックを変更できますが,組込み系システムでは大きさや価格,消
費電力といった制約のため,必要最小限の規模で実現しなければなりません.処理時間についても制
約があり,組込み系ではマイクロ秒の範囲で規定される処理も珍しくなく,処理時間の制御も重要です.
さらには信頼性についても組込み系ソフトウェアに関しては慎重に対応する必要があります.例えば車
に組込まれる機器の場合,組込み系ソフトウェアのバグが原因で車の制御がきかなくなったら,大事故
につながってしまいます.
組込み系ソフトウェアの開発では,PC系ソフトウェアでは考える必要のなかった上記の特徴を考慮した
設計が求められます.
(2)組み込み系システムのマイクロプロセッサ
組込み系システムに利用されるマイクロプロセッサは,その用途に必要な性能を満たしていればよく,
通常は必要最小限の性能を持ったマイクロプロセッサが用いられます.そのため,現在ではPCのプロ
セッサとしては使われることのなくなった8ビットのマイクロプロセッサも,組込み系システムの分野では
現役で活躍しています.もちろん複雑な制御や計測が必要な場合には,16ビット,32ビットのマイクロ
プロセッサを用いることになります.また,マイクロプロセッサやメモリ,周辺ICをワンチップに収めたマ
イクロコントローラと呼ばれるICもよく利用されています.
○組込み系システムに利用される主なマイクロプロセッサ
H8, M16, Super H(ルネサステクノロジ),Power PC(IBM),78K0(NECエレクトロニクス),KC80,
KC160(川崎マイクロエレクトロニクス),PIC(マイクロチップ・テクノロジ),AVR(アトメル),etc.
- 8 -
(3)ATmega64L
ターゲットデバイスであるATmega64LはAVRと呼ばれる製品群の中の一つです.AVRはアトメル社の
開発した8ビットRISCタイプのMCU(Micro Controller Unit)で,世界中で多くの組込み機器に採用され
ています.AVRファミリの登場時には各MCUにはAT90S****という名前がついていましたが,現在は
ピン数が24ピン以下の小規模なAVRはATtinyシリーズ,28ピン以上のAVRはATmegaシリーズと呼ば
れています.この授業ではATmegaシリーズのATmega64というAVRを対象としてプログラム例を示しま
す.
組込み系ソフトウェアでは,PC系ソフトウェアのようにC言語で書けばどのPCでもコンパイルして実行可
能というわけではありません.AVR以外のプロセッサをターゲットとする場合はハードウェアアーキテク
チャに関する記述は大きく変更をする必要がありますし,他のAVRをターゲットとする場合でも使用で
きない機能などが含まれていれば多少の書き換えが必要となります.しかしマイクロプロセッサのアー
キテクチャや開発方法の基本は共通する部分が多くあるので,ひとつのプロセッサについてソフトウェ
ア開発ができるようになれば,他のプロセッサでの開発方法を修得するのはそれほど苦にはならない
でしょう.組込み系ソフトウェアの開発では,要求仕様を満たすためにはマイクロプロセッサも最適なも
のを選択しなければなりません.好みのマイクロプロセッサだけではなく,必要に応じてどんなプロセッ
サでも使ってやろうという気持ちが大切です.
(4)組込み系システム開発環境
組込み系ソフトウェアの開発では,開発対象がPCではないため,PC系ソフトウェアとは開発の流れが
異なります.PC系ソフトウェアの場合,PC上でソース・コード記述,コンパイル,リンクをすれば,そのま
まPC上で実行することができます.組込み系ソフトウェアの場合はソフトウェアを実行するターゲット
(マイコンボード等)上では開発が困難です.そのため,通常はPC上でターゲット用の開発ツールを用
いて開発を行い,ターゲットで実行可能なコードを生成し,そのコードをターゲットにダウンロードして
実行します.
組込み系の開発ツールはクロス・ツールと呼ばれ,コンパイラ,シミュレータ,エミュレータ等があります.
シミュレータ,エミュレータはPC上でターゲットの動作を模倣して動作確認が行えるツールです.ター
ゲットが手元にない時などには便利なツールです.一般的にクロス・ツールはターゲット毎に異なり,価
格も無償から高価なものまで様々です.実際に組込み系システムを開発 しようとする場合は,開発す
るシステムの要求仕様を満たすことはもちろん,開発環境についても考慮したほうがいいでしょう.
(5)開発言語
マイクロプロセッサの開発言語として現在最も使用されているのはC言語です.C言語はPC系ソフトウェ
アの開発でも主流の開発言語の一つなので,既にご存知の方も多いと思います.そのほかOSを導入
した組込みシステムではJavaもよく使われます.また組込み系では,デバイス制御や処理速度の高速
化等のためにアセンブリ言語を使用することも少なくありません.
1.4
カメレオンAVRボードの開発環境 【カメレオンAVR資料→カメレオンAVRについて→2.カメレオンAVRボード
の開発環境】
「カメレオンAVR」ボードの開発環境を次図に示します.開発用パーソナルコンピュータを用いてMCU
のソフトウェアの開発やCPLDの回路設計を行います.ソフトウェアの開発では,主にC言語を用いて設
計し,統合開発環境AVR Studioのもとで,CコンパイラWin AVRを用いてコンパイルし,その結果を専
用の書込み装置(AVRISPライター)を用いてMCUのフラッシュメモリにダウンロードします.一方,
CPLDの回路設計では,ハードウェア記述言語であるverilogを用いて設計し,統合開発環境QuartusII
のもとで論理合成やレイアウト設計を行い,JTAG経由でその結果をCPLDにダウンロードします.
- 9 -
図1-9
カメレオンAVRボードの開発環境
下図は,ダウンロードするためのケーブルを接続したときの様子を示しています.この図では,電源を
USBから給電していますが,ACアダプタ(+5V,センターが+)から給電することもできます.
図1-10
カメレオンAVRボードに開発用ケーブルを接続したときの様子
- 10 -
1.5
AVRプログラミング 【組込みソフトウェアテキスト(AVR編)→3AVRプログラミングスタートアップ 講義資料】
C言語によるAVRプログラム開発環境は無償のツールで準備できます.ここでは統合開発環境としてAtmel
Studio 6を用いた場合のプログラム開発の流れを示します.
(1)プロジェクトを作成する
Atmel Studio 6を起動すると,プロジェクトを新規に作成するか,既存のプロジェクトを開くかを選択す
るウィンドウが開きます.プロジェクトとはあるシステムを開発するのに必要なファイル群を管理する単位
で,Atmel Studioでプログラムを開始するためにはまずはプロジェクトを作成する必要があります.今回
は新規にプロジェクトを作成するので,"New Project"を押します.
下図のようにプロジェクトを作成する工程が始まります.使用する言語と開発目的を選択し,Nameには
プロジェクト名を記入します.今回はC言語で実行可能プログラムを開発するので,GCC C Executable
Projectを選択し,Nameはsimpleioとしました.Create directory for solutionにはチェックを入れておきま
す.これでSolution nameに記述してあるファイル名群が自動的に作成されます(ファイル名はデフォル
トでプロジェクト名と同じになります).Locationはプロジェクトに関するファイル群を保存する親ディレク
トリを選択します.このディレクトリには各自で保存したい場所を選択してください.
ディレクトリの選択で気をつけていただきたいのは,ディレクトリパスに日本語が含まれるとコンパイルが
出来ませんので,必ず日本語の含まれないパスを選択してください.最後に"OK"を押します.
図1-11
開発言語とプロジェクト名の設定
次にデバイスを選択する画面になります(下図参照).
図1-12
デバイスの選択
- 11 -
Deviceでは開発対象となるAVRの型番を選択します.今回は ATmega64 を選択します.以上の設定
をして,最後に"OK"を押します.
以上でプロジェクトが作成されて,プログラム開発画面へと移行します.
(2)プログラム開発
プロジェクト作成が終了すると,プログラム開発画面が表示されます(下図参照).
図1-13
プログラム開発画面
次にコンパイル時に行われる最適化の設定をします.メニューからProject=>**** Propatiesを選択,あ
るいはプログラム開発ウインドウのタブを選択します.すると次図のウィンドウが表示されます.設定項
目の中の Toolchain 内の Optimization Level を "None(-O0)"に設定してください.
図1-14
コンパイル最適化の設定
- 12 -
コンパイルの最適化とは,C言語で書かれたプログラムをコンパイルする際に無駄な記述を排除し,コ
ードサイズを小さくしてくれる処理です.組込みシステムではメモリ容量が小さいことが多いため,最適
化は重要な機能です.しかし最適化は適切に使用しないと本来プログラムに必要な記述まで削除され
てしまい,正常に動作しなくなってしまうことがあります(参考資料).今回の設定"-O0"は最適化しない
という設定です.プログラムにある程度なれてきたら,その他の最適化の設定も使用してみましょう.な
お,本テキストに掲載している全てのプログラムは最適化しない状態で動作確認をしています.
※組込み系は入力が更新されないなどの誤動作を防ぐため,「最適化しない」とするのが無難.
ソースファイルのタブを選択し,以下のようにプログラムを打ち込んでください.
リスト1-1
サンプルプログラム
このプログラムは,AVRのあるポート(ポートEの一部+ポートGの一部)から8ビットデータを入力して,そ
の値をそのまま別のポート(ポートC)へ出力するプログラムです.プログラムの内容については後ほど
詳しく解説しますので,今はこの程度の理解でかまいません.
プロジェクトをビルドするには,”Build"メニューの"Build Solution"を選択するか,ツールバーの以下の
アイコンをクリックします.
図1-15
プロジェクトのビルド
エラーがなければ,Outputウィンドウの最後に
Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
と表示され,ビルドが成功したことが分かります.もしエラーや警告が生じた場合はOutputウィンドウにメ
ッセージが表示されるので,メッセージを参照してプログラムを修正し,再びビルドをしてください.
(3)AVRへプログラムファイルを書き込む
デバッグが終了したらAVRへプログラムファイルを書き込みます.ここではAVRにデータを書き込む
AVRプログラマには,ATMEL社のAVRISP mkIIを使用します.その他のAVRプログラマを使用する
場合は,以降の記述を適切に読み替えてください.
- 13 -
AVRISP mkIIでAVRと開発用PCを接続し,"Tools"メニューから"Device Programming"を選択するか,
ツールバーの以下のアイコンをクリックします.
図1-16
プログラムファイルの書き込み
プ ログラマーを選択する画面が表示され るので,Toolに"AVRISP
Interfaceに"ISP"を選択し,"Apply"ボタンを押します.
図1-17
mkII",Deviceに"ATmega64",
AVRプログラマの選択
プログラマの設定画面が表示されます.Memoriesタグの設定を以下のようにします.Flashの欄に今回
ビルドした実行ファイル(プロジェクトディレクトリ¥default¥simpleio.elf)を参照して選択(下図参照).
図1-18
プログラマ設定画面
- 14 -
上記設定が終ったら,"Program"ボタンを押します.これでAVRに実行ファイルがダウンロードされます.
プログラムの結果はプログラマ画面下部のメッセージエリアに表示されます.全てOKと表示されていれ
ば正常にプログラムが終了したことを示しています.
実際に実行ファイルをダウンロードしたAVRで正しく動作しているか確認してみましょう.今回使用して
いる実習ボードでは,ポートE7,6,2ビット,ポートG4,3,2,1,0ビットに,それぞれSW入力インターフ
ェイスのS9,10,11,12,13,14,15,16のトグルスイッチが接続され,ポートC7,6,5,4,3,2,1,0ビッ
トにそれぞれLED出力インターフェイスのD9,10,11,12,13,14,15,16のLEDが接続されています.
よって,S9~16のトグルスイッチをON/OFFすることで,その値がD9~16のLEDに表示されれば正常に
動作していることになります.実際に実習ボードで確認してください.
※ATmega64LはデフォルトでATmega103互換モードになっている.下位5ビットの入力が動作しない
場合は,「Fuses」タグ内のEXTENDED Fuseを0xFD→0xFFに変えること.
○練習問題1
1.AVRプログラミングスタートアップ講義資料内のサンプルプログラム(simpleio)を打ち込み,カメレオン
AVRボードに書き込み,実習ボード上で動作を確認せよ.
2.ATmega103互換動作時とATmega64動作時の違いをデータシートから調べ,列挙せよ.
- 15 -
Fly UP