(toppers-users 3372) makeoffsetの取り扱について

mgg03420 @ nifty.com mgg03420 @ nifty.com
2011年 1月 20日 (木) 23:19:28 JST


始めまして 冨士設計 大曲不次と言います

ToppersはTi-5402を5414に実装した経験のみの素人です。
freescale JM-Badgeに
かつてフリースケール社のショーでもらったものですが現在も市販されています。
これはToppers-JSPが可能とあり、ソースもかつてはフリースケールのホームペ
ージからダウンロードできました(今は見当たらない)。
2010/6頃CodeWarriorがV6.2からV6.3UPし無償版でのファイル数32の制限も解消され
ました。
そこでCodeWarriorでプロジェクトを作り、ビルドできました(一応!)。
がまだタスク間を交互に走らせるテストが出来た状態です。
これからタスク例外処理を実装しようとしています。
疑問点がmakeoffsetの取り扱いです、このへんは。
http://www.mit.pref.miyagi.jp/embedded/TOPPERS/doc/user_man/jsp-1.4.3/index.ht
ml
TOPPERS/JSPカーネル ユーザズマニュアル
にも記述が無いようです、ネットで調べたところ
makeoffset.c
↓
処理系に対応する何らかの処理
↓
offset.h
ということをすれば良い。
と言うように思いますが、面倒なのがビット操作でこれはコンパイラ依存になってしま
います。
この処理をするスクリプトか無かったことと、さらに開発環境を変えるとスクリプトを
作り直す必要が出るかもしれません。
そこで私はビット操作を”C"にまかせ、下記のようにすると処理は少しかかりますがポ
ータビリティは良くなると考えているところてす。

cpu_support.Sを”C"に変更
cpu_support.c

void kernel_call_texrtn_chk(void){
  if(runtsk->enatex){
    kernel_call_texrtn();/*   タスク例外処理ルーチンの呼出し */
  }
}

asm void _kernel_dispatch(void){
---
---
        move.l _kernel_runtsk, a0               /* A0 を _runtsk に */
        add.l   TCB_texptn,a0
        tst.l (a0)              /* texptn が 0 でなければ           */
        bne _kernel_call_texrtn_chk         /*   タスク例外処理ルーチンの呼出
し */
dispatch_r_1:

offset.hはmakeoffset.cのマクロを展開し、下記のようにするとコンパイラ依存は無い
ようなのでスクリプトを作らずに実装できそうですがどんなものでしょうか。

offset.h
int     TCB_texptn=&(((TCB *) 0)->texptn);
int     TCB_msp=&(((TCB *) 0)->tskctxb.msp);
int     TCB_pc=&(((TCB *) 0)->tskctxb.pc);

よろしくお願いします。

有限会社 富士設計
大曲 不次
MGG03420 @ nifty.ne.jp
http://www.d1.dion.ne.jp/~fujisekk
携帯
http://www.d1.dion.ne.jp/~fujisekk/top_mobile.htm