Hatena::Groupsubtech

冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

 | 

May 31, 2012 (Thu)

AVR 持ってないけど AVR シミュレータのセットアップ 09:10 はてなブックマーク - 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 で直接メモリ書きかえる感じになるっぽい。そこまでわかっていない。

 | 

スポンサード リンク

書いてる人

cho45 (佐藤広央) (www.lowreal.net)

Perl, JavaScript, Ruby, HTML, CSS, Web etc


スポンサード リンク