(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