Mac OS X で Atmel AVR マイクロコントローラのプログラムを作る


[2004/10/18]

google で検索すると結構古い情報が得られて私はかえって混乱したのですが、 最新の gcc や binutils を使えば苦労することはないのでした。
以下、Mac OS X 10.3.5 で作業した記録。

binutils-2.15:
% ./configure --target=avr --program-pefix='avr-'
% make
% sudo make install

gcc-3.4.2:
% ./configure --target=avr --program-prefix='avr-' --enable-languages=c
% make
% sudo make install

avr-libc-1.0.4:
% ./doconf
% ./domake
% sudo ./domake install

gdb-6.2
% ./configure --target=avr
% make

gdb は残念ながら使うことができていません。使える環境が手元にないためです。

AVR へのプログラムの書き込みは、 Cypress EZ-USB で USB CDC ACM もどき に書いたように、 uisp を改変して Cypress AN2135 で ISP 信号線の制御を行なうことで実行しています。

例として、AVR Butterfly をターゲットにした簡単なプログラムの コンパイルと書き込みの手順は次のようになります。
次のソースは、こちら にあった lcdhello を C に書き直したものですが、これを lcdhello.c とします。

#include <avr/io.h>

main ()
{
  LCDCRB = 0xb7;
  LCDFRR = 0x10;
  LCDCCR = 0x0f;
  LCDCRA = 0x80;

  LCDDR0 = 0x10;
  LCDDR1 = 0x00;
  LCDDR2 = 0x01;
  LCDDR3 = 0x00;

  LCDDR5 = 0x45;
  LCDDR6 = 0x44;
  LCDDR7 = 0x05;
  LCDDR8 = 0x00;

  LCDDR10 = 0xef;
  LCDDR11 = 0x44;
  LCDDR12 = 0x05;
  LCDDR13 = 0x00;

  LCDDR15 = 0x10;
  LCDDR16 = 0x11;
  LCDDR17 = 0x01;
  LCDDR18 = 0x00;
}

コンパイルは次のように行なうことができます。

% avr-gcc -mmcu=atmega169 -O lcdhello.c -o lcdhello
% avr-objcopy -O srec lcdhello lcdhello.srec

ターゲットへの書き込みは次のようにして行ないました。

% uisp -dserial=/dev/cu.usbmodempucomdev1 -dprog=pucom --segment=flash --erase
% uisp -dserial=/dev/cu.usbmodempucomdev1 -dprog=pucom --upload if=lcdhello.srec
AVR Butterfly: lcdhello

ちなみに、この AVR Butterfly のために Windows マシンを立ちあげたことはありません。Mac OS X (あるいは NetBSD や Linux) だけでもなんとかなります。シリアル ポートがついてるマシンなら uisp だけで ISP 可能のようです。
ただ、ソースコードデバッグをやろうとすると JTAG 経由にせよ何にせよ、 非公開のプロトコルを使うことになりますので、Atmel の開発環境 (JTAG ICE) またはその互換品を手に入れる必要があります。
この JTAG ICE と AVaRICE というフリーソフトを使えば、 gdb でソースレベルデバッグすることは (Mac OS X でも) できそうです。 ただし、少なくとも JTAG ICE に最新のファームウェアを書き込むために Windows マシンが必要になるようです。 (特に、互換ハードウェアには最初はファームウェアは書き込まれておらず、 Atmel 提供の Windows 上の開発環境に最初に接続した時にファーム ウェアをダウンロードさせるみたいなので、 Windows マシンが必須となるようです)。
私は JTAG ICE の JTAG 側のプロトコルも公開されていると誤解をしていて なんとかなるだろうと思っていたのでちょっと残念です。


nand@mac.com     目次へ $Revision: 1.5 $ $Date: 2004/11/30 06:06:34 $