atmega128で32kbの外部RAMを使う

上の写真のロボですが、サーボの制御にベステクのatmega128ボードを使っています。このボード、なんと32kBのRAMが付いているんです。ついているなら使ってしまえ、ということでWinAVRで使えるようにしてみました。

http://www11.ocn.ne.jp/~akibow/AVR-LibC_1.4.2/FAQ.html#faq_startupをかなり参考にして、以下のアセンブリファイルを追加します。

#include <avr/io.h>

.section .init1,"ax",@progbits

ldi r16,_BV(SRE) | _BV(SRW)
out _SFR_IO_ADDR(MCUCR),r16

そしてMakefileのEXTMEMOPTSを以下のように変更します。

EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x807fff

Makefileに例が書いており、64kBで--defsym=__heap_end=0x80ffffとなっていたので、32kBでは0x807fffでしょう。あと、上記で追加したアセンブラファイルをASRCのところに追加します。

以上で外部RAM(32kB)が使えるようになります。ヘイポー

それにしても、ChaN氏のAVRライタは使いやすいですよ〜。ISPケーブルで通信できるのでprintfデバッグも簡単ですし、winAVRでちょこっと設定すればファンクションキーを押すだけで書き込めちゃいマス。