ArchLinuxでAVRを開発しようとしてみるメモ
ArchLinuxでAVR(ここではATMEGA328P)で遊ぶメモ たぶんUbuntuとかも同様にいけるんじゃないかなー
ハードウェア
とりあえず書きこみに自分が使っているものは以下
- AVRISP mkII (http://akizukidenshi.com/catalog/g/gM-02582/)
- 自作の書きこみ簡単にするやつ (とりあえずは必要ない)
ソフトウェア
パッケージ
ArchLinuxでは全て公式レポジトリから手に入る
udev
もしかしたら必要ないのかもしれない。 /etc/udev/rules.d に以下のファイルを 60-avrisp.rules としてコピーする。
SUBSYSTEM!="usb_device", ACTION!="add", GOTO="avrisp_end" # Atmel Corp. JTAG ICE mkII ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", MODE="660", GROUP="dialout" # Atmel Corp. AVRISP mkII ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout" # Atmel Corp. Dragon ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", MODE="660", GROUP="dialout" LABEL="avrisp_end"
一応再起動する。
繋げる
以下を参考にして繋げる。
http://allaboutee.com/2011/05/11/how-to-program-an-avr-microcontroller/
はやい話がATMEGA328P側のピンとAVRISP mkIIのピンを一緒のとこにすれば良い。 あと、AVRISP mkIIは電源を供給してくれないので、外部の電源を用意する。これもVCC,GNDに(並列に)つなければ良い。 自分の場合はmini USBから取れるようにした。
AVRISP mkIIを"最後に"回路、もしくはUSBにつなげること。mini USBを後にやるとオレンジが点滅した。
書きこみ
どうやらelfを出力した後に何かをやらなきゃいけないらしい。
main.cは以下のもので試してみた
#include <avr/io.h> int main(){ while(1){ } return 0; }
$ avr-gcc -mmcu=atmega328p main.c $ avr-objcopy -O ihex a.out a.hex $ sudo avrdude -c avrispmkII -p m328p -P usb -U flash:w:a.hex:a
Permission deniedとかいわれたらsudoをつけてみる。 avr-objcopyに-R .eepromとかしたほうがちいさくなってよいのかも?