C言語 君たちが実際に使う言語はC言語だ。 ここで、Arduinoに関してちょっとした混乱を招く恐れのある事柄がひとつある。それは、Arduinoを用いる際に、スケッチを書くという行為は、実質的にはライブラリを用いてC言語を書いているのと同じだということだ。裏に潜んでいた言語はC言語なんだ。 これはベル研究所に由来する由緒ある言語で、非常に良くドキュメント化されている。
そして、これはアセンブリ言語の上層のレベルの言語だ。だから、一行ごとに1つのインストラクションを記述するのではなく、この言語はもっと複雑なことをやってのける。例えば、ループを使ったり変数に名前をつけたり、なんてことができるんだ。 そして、君たちの多くがコンピュータチップをプログラミングするのに使うであろう言語はC言語だ。これがチップに何をすべきかを伝える方法になる。
コンパイラ そして、君たちはコンパイラを必要とするだろう。コンパイラはC言語をhex codeに変換する。 ここでC言語で書かれたプログラムをお見せして、ちょっと説明しよう。 僕はこれをC言語からhex fileに変換してやる必要がある。 ●GCC 僕たちがAVRを用いる主な理由の1つは、GCC(Gnu Compiler Collection)のサポートがあるからだ。これは本質的なもので、まさにLinuxの中核と言える。 GCCは非常にパワフルなコンパイラで、多くのアーキテクチャで作動する。そして、AVRはGCCと共に設計されたものだ。
●AVR Libc AVR LibcはC言語とAVRを繋ぐ。これにより、僕たちはGCCコンパイラを使って、AVRのためのプログラムを書くことができる。AVR Libcには、多くのドキュメントがあるが、その一部分としてAVRと通信するモジュールがある。 また、標準タイプがあり、その中にはルーティンがある。そして、それらは全てこのAVR Libcの一部だ。 そういう訳で、僕たちはプログラムをプロセッサが実行可能な形にするのにGCCコンパイラを用いることにする。
●OS X, WindowsでC言語をコンパイルするには もしも君たちがLinuxを使っているならば、今言ったことを実行するには、君たちがやるべきことはLinux用のGCCパッケージをAVRにインストールすることだ。OS XもCrossPackでサポートされている。Windowsでは、多分ベストな選択肢はAtmel社のコンパイラを使うことだ。彼らはフリーのコンパイラを提供している。これは非常に強力で、もしもWindowsを使っているのであれば、そのコンパイラを使うのがベストだろう。
まとめると、僕たちはAVRを用いる際、C言語をhexコードに変換するのにGCCコンパイラを用いることになる。 デバッグについては後で話そう。
(つづく) 講義の目次は 【和訳版】FabAcademy 2016 からご覧ください。 ※この記事は FabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。