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を指定しています