NEC ELECTRONICS NEC ELECTRONICS
NEC electronics NEC electronics NEC
ホーム
アプリケーション
製品情報
先端技術
サポート
WEBショップ
ニュース&イベント
会社案内
header
GO
詳細検索機能/特性検索
サイトマップ お問い合わせ

その他全般


目次

    
FAQ-ID = 78k0r-nnn
728: RX78K0Rで使うことのできるメモリ・モデルは?
729: RX78K0R使用時、レジスタ・バンクを切り替えることはできますか?
730: RX78K0R使用時、”RA78K0R error E3405: Undefined symbol ‘_@RTARG00 in file ‘XXXX’”というエラーが返ります。
731: RX78K0R で、システムが暴走します。
732: サービス・コールを発行しても、期待した動作をしません。

78k0r
-728
RX78K0Rで使うことのできるメモリ・モデルは?
Q
RX78K0Rで使うことのできるメモリ・モデルは?
A
ラージ・モデルのみです。
他のメモリ・モデルには対応していません。
他のメモリ・モデルで動作させた場合、暴走する可能性があります。


ただし、以下の注意事項2点を守れば、他のメモリ・モデルに対応することができます。

  1. サービスコールへポインタを渡す際はfarポインタを渡す。


    サービスコールへnearポインタを渡してはいけません。
    nearポインタをサービスコールへ渡した場合、その後の動作は不定です。
    サービスコールへは以下のようにfarポインタを渡してください。

    ------------------------------
    VP __far *pk_msg;
    
    get_mpf(ID_MPF1, (VP __far *)&pk_msg);
    snd_mbx(ID_MBX1, (T_MSG __far *)pk_msg);
    ------------------------------
    
  2. RX78K0R提供ヘッダの一部修正。


    1の注意事項(サービスコールにはfarポインタを渡す)を守るために、 RX78K0R提供ヘッダを修正する必要があります。


    以下に修正箇所を示します。


    • inc78k0r/types.h
      <現状>
      ------------------------------
      typedef struct t_msg {
          struct t_msg *  msgnext;
      } T_MSG;
         
      typedef struct t_msg_pri {
          struct t_msg *  msgque;
          PRI   msgpri;
      } T_MSG_PRI;
      ------------------------------
      
      <修正>
      ------------------------------
      typedef struct t_msg {
          struct t_msg __far *  msgnext;
      } T_MSG;
         
      typedef struct t_msg_pri {
          struct t_msg __far *  msgque;
          PRI   msgpri;
      } T_MSG_PRI;
      ------------------------------
      
    • inc78k0r/packet.h
      <現状>
      ------------------------------
      typedef struct t_rmbx {
          ID wtskid;
          T_MSG * pk_msg;
      } T_RMBX;
      ------------------------------
      
      <修正>
      ------------------------------
      typedef struct t_rmbx {
          ID wtskid;
          T_MSG __far * pk_msg;
      } T_RMBX;
      ------------------------------
      

-78K0R-

この情報はお役にたちましたか?
back to top  
(2007/02)

78k0r
-729
RX78K0R使用時、レジスタ・バンクを切り替えることはできますか?
Q
RX78K0R使用時、レジスタ・バンクを切り替えることはできますか?
A
OS 初期化前(__urx_start 関数呼び出し前)に設定されたレジスタ・バンクから、他のレジスタ・バンクへ切り替えることはできません。
例外として、OS 管理外の割り込みハンドラ中では、レジスタ・バンク切り替えを行うことができます。

-78K0R-

この情報はお役にたちましたか?
back to top  
(2007/02)

78k0r
-730
RX78K0R使用時、”RA78K0R error E3405: Undefined symbol ‘_@RTARG00 in file ‘XXXX’”というエラーが返ります。
Q
RX78K0R使用時、”RA78K0R error E3405: Undefined symbol ‘_@RTARG00 in file ‘XXXX’”というエラーが返ります。
A
RX78K0Rのサンプルで提供されいてるファイル"smp78k0r\QB-78K0RKX3-asm\appli\src\saddr.asm"をリンクしてください。

このエラーはアプリケーションをすべてアセンブリ言語で記述した場合に発生します。
C言語のソース・ファイルや、CC78K0Rのライブラリをリンクしても解決することができます。

-78K0R-

この情報はお役にたちましたか?
back to top  
(2007/02)

78k0r
-731
RX78K0R で、システムが暴走します。
Q
RX78K0R で、システムが暴走します。
A
次のような原因が考えられます。
  • タスクのスタック領域、および割り込みスタック領域 (システム・スタック領域) は十分ありますか?


    リアルタイム OS を使ったアプリケーションで、うまく動作しなくなる原因のほとんどがこれです。
    つまり、タスク・スタックや割り込みスタックが、指定したサイズを突き抜け、他のタスクのスタックを破壊したり、RX78K0R のシステム管理領域を破壊したりして、結果的に暴走しています。
    RX78K0R は、アドレス情報を頼りに動くため、そのアドレスにおかしな値が入っていても疑わずに動作しますので、注意してください。


  • メモリ・モデルがラージ・モデルになっていますか?


    RX78K0Rはラージ・モデルにのみ対応しています。メモリ・モデルがラージ以外の場合、サービス・コールに渡されるポインタが不正になり、不正アドレスへアクセスする場合があります。

-78K0R-

この情報はお役にたちましたか?
back to top  
(2007/02)

78k0r
-732
サービス・コールを発行しても、期待した動作をしません。
Q
サービス・コールを発行しても、期待した動作をしません。
A
次のような原因が考えられます。
  • タスクの優先度によるもの


    待ちを解除するために、サービス・コールを発行したときに、解除されるタスクの優先度が他のタスクの優先度よりも低かった場合、すぐに動作を開始しないため、期待した動作をしないことがあります。


  • スタック破壊によるもの


    wai_flg や wai_sem などの待ち系のサービス・コールを発行し、その待ちを解除しようとしてもうまくいかない場合、タスク・スタックや割り込みスタックによる領域破壊が原因である可能性があります。
    タスク・スタックや割り込みスタックが設定値より伸び、それが リアルタイムOS (RXシリーズ) の管理領域を破壊し、その中の待ち情報などが破壊されていることがあります。

-78K0R-

この情報はお役にたちましたか?
back to top  
(2007/02)





















 ご利用にあたって  個人情報保護について  RSS       © 1995-2008  NEC Electronics Corporation