P4:LCD アクセスルーチンの ROM 化
今日は LCD アクセスルーチンの ROM 化。の前に、昨日作業を終えてから気がついた TimerW アクセスルーチンの<del>バグ</del>不具合を直して動作確認。
そのあと、LCD アクセスルーチンを ROM 化し、テストプログラムを書いたのだが、あっという間にコードが膨れ上がり RAM 容量の壁にぶち当たる。
----
このプロジェクトを始めてから、早一月半。LCD アクセスルーチンのファイルのタイムスタンプは丁度一ヶ月前。いくらなんでも2ヶ月以内に完成させたいと、今日の作業時間は2時間。
予想外のところに時間を吸い取られていく...。
----
H8+gcc は異様にコード効率が悪い。
struct sLcdFont {
unsigned char code;
unsigned char *dat;
};
void lcd_font_set_up(void)
{
int i;
struct sLcdFont buf;
for (i = 0;i < 6;i++) {
buf.code = i;
buf.dat = font[i];
func_tbl[SetLcdFont]((int)&buf);
}
}
SetLcdFont は定数。
この関数が 92byte。
void put_disp(unsigned short x)
{
disp_bar(x);
disp_number(x);
func_tbl[RewriteLcd](0);
}
RewriteLcd は定数
この関数が 50byte
ちなみにコンパイルオプションは -O。引数のレジスタ渡しとかしないのだろうか?
開発中のコードに使える RAM 領域は 1kbyte 強ある。これだけあれば何とかなると思っていたのだが、全然足りなくなってきた。
そのあと、LCD アクセスルーチンを ROM 化し、テストプログラムを書いたのだが、あっという間にコードが膨れ上がり RAM 容量の壁にぶち当たる。
----
このプロジェクトを始めてから、早一月半。LCD アクセスルーチンのファイルのタイムスタンプは丁度一ヶ月前。いくらなんでも2ヶ月以内に完成させたいと、今日の作業時間は2時間。
予想外のところに時間を吸い取られていく...。
----
H8+gcc は異様にコード効率が悪い。
struct sLcdFont {
unsigned char code;
unsigned char *dat;
};
void lcd_font_set_up(void)
{
int i;
struct sLcdFont buf;
for (i = 0;i < 6;i++) {
buf.code = i;
buf.dat = font[i];
func_tbl[SetLcdFont]((int)&buf);
}
}
SetLcdFont は定数。
この関数が 92byte。
void put_disp(unsigned short x)
{
disp_bar(x);
disp_number(x);
func_tbl[RewriteLcd](0);
}
RewriteLcd は定数
この関数が 50byte
ちなみにコンパイルオプションは -O。引数のレジスタ渡しとかしないのだろうか?
開発中のコードに使える RAM 領域は 1kbyte 強ある。これだけあれば何とかなると思っていたのだが、全然足りなくなってきた。
トラックバック(0)
このブログ記事を参照しているブログ一覧: P4:LCD アクセスルーチンの ROM 化
このブログ記事に対するトラックバックURL: http://www.co-mind.info/cgi-bin/mt/mt-tb.cgi/1130