machine.hについて

初めて質問を投稿させていただきます。至らぬ点はご容赦ください。

現在、CS+で作成したRX62N向けのプロジェクトを、e2studio(GCC)へ移植してします。

色々と試した結果、e2studioで新規に作成したプロジェクトへ、Cのファイルをインポートしたのですが、e2studio(GCC)にはmachine.hが無いということで止まっています。

使用しているのは割り込みの制御に関するclrpsw_i()とsetpsw_i()ぐらいだと思うのですが、何かスマートな解決策をご存知でしたらご教授ねがえないでしょうか。

よろしくお願いいたします。

Parents
  • higeさん、こんにちは。NoMaYと申します。

    RX向けGCCに関しては、以下のページにRX向け特有の仕様が記載されています。今回の件ですと、そのページに記載されている以下のビルトイン関数を組み合わせて、CC-RXのビルトイン関数と等価なインライン関数を自前machine.hに書く手がひとつです。また、もうひとつの手として、e2 studioにはCC-RXプロジェクトをRX向けGCCプロジェクトに変換する機能があって、その機能の為に互換machine.hが既に存在しています。(e2 studio 2023-01にもありました。) けれども、以下のスレッドで中を見た時ちょっと怪しげだなぁ、と思って、それ以来ずっとその印象が残ったままです。ただ、私の個人の過去の印象ですので、今はもうそんなことは無くなっている、かも知れません。

    Renesas - GNURX Migration Guide
    llvm-gcc-renesas.com/migration-guides/rx/index.html

    int __builtin_rx_mvfc (int)
    Generates the mvfc machine instruction which reads the control register specified in its argument and returns its value. The integer parameter corresponds to control registers as follows:
    `0x0 psw'
    `0x2 usp'
    `0x3 fpsw'
    `0x4 cpen'
    `0x8 bpsw'
    `0x9 bpc'
    `0xA isp'
    `0xB fintv'
    `0xc intb'
    。。。以下省略。。。


    void __builtin_rx_setpsw (int)
    Generates the setpsw machine instruction to set the specified bit in the processor status word.



    GNURX用のCCRXmachine.hとCCRXmachine.cというソースがe2 studioフォルダにありました(内容は概ね名前から予想される通りのものでした)
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/5046/gnurx-ccrxmachine-h-ccrxmachine-c-e2-studio

    私の場合はe2 studio 2023-01のSupportFilesフォルダの以下にありました。(私はフォルダ場所をカスタマイズしているで別の場所になっているかも知れません。もしそうでしたら、ごめんなさい。)

    .eclipse/com.renesas.platform_733684649/internal/projectgen/rx/Generate/CCRXConversion/inc/CCRXmachine.h

     

Reply
  • higeさん、こんにちは。NoMaYと申します。

    RX向けGCCに関しては、以下のページにRX向け特有の仕様が記載されています。今回の件ですと、そのページに記載されている以下のビルトイン関数を組み合わせて、CC-RXのビルトイン関数と等価なインライン関数を自前machine.hに書く手がひとつです。また、もうひとつの手として、e2 studioにはCC-RXプロジェクトをRX向けGCCプロジェクトに変換する機能があって、その機能の為に互換machine.hが既に存在しています。(e2 studio 2023-01にもありました。) けれども、以下のスレッドで中を見た時ちょっと怪しげだなぁ、と思って、それ以来ずっとその印象が残ったままです。ただ、私の個人の過去の印象ですので、今はもうそんなことは無くなっている、かも知れません。

    Renesas - GNURX Migration Guide
    llvm-gcc-renesas.com/migration-guides/rx/index.html

    int __builtin_rx_mvfc (int)
    Generates the mvfc machine instruction which reads the control register specified in its argument and returns its value. The integer parameter corresponds to control registers as follows:
    `0x0 psw'
    `0x2 usp'
    `0x3 fpsw'
    `0x4 cpen'
    `0x8 bpsw'
    `0x9 bpc'
    `0xA isp'
    `0xB fintv'
    `0xc intb'
    。。。以下省略。。。


    void __builtin_rx_setpsw (int)
    Generates the setpsw machine instruction to set the specified bit in the processor status word.



    GNURX用のCCRXmachine.hとCCRXmachine.cというソースがe2 studioフォルダにありました(内容は概ね名前から予想される通りのものでした)
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/5046/gnurx-ccrxmachine-h-ccrxmachine-c-e2-studio

    私の場合はe2 studio 2023-01のSupportFilesフォルダの以下にありました。(私はフォルダ場所をカスタマイズしているで別の場所になっているかも知れません。もしそうでしたら、ごめんなさい。)

    .eclipse/com.renesas.platform_733684649/internal/projectgen/rx/Generate/CCRXConversion/inc/CCRXmachine.h

     

Children
  • NoMaYさん

    とても詳しく教えていただきありがとうございます。

    今回は古いソフトの移植とあり、あまり時間をかける事が出来ないので、まずはCCRXmachineを使い動作を確認してみようと思います。

    またSupportFilesフォルダという存在を知らなかったので、ファイルを探すのに苦労しましたが、偶然にも下記方法で見つけることができました。ご存知かもしれませんが参考までに記載します。

    e2studio→ヘルプ→e2studioについて→インストールの詳細→SupportFoldersタグ

    また素朴な疑問なのですが、初めからe2studio(GCC)を使用しRXを動かしている方は、割込み禁止などをする場合にビルトイン関数を使われるのでしょうか?

    今後はe2studio(GCC)を使うことが増えそうなので、参考までに教えていただけたらと思います。

    本当にありがとうございました。助かりました。