幾つかの品種だけRX MCUs internal USB peripheral registersのbitfieldがunavailableなiodefine.hがありますが作成ミスではないでしょうか?

こんにちは。NoMaYです。

最近、以下のスレッドに関わったのですが、どうもiodefine.hの作成ミスがあったのではないかなぁと思われましたので、スレッドを立ててみることにしました。

iodefine.h で、IODEFINE_H_HISTORY キーワードについて
japan.renesasrulz.com/cafe_rene/f/forum5/8446/iodefine-h-iodefine_h_history

続く。

(すみません、上記スレッドの投稿主さんのhirakuni45さんにおかれましては、当方の投稿が終了するまで暫くお待ち頂ければ、と思います。あわてない、あわてない、との、一休さんの心持も良いかと思うのです。)

Parents
  • こんにちは。NoMaYです。

    関わったスレッドはGCCの場合の話でしたが、まずCC-RXの場合を調べることにしました。CS+のRX向け(CC-RX向け)のiodefine.hの原本がまとめられているフォルダをgrepしてみると、大まかに以下の3種類が見受けられました。

    (1) ビットフィールド定義が使えないもの - その1 - #ifdef IODEFINE_H_HISTORY~#endifの条件コンパイルで除かれている
    (2) ビットフィールド定義が使えないもの - その2 - //にてビットフィールド定義がコメントアウトされている
    (3) ビットフィールド定義が使えるもの

    grepしてみた時の画面コピー:


    具体例:

    (1) ビットフィールド定義が使えないもの - その1 - #ifdef IODEFINE_H_HISTORY~#endifの条件コンパイルで除かれている
    品種: RX66T(下記内容)、RX72T

    typedef struct st_usb {
        union {
            unsigned short WORD;
    #ifdef IODEFINE_H_HISTORY
            struct {
                unsigned short :5;
                unsigned short SCKE:1;
                unsigned short :3;
                unsigned short DCFM:1;
                unsigned short DRPD:1;
                unsigned short DPRPU:1;
                unsigned short :3;
                unsigned short USBE:1;
            } BIT;
    #endif
        } SYSCFG;
    …略…

     
    (2) ビットフィールド定義が使えないもの - その2 - //にてビットフィールド定義がコメントアウトされている
    品種: RX64M(下記内容)、RX71M、RX230、RX231、RX2Z4(謎の品種)

    struct st_usb0 {
        union {
            unsigned short WORD;
    //      struct {
    //          unsigned short :5;
    //          unsigned short SCKE:1;
    //          unsigned short :3;
    //          unsigned short DCFM:1;
    //          unsigned short DRPD:1;
    //          unsigned short DPRPU:1;
    //          unsigned short :3;
    //          unsigned short USBE:1;
    //      } BIT;
        } SYSCFG;
    …略…

     
    (3) ビットフィールド定義が使えるもの
    品種: RX62N(下記内容)、左記と上記の(1)と(2)を除くUSB内蔵品

    struct st_usb0 {
        union {
            unsigned short WORD;
            struct {
                unsigned short :5;
                unsigned short SCKE:1;
                unsigned short :3;
                unsigned short DCFM:1;
                unsigned short DRPD:1;
                unsigned short DPRPU:1;
                unsigned short :3;
                unsigned short USBE:1;
            } BIT;
        } SYSCFG;
    …略…

     
    続く。

Reply
  • こんにちは。NoMaYです。

    関わったスレッドはGCCの場合の話でしたが、まずCC-RXの場合を調べることにしました。CS+のRX向け(CC-RX向け)のiodefine.hの原本がまとめられているフォルダをgrepしてみると、大まかに以下の3種類が見受けられました。

    (1) ビットフィールド定義が使えないもの - その1 - #ifdef IODEFINE_H_HISTORY~#endifの条件コンパイルで除かれている
    (2) ビットフィールド定義が使えないもの - その2 - //にてビットフィールド定義がコメントアウトされている
    (3) ビットフィールド定義が使えるもの

    grepしてみた時の画面コピー:


    具体例:

    (1) ビットフィールド定義が使えないもの - その1 - #ifdef IODEFINE_H_HISTORY~#endifの条件コンパイルで除かれている
    品種: RX66T(下記内容)、RX72T

    typedef struct st_usb {
        union {
            unsigned short WORD;
    #ifdef IODEFINE_H_HISTORY
            struct {
                unsigned short :5;
                unsigned short SCKE:1;
                unsigned short :3;
                unsigned short DCFM:1;
                unsigned short DRPD:1;
                unsigned short DPRPU:1;
                unsigned short :3;
                unsigned short USBE:1;
            } BIT;
    #endif
        } SYSCFG;
    …略…

     
    (2) ビットフィールド定義が使えないもの - その2 - //にてビットフィールド定義がコメントアウトされている
    品種: RX64M(下記内容)、RX71M、RX230、RX231、RX2Z4(謎の品種)

    struct st_usb0 {
        union {
            unsigned short WORD;
    //      struct {
    //          unsigned short :5;
    //          unsigned short SCKE:1;
    //          unsigned short :3;
    //          unsigned short DCFM:1;
    //          unsigned short DRPD:1;
    //          unsigned short DPRPU:1;
    //          unsigned short :3;
    //          unsigned short USBE:1;
    //      } BIT;
        } SYSCFG;
    …略…

     
    (3) ビットフィールド定義が使えるもの
    品種: RX62N(下記内容)、左記と上記の(1)と(2)を除くUSB内蔵品

    struct st_usb0 {
        union {
            unsigned short WORD;
            struct {
                unsigned short :5;
                unsigned short SCKE:1;
                unsigned short :3;
                unsigned short DCFM:1;
                unsigned short DRPD:1;
                unsigned short DPRPU:1;
                unsigned short :3;
                unsigned short USBE:1;
            } BIT;
        } SYSCFG;
    …略…

     
    続く。

Children
No Data