(toppers-users 3179) Re: TOPPERS/ASP移植 makeoffset.cおよびoffset.incについて

kouta wada kouta.wada @ konicaminolta.jp
2010年 4月 14日 (水) 18:53:49 JST


ヴィッツ
杉本様

ご回答いただきありがとうございます。
問題ないようで安心しました。

また質問させていただくことがあると思います。
お手数ですが、ご回答の程、よろしくお願い致します。

以上、よろしくお願い致します。


> -----Original Message-----
> From: Meika Sugimoto [mailto:s_meika @ witz-inc.co.jp]
> Sent: Wednesday, April 14, 2010 5:48 PM
> To: users @ toppers.jp
> Subject: (toppers-users 3178) Re: TOPPERS/ASP移植 makeoffset.cおよび
> offset.incについて
> 
> Wada様
> 
> ヴィッツの杉本と申します。
> 
> 1) makeoffset.cのコンパイルエラーの対処方法について
> 
> Wada様の対応方法で問題ありません。
> 単に構造体に対してメモリ値が0となるように
> なればよいため、コンパイルが通れば大丈夫です。
> 
> 2) offset.incの作成について
> 
> お気付きになったので問題ないと思いますが、M32Cと同等の手順を
> 踏めばおそらくR32Cでも大丈夫です。
> 
> 大変申し訳ないのですが、makeoffset.cのコメント部分に
> ついては現状のM32Cのmakeoffsetの手順とは違っています。
> (M32Cを担当しているのが私なのですが、ここの編集を失念していました)
> 
> 実際には該当部分に'1'をセットした定数値を解析することで
> オフセットを得ています。
> 
> 以上、よろしくお願いします。
> 
> 
> kouta wada さんは書きました:
> > はじめまして。
> >
> > コニカミノルタセンシング派遣のKota Wadaと申します。
> >
> > TOPPERS/ASPをR32Cへ移植を行っています。
> >
> > 移植方針としてはM32C-HEWを使用して、
> > R32C用に変更しようとしています。
> >
> > そこで質問が2点あります。
> >  1) makeoffset.cのコンパイルエラーの対処方法について
> >  2) offset.incの作成について(R32C用の作成方法はありますか?)
> >
> > *******
> > 1) makeoffset.cのコンパイルエラーの対処方法について
> >
> > HEWの環境で、makeoffset.cをコンパイルすると
> > 以下のコンパイルエラーが発生してしまいます。
> >
> > (エラー箇所)
> > static const TINIB ____BEGIN_OFF_TINIB_task = {
> >   0 , NULL , (TASK)1 , 0 , 0 , NULL , 0 , NULL
> >  };
> >
> > (エラー内容)
> > C:\Workspace\asp\arch\m32c_nc308\makeoffset.c(226) : [Error(ccom)]
> invalid '=' operand
> > C:\Workspace\asp\arch\m32c_nc308\makeoffset.c(226) : [Error(ccom)]
> invalid '=' operand
> > C:\Workspace\asp\arch\m32c_nc308\makeoffset.c(226) : [Error(ccom)]
> invalid '=' operand
> > C:\Workspace\asp\arch\m32c_nc308\makeoffset.c(226) : [Warning(ccom)]
> init elements overflow,ignored
> >
> >
> > TINB型は以下のようにtypedefされています。
> >
> > typedef struct task_initialization_block {
> >  ATR   tskatr;   /* タスク属性 */
> >  intptr_t exinf;   /* タスクの拡張情報 */
> >  TASK  task;   /* タスクの起動番地 */
> >  uint_t  ipriority;  /* タスクの起動時優先度(内部表現) */
> >  SIZE  stksz;   /* スタック領域のサイズ(丸めた値) */
> >  void  *stk;   /* スタック領域の先頭番地 */
> >
> >  ATR   texatr;   /* タスク例外処理ルーチン属性 */
> >  TEXRTN  texrtn;   /* タスク例外処理ルーチンの起動番地 */
> > } TINIB;
> >
> > NULLはNC100(R32CのCコンパイラ)のstddef.hで
> > 以下のように定義されていますので、
> > #define NULL ((void _far *)0)
> >
> > intptr_t型(longのtypedef)にNULLを直接入れることで
> > エラーとなったと思われます。
> >
> > そこで、以下のようにNULLをキャストすることで、
> > コンパイルエラーは解消しましたが、対応に問題はありませんでしょうか。
> >
> > static const TINIB ____BEGIN_OFF_TINIB_task = {
> >   0 , (intptr_t)NULL , (TASK)1 , 0 , 0 , NULL , 0 , NULL
> >  };
> >
> > *******
> > 2) offset.incの作成について
> >
> > makeoffset.cのコメントにある、「offset.incの作り方」を参考に
> > makeoffset.cをコンパイルし、makeoffset.a30を出力しましたが、
> > R32C用コンパイラのため、「! BEGIN」に対応したコードがありません。
> > R32C用コンパイラから吐き出されるコードでoffset.incを作成する
> > 方法はありませんでしょうか。
> >
> > *******
> > ※初めての投稿で、必要な情報が抜けているかもしれません。
> > その点はご指摘を頂ければと思います。
> >
> >
> >
> >
> 
> 
> --
> ※ 勤務地が変わりました
> =============================
>  (株)ヴィッツ 組込制御開発部
>   杉本 明加
>    MAIL:s_meika @ witz-inc.co.jp
> 
>     〒530-0041 大阪市北区天神橋6-3-16 朝日生命天六ビル7F
>        TEL:(06)4801-5020   FAX:(06)4801-5021
> =============================