2007-03-13 (火)
*AVRライタ
やっとページ書き込みをライタ側で処理できるようになった.
最初,変なデータが書き込まれるので,よく調べてみたら色々な目的に使いまわしている配列の一部が重なる場合があることに気づく.変数の領域を広げるために,かなり色々書き直し.またusbdrv.cの中もいじる羽目に.
変数の使いまわしをするなとか綺麗ごとをよく言いますが,2Kバイトのプログラムと,128バイトのRAMでUSBをハンドリングして,他にも色々と機能を実装しようと思ったら,他に道はありません.
ある複数のデータが同時に有意な値を必要とすることが無いことを記述して最適化できる言語が欲しい.できれば自動でやって欲しいけど,そのためにはUSBのプロトコルや,PC側のコントロール用プログラムの仕様が必要になるしなぁ.外部環境を考慮した最適化手法の登場はまだですか?
あとは,読み出しもバッファに貯めて一気に出来るようにしたいけど,残りのプログラムメモリは2バイトしかない.どこを削るか…….EEPROMのページ書き込みを諦めれば数バイト削れるな….他には,関数呼び出しのオーバーヘッドが大きいから,ソースファイルをひとつにまとめてinlineをつけるか.