2015年1月23日金曜日

もう一度 Arduino (1) arduinoの基本とか

 私にとってアルディーノ(Arduino)とは、その総合開発環境(IDE)が重要でマイコンチップ(AVR)を作動させるためのプログラムファイル(hexファイル)を生成させるために欠くことのできないツールとして大変重宝に使っています。なにせこのhexファイルはプログラムライターで直接AVRに焼くだけで実行可能なのですから、、、、私の過去のブログにも「AVR と Arduino  (1)」などいくつかありますので右側にある ラベルの Arduino をクリックしてみてください。
 
 一方、Arduinoのハードウェアは今までそれほど興味がありませんでしたが、他の人に説明したりするときにスケッチを書いてコンパイルし、書き込みボタンを押せばパラパラとLEDが点滅して即座にボードが動き始める様子は、これはこれである意味ドラマティックです。

 ということでこの機会にもう一度 Arduino についてハードウェア中心に整理してみたいと思います。
最新版の8ビットAruduino  UNO

 Arduinoプロジェクトは2005年にイタリアで始まりました。
 Arduino CPUAtmel社のAVRを使った素人でも扱えるワンボードマイコンの一種で、スタンドアローンでの使い方はもちろんマイコンからも制御することができます。

 前述の総合開発環境(IDE)やハードウェア設計情報などが無料で公開されており、誰もが自らの手で組み立て可能であり、場合によっては完成品のみならずキットなども購入することができます。

 なによりも素晴らしいのは、Arduinoのとっかかり易さ故に世界中の人々が多くのアプリケーションを競って実験し、その結果をネット上にアップしていることです。このことによって情報がどんどん積み上がり、大きな共有知識となっているのだと思います。

 現在 Arduino の最新ヴァージョンは総合開発環境(IDE)が「1.0.6」、ハードウェア(8ビット)が「UNO」となっています。(写真)

 Arduino が対象としているAtmel社AVR(チップを設計した Alf Egil Bogen と Vegard Wollanの名前と、RISCに由来する)RISCベースの8ビットマイクロコントローラ(制御用IC)の総称で1996年に開発されました。

 回路構成が簡単でCPU、メモリ(RAM、ROM)、I/O、データ記憶用のEEPROM、クロック発振回路、タイマーなどが1チップに収められており、書き込まれたプログラムISP -In-System Programming に対応により作動・制御します
 ほとんどの命令を1クロックで実行するため、MHzあたりの計算量は1MIPSにも達し、現在でも実用上十分な速さだと思いますし、廉価であることも手伝って私も愛用しています。
 左写真はたまたま手元にあったAVRファミリーです。いろいろ種類がありますが、基本的に使い方は同じです。
 上写真の Arduino UNO に使われているのは写真左上の ATMEGA328P です。

Arduino を語るには先ずブートローダーについて理解するのがいいと思います。

 通常AVRのようなマイクロコントローラにはあらかじめ「割り込みベクター」と「ユーザープログラム」が書き込まれています。スタートすると(リセットがかけられると)① リセット信号を受けて割り込みベクター記入してあるユーザープログラムのスタート番地に移動し  、ユーザープログラムを実行します。(下図左側の例)

 一方 Arduino のブートローダーシステムは、右図右側の例に示すように、あらかじめ書き込まれているのはメモリーの後半に見られる「ブートローダー割り込みベクター」と「ブートローダー・プログラム」です。
 同様にスタートすると(リセットがかけられると)① リセット信号を受けてブートローダー割り込みベクター記入してあるブートローダー・プログラムスタート番地に移動し  、ブートローダー・プログラム実行します。
 ③ この実行によってホスト・コンピュータのシリアルポートから「 Arduino の総合開発環境(IDE)で作成したユーザープログラム」を転送してもらいメモリーの最初の部分に「割り込みベクター」とともに書き込みがされます。
 あとは左側の例のように制御を割り込みベクターに移し ④ 、そこからユーザープログラムが実行 ⑤ されるわけです。

 ブートローダーシステムでもあらかじめ割り込みベクター」と「ユーザープログラム」が書き込まれていれば、意図的に新しいプログラムを書き込まないかぎり左側の通常のスタートと同じになります。

 左右の例を比べてわかるように、ユーザーが使用できるプログラム領域はブートローダーシステムのほうが「ブートローダー・プログラム」に占有される分だけ狭くなります、とはいっても最新の Optiboot では 従来の 1/4 にまで圧縮され512B)、転送速度も115200bps と速くなりました

 次回はハードの自作について。

0 件のコメント: