こんにちは。NoMaYです。最近、以下のスレッドに関わったのですが、e2 studioの式ビューの表示が間違っていたので調べることにしました。__sectop(), __secend()でセンションの値を取得することができません。community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rl78/f/forum18/9544/__sectop-__secend/46666#46666以下、そのスレッドのe2 studioの画面コピーです。(e2 studio 2022-07+CC-RL V1.11+最適化無しでビルド)サンプルプログラムのe2 studio FWUpdateSample projectのフォルダr11an0227ej0312-rl78-lora/samples/project/e2studio/rl78g23-128pfpb_sx126x/FWUpdateSample/以下、同じくそのスレッドでe2 studioのDebugger Consoleで確認してみた時の値です。rl78-elf-gdb内では正しく認識されていますね。(高度に専門的な話になるけれども、rl78-elf-gdb側のMIコマンドの値返却処理がバグっている?、のかなぁ、、、)p dsec_table$2 = {{rom_sectop = 0x11e1 " ", <incomplete sequence \230>, rom_secend = 0x1506 " \006ク\004\061スク\002ィ\004\\\001\b\\\340\b1^", <incomplete sequence \230>, ram_sectop = 0xf4759 <R_RFD_Init> ""}, {rom_sectop = 0x1506 " \006ク\004\061スク\002ィ\004\\\001\b\\\340\b1^", <incomplete sequence \230>, rom_secend = 0x15b2 " \004\230\001掌", ram_sectop = 0xf4a7e <R_RFD_EraseCodeFlashReq> ""}, {rom_sectop = 0x15b2 " \004\230\001掌", rom_secend = 0x1709 <R_RFD_EraseDataFlashReq> " \004\230\001\360\f\020ク\002ネ", ram_sectop = 0xf4b2a <R_RFD_SetExtraBootAreaReq> ""}, {rom_sectop = 0xc96 "マx", rom_secend = 0x11e1 " ", <incomplete sequence \230>, ram_sectop = 0xf4c81 <R_CFlash_ResetFW> ""}}[関連リンク]RL78/G23, RL78/G14 Firmware Update over LoRaWAN® Sample ApplicationPDFwww.renesas.com/jp/ja/document/apn/firmware-update-over-lorawan-sample-application-rev312LoRa(R)-based Wireless Software Package(V3.12)ZIPwww.renesas.com/jp/ja/document/scd/lorar-based-wireless-software-packagev312
サンプルプロジェクトのプロパティを何気なく見ていたところ-far_romオプションが設定されていることに気付いたので、ものは試しということで、先ほど新規に作成したプロジェクトでも設定してみたところ、なんと、現象が再現してしまいました。現象が再現するプロジェクトのファイル一式を以下のzipファイルに固めました。ここから先はルネサスさんにて不具合解析をされるのが効率的かと思われます。了e2studio_expression_view_issue_20220917.zipe2studio_expression_view_issue_20220918.zip [追記] 2022/09/18 更新しました以下、e2 studioの画面コピーです。サンプルプロジェクトでは-far_romオプションが設定されていた先ほど新規に作成したプロジェクトでも-far_romオプションを設定してみた現象が再現した[追記] 2022/09/18この際ですので、もう少し調べてみました。-far_romオプション設定時、式ビューの表示で、以下のnormalの表示は正しいものでしたが、array[0]の表示は間違っていました。ちなみに、その場合には、Debugger Consoleの表示でも同様に、normalの表示は正しいものでしたが、array[0]の表示は間違っていました。(ですので、単に、「rl78-elf-gdb側のMIコマンドの値返却処理がバグっている?、のかなぁ、、、」では済まないようです、、、)
const unsigned short normal = 1234;const unsigned short array[1] = { 2345 };volatile unsigned short debug; /* volatile is intended for debug purpose. */void main(void){ debug = array[0]; while(1);}
以下、e2 studioの画面コピーです。ちなみに、CC-RLの-far_romオプションというのは以下の画面コピーの仕様のコンパイルオプションです。以下、CC-RLのヘルプの画面コピーです。