R8Ctiny のコンパイラでちょっと気になっていたニュースがあるので、スタートアップを自動生成させてみてみることにする。
RENESAS TOOL NEWS 2006年12月01日
http://tool-support.renesas.com/jpn/toolnews/061201/tn3.htm
ひゅ~ (HEW)を起動して新規にプロジェクトを作成してみる。
CPU種別 は M16C にして・・・
CPU Series は R8C/Tiny にして・・・
CPU Group は 23 にして・・・
ROM は 64K のままで
HEAP は確保しないことにする。malloc() 使うとメモリの使用量把握しにくいしね。
User Stack は 200H にする。RAM は 3K あるからもっと増やしてもいいけどね。
Interrupt Stack は 80H のままでいいか。
んで、出てきた ncrt0.a30 の一部を以下に引用
ldc #stack_top,sp ;set stack pointer
ldc #0080h,flg
あーなるほどねー、フラグレジスタの設定の前にSPを設定してる。これじゃ正しく動くことはあるまい。
スタートアップから main() へいって、そこからさらに何か別の関数コールして、
main() へもどってこれなくなるのかな。たしかルネサスは戻りアドレスもスタックにつんでるはずだし。対処方法はルネサスのホームページにでてるけど、このままもうちょっと見てみることにする。
RENESAS TOOL NEWS 2006年12月01日
http://tool-support.renesas.com/jpn/toolnews/061201/tn3.htm
ひゅ~ (HEW)を起動して新規にプロジェクトを作成してみる。
CPU種別 は M16C にして・・・
CPU Series は R8C/Tiny にして・・・
CPU Group は 23 にして・・・
ROM は 64K のままで
HEAP は確保しないことにする。malloc() 使うとメモリの使用量把握しにくいしね。
User Stack は 200H にする。RAM は 3K あるからもっと増やしてもいいけどね。
Interrupt Stack は 80H のままでいいか。
んで、出てきた ncrt0.a30 の一部を以下に引用
ldc #stack_top,sp ;set stack pointer
ldc #0080h,flg
あーなるほどねー、フラグレジスタの設定の前にSPを設定してる。これじゃ正しく動くことはあるまい。
スタートアップから main() へいって、そこからさらに何か別の関数コールして、
main() へもどってこれなくなるのかな。たしかルネサスは戻りアドレスもスタックにつんでるはずだし。対処方法はルネサスのホームページにでてるけど、このままもうちょっと見てみることにする。
スタックがうまく設定できていないのはわかっていたけどその解決方法が.....