Electronics

2016.01.28

MicrochipのAtmel買収に興奮したこと

Text by Matt Sarnoff
Translated by kanai

セガ対任天堂、Mac対PC、Android対iOSと、技術系企業のシェアの奪い合いによる“聖戦” は今も続いている。しかし、90年代から、Makerや組み込みシステム技術者を巻き込んだ戦争がある。8ビットマイクロプロセッサー、MicrochipのPICとAtmel AVRの戦いだ。

MicrochipがAtmelを3億5600万ドルで買収するという発表があった。ついに戦いは終わるのか? これが、組み込みシステム開発の未来にどんな意味をもたらすのだろう?

おそらく、しばらくは何も起こらないだろう。MicrochipもAtmelも、それぞれの製品を作り続け、サポートもしっかりと続けるはずだ。なぜなら、それぞれの製品はいたるところにあるからだ。家の中に、車に、ポケットの中にも。Microchipは、これまでに12億個以上のPICを出荷しているし、AtmelのmegaAVRは最初のArduinoに使われている。それがMake をフィジカルコンピューティングの世界へ導いてくれた。

だが、そこには多くの期待がある。Microchip/Atmelは、AVRとPICのいいところを合体させて、ものすごいマイクロコントローラープラットフォームを作ることができるのだ。32ビットARMチップは、値段が下がり人気が上がる一方で、まだ8ビットで十分という需要が高い。

では、PICとAVRの違いはなんだろう。そして、その違いになにか問題があるのだろうか? これから組み込みソフトウエアを勉強しようという方なら、Arduinoを選ぶとよいだろう。簡単に使えるツールだからだ。しかし、次のステップに進もうとするならば、どちらかを選択しなければならない。

AVR: オープンソースで Maker にやさしい

Arduino_Uno_-_R3

もし、Arduinoを使ったことがあるなら、すでにAVRをプログラムしたことになる。それは Uno、Pro、Mega、Gemma、LilyPad、Leonardo、Diecimilia、Duemilanove など多くのボードに使われている。オープンソースコミュニティに支えられているので、Makerの間で人気が高い。もし、スタンドアローンの AVRでプログラミングを始めたいというなら、すべての必要なツールは、すべてのOS用に無料で揃っている。AVR-GCCはフル機能で、Cコンパイラーに対応している(Macユーザーなら設定はCrossPackをインストールするのと同じぐらい簡単だ)。そして、AVRDUDEユーティリティーで、Atmel公認の AVRISP mkIIやSparkfunのPocket AVR Programmerなど数多くのプログラミングデバイスのひとつで作ったプログラムを AVR マイクロコントローラーにアップロードできる。

AVRのRはRISC(Reduced Instruction Set Computing)のRだ。これが意味するものは、もし直接アセンブリー言語を使いたいとき、非常に楽しい思いをするということだ。命令セットはCコンパイラーと相性がよく、時間的制約のあるルーチンもハンドコーディングできる。アセンブリー言語で作られた素晴らしいAVRプロジェクトは山ほどある。Linus “lft” ÅkessonのCraftPhasorBitbangerデモボード、ゲームコンソールの Uzebox、そしてオシロスコープでウェブが見られるようになる私のTerminalscopeプロジェクトがそうだ。

残念ながら、AVRの欠点は、その価格にある。Arduino UNOに使われているATmega328Pは、ブレッドボードでも使えるDIPパッケージのものが3ドル70セント。これは、コード用に32KのROM、2KのRAM、I/Oピンが23本(うち6本がアナログ電圧が読める入力、6本がLEDの光量調整に使えるPWM出力) という内容だ。もっとピンやメモリーが必要なら、たとえば16KのRAM、32本のI/Oピンが40ピンのDIPパッケージが欲しい場合は、ATmega1284にアップグレードを考えなければならない。これはひとつ7ドル67セントだ。表面実装でよければ、オンボードのUSBなど変わった機能を加えても、少し安くなる。しかし、他社製品を選べば、もっと安い価格で同等のものが手に入る。

そこでPICが登場

mplabx

Arduinoが登場する以前は、Microchip PICがホビイストやプロのためのチョイスだった。その製品ラインナップは膨大で、周辺機器とパックになっている。しかもめちゃくちゃ安い。DIPパッケージで28本のアナログ入力が欲しいなら、PIC16F1717、お値段は2ドルがある。USBでコンピューターと会話ができる何かを作りたいなら、PIC16F1454、1ドル40セントがある。他には何もいらない。

MicrochipはPICに面白い周辺機器を埋め込んでいる。そのためこのチップ単独で済み、さらに全体のコストは下がる。本当のアナログ電圧出力ができるデジタルーアナログコンバーター(DAC)を搭載したものも多い。相補波形ジェネレーターは、直流モーターを簡単に制御できる。またCLCはFPGAの小型版のようなものだ。入力信号に対して簡単な演算(AND、OR、XORなど)を行い、メインプロセッサーを介さずに出力にルートできる。スリープ中でも可能だ。

そんなわけで、PICはかなり安い。どこでも手に入る。たくさんのクールな機能が搭載されている。では欠点は? 2000年のなかばにMakerたちの間にマイクロコントローラー革命を起こしたのが、なぜPICではなくAVRだったのか? 多くの人が、ツールだと答えるだろう。今や、AVR開発のためのオープンソースで無料のツールで溢れている。一方、PICをプログラムしたいと思えば、Microchipのソフトとハードを使わなければならないのだ。

数年前まで、PICの開発環境はWindowsに限られていた。Microchipの現在の開発環境(IDE)MPLAB XはNetBeansプラットフォームで作られている。なので、WindowsでもOS XでもLinuxでも走る。ダウンロードサイズは500MB以上ある。インターフェイスは使いにくい。ツールバー、サイドバー、設定ダイアログがたくさんある。コマンドライン派の人なら、MPLAB Xアプリのなかに深く埋め込まれているスクリプトを使ってチップにコードをアップロードすることも可能だ。

AVRのクリーンなRISCアーキテクチャーと違い、PICのメモリーは128バイトのバンクにセグメント化されていて、一度にアクティブになるのはそのうちのひとつだけだ。このアレンジメントのために、オープンソースのコンパイラーが作りにくくなっている。Small Device C Compilerが私が知るなかで唯一のコンパイラーだ。私はこれを使ってある程度の結果を残したが、最新のチップのすべての機能を使うことができない。バグもある。PICをCでプログラムしたければ、MicrochipのXC8コンパイラーを使うしかない。無料バージョンでは、コードの最適化はできない。できる限り高速なコードを書きたいなら、Proライセンスを買う必要がある。こいつは1000ドルもする。大量のデバイスを販売するプロのエンジニアならともかく、ホビイストにとっては手の出ない価格だ。

デバイスのプログラマーが言うように、PICkit 3(50ドル)が最新のPICに確実に対応する唯一のデバイスだ。だが設定が難しい(私の場合はそのままではMacで使えなかった。ファームウェアをアップグレードするためにWindows PCが必要だった)。だが、うまく動いている。

未来

私が夢見ているのは、Microchip/Atmelが、AVRアーキテクチャーで、オープンソースのツールチェーンを持ち、PICなみの周辺機器を搭載して価格が安いマイクロコントローラーを作ってくれることだ。でも、それはもう手遅れだろうか? TeensyArduino Dueといった32-bit ARM Cortex-Mデバイスがローエンドの市場を占領し始めている。また、Raspberry Pi Zeroのようなフル機能のLinuxシステムとCHIPが5ドルほどで買える。しかし、シンプルな8ビットのことも忘れてはいけない。8ビットのマイクロコントローラーなら、必要なことは数週間で憶えられる。クロックサイクルの数え方、ハンドチューンしたアセンブリーの書き方、安い部分にコードを合わせるための命令のスライシングなど、これらは私や無数のハッカーたちが組み込みシステムで熱くなった部分だ。

原文