090204

|



整理箱の部材の裁断まで終わりました。よくよく数えてみたら5箱でした。節が
きついところは手押しカンナで平面だしても、しばらくするとまた内部の応力
から反ってしまう。厚さが10mmと薄いし。



3664サポートを続けました。ハマったポイントは
  • SCI3のTXDの端子はデフォルトでI/Oポート。TXDにするにはPMR1を設定。 RXDはSCR3.REを立てるだけでいい。
  • ベクタは16bitなのでスタートアドレスの指定はSHORT (ABSOLUTE (start))
  • ノーマルモードの場合、割り込み時のPCの退避とサブルーチンコール時の PCの退避に違いがある。
  • タイマAのスタートは
      *TMA |= _TMA2;	// Counter clear.
      *TMA &= ~_TMA2;	// Counter clear.
    
    立てて、落とす。立てたままだと0のまま。
  • gcc -mn (ノーマルモード)だと
    mov.l	sp,  @(0x1c, er3)
    これを、
    6f b7 00 1c 	mov.w	r7,@(0x1c:16,er3)
    としてしまう。32bitで退避したい場合はspを使わずに明示的にer7で指定しないとだめ。
    
  • ポインタが16bit....
PCの退避の問題は
アドバンスドモード           ノーマルモード
割り込み     JSR             割り込み     JSR
--------  ---------	     --------  ---------
CCR			     CCR       PC(8-15)
--------  ---------	     --------  ---------
PC(16-23) PC(16-23)	               PC(0-7)
--------  ---------	     --------  ---------
PC(8-15)  PC(8-15)	     PC(8-15)
--------  ---------	     --------
PC(0-7)   PC(0-7)	     PC(0-7)
--------  ---------	     --------
明示的なサブルーチンコールからのコンテキストスイッチ部分は割り込まれた 時と同じ形式にスタックを変更するようにしてみたのだけれど、まだちょっと 未完成。そこまでトリッキーなことしてもRAMが2KBしかないのでスレッドはま ず使えないと思う。最低でも1スレッドに384byteのスタックはいるし。
ポインタが16bitなのが広範囲に問題。ポインタを32bitだとしてるコードが多 いんだ。だめね。amd64でも、なんどかハマってる。これは逆にポインタが 64bitで。