Debian Jessie上にAVRマイコン開発環境構築〜LEDチカチカまで
何年かぶりに、AVRマイコンをいじってみようかと思い、
以前はWindows上で開発していたのですが、Debianでもできる様子なので、試してみました。
※ パスコンは手元になかったので繋いでいないです(買っておいたはずなのに。。。)
そもそも、Vcc 3.0Vの低電圧なモードで動かしているので、無くても壊れることは無い、はず
結論としては、
こちらのページのATtiny44用の記述をATmega168用に変更するだけで、Lチカまで動作確認できました。
変更点だけメモしておきます。
変更点 | ATiny44 | ATmega168 |
avrdudeの-pオプション | t44 | m168 |
サンプルプログラムの定数 | PA6 | PB6 |
PORTA | PORTB | |
DDRA | DDRB |
※ ATmega168にはポートAは無いので、今回はポートBの6番を使用しました
備考1: avrdudeの-pオプションの表記について
使用したいMCUに対する-pの表記については、
"-p"オプションに'?'を指定して実行すると一覧表示を得られます。
$ avrdude -p '?' Valid parts are: uc3a0512 = AT32UC3A0512 c128 = AT90CAN128 c32 = AT90CAN32 c64 = AT90CAN64 ...
※ '?'は上記のようにクオートで囲まないとシェルに食われます
※ 標準エラー出力に出力するので、grepする際は
以下のように標準エラー出力を標準出力へつなぐと良いです
$ avrdude -p '?' 2>&1 | grep ATmega168 m168 = ATmega168 m168p = ATmega168P
備考2: AVRに関するパッケージ
まだ試していませんが、GDBとかシミュレータとかもあるみたいです。
$ apt-cache search --names-only avr avra - assembler for Atmel AVR microcontrollers avrdude - software for programming Atmel AVR microcontrollers avrdude-doc - documentation for avrdude avrp - Programmer for Atmel AVR microcontrollers avrprog - Programmer for Atmel AVR microcontrollers binutils-avr - Binary utilities supporting Atmel's AVR targets gcc-avr - GNU C compiler (cross compiler for avr) gdb-avr - GNU Debugger for avr libavresample-dev - Development files for libavresample libavresample2 - Libav audio resampling library avr-evtd - Linkstation・玄箱用 AVR 監視デーモン avr-libc - Atmel AVR における開発用の標準 C ライブラリ simulavr - Atmel AVR シミュレータ
まとめ
インストールしたパッケージ
- avrdude
- gcc-avr
- avr-libc
avrdudeコマンド
- 認識チェック
- avrdude -p m168 -c avrisp2
- flash読み出し(Intel Hexフォーマット)
- sudo avrdude -p m168 -c avrisp2 -U flash:r:backup_201602141857.hex:i
- flash書き込み(フォーマット自動認識)
- sudo avrdude -p m168 -c avrisp2 -U led.c.hex
ビルド
avr-gcc -mmcu=atmega168 -Wall -Os -DF_CPU=10000000 -I./ -o led.out led.c avr-objcopy -O ihex led.out led.c.hex
※ Vcc 3.0Vの10MHzモードで動かしているため、-DF_CPUでは10MHzを指定しています