私にとってアルディーノ(Arduino)とは、その総合開発環境(IDE)が重要でマイコンチップ(AVR)を作動させるためのプログラムファイル(hexファイル)を生成させるために欠くことのできないツールとして大変重宝に使っています。なにせこのhexファイルはプログラムライターで直接AVRに焼くだけで実行可能なのですから、、、、私の過去のブログにも「 AVR と Arduino (1)」などいくつかありますので右側にある ラベルの Arduino をクリックしてみてください。
一方、Arduinoのハードウェアは今までそれほど興味がありませんでしたが、他の人に説明したりするときにスケッチを書いてコンパイルし、書き込みボタンを押せばパラパラとLEDが点滅して即座にボードが動き始める様子は、これはこれである意味ドラマティックです。
ということでこの機会にもう一度 Arduino についてハードウェア中心に整理してみたいと思います。
最新版の8ビットAruduino UNO |
Arduinoプロジェクトは2005年にイタリアで始まりました。
Arduino はCPUにAtmel社の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 と速くなりました。
次回はハードの自作について。