AVR 持ってないけど AVR シミュレータのセットアップ
Mac OS X 10.7.4 (Lion)
AVR ライタも Arduino もまだ全く持っていないが興味があるので、とりあえず開発環境を多少作ってみたくなった。simavr (AVR のシミュレータ) をセットアップして動かしてみるまで
CrossPack
OS X の path_helper を使ってパスを通しているらしく ( /etc/paths.d/50-at.obdev.CrossPack-AVR がインストールされる )、path_helper を無効にしている場合、自力でパスを通す必要がある。
/usr/local/CrossPack-AVR/bin
を PATH に追加する。
simavr
CrossPack 入れてからやる
依存モジュールをインストール (homebrew を使用)
sudo brew install libelf sudo brew install pango
Mac の場合、Arduino がインストールされている前提で Makefile が書いてある。CrossPack を使うようにするには make のオプションが必要 (Arduino.app が入ってるならいらないと思うが試してない)
make all AVR_ROOT=/usr/local/CrossPack-AVR AVR_INC=/usr/local/CrossPack-AVR/avr
run
avr-project で新しいプロジェクト (というか Makefile の雛形が欲しいだけ) を作って、main.c をいじってみる。
avr-project Foo cd Foo cd firmware vim main.c
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
static int uart_putchar(char c, FILE *stream) {if (c == '\n') uart_putchar('\r', stream); loop_until_bit_is_set(UCSRA, UDRE); UDR = c; return 0;}
static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
int main (void) {
stdout = &mystdout;
printf("init\n");
long i;
DDRB = 1;
for (;;) {
PORTB ^= 1;
printf("delay PORTB:%x\n", PORTB);
_delay_ms(1000);
}
return 0; // never reached
}make /path/to/simavr-simavr/simavr/run_avr -m atmega8 -f 8000000 main.hex
avr の stdio.h に printf のやりかたは書いてあるからコピペしたらだいたい良い。
printf デバッグ相当のことはこれでできるが、ピンの状態をいじったりするのはたぶん gdb で直接メモリ書きかえる感じになるっぽい。そこまでわかっていない。