CC-RXの未使用の変数/関数を削除する最適化の効き目がGNURX/ICCRXより歴然と弱いのですが、、、

シェルティさん、こんにちは。NoMaYです。

別スレッドのFreeRTOSのRTOSDemoプログラムを作っていて気付いたのですが、掲題の件、以下の結果となっていて、CC-RXでなぜ効き目が弱いのか、シェルティさん経由で、CC-RX開発チームに調べて頂くことは出来ないでしょうか?(プログラムの構造上、FullDemoとSimpleBlinkyDemoの2種類のDemoを切り替えられるようになっていて、SimpleBlinkyDemoに切り替えた場合には沢山の未使用の変数/関数が生じるようになっているものです。) なお、使用したCC-RXはV3.02です。

CC-RX版のプロジェクトのファイル一式 (e2 studioにzipファイルを直接インポートすることは不可。CS+にも対応。)
FreeRTOSDemo_CCRX_20200707.zip   983KB

CC-RXの場合

PROGRAM SECTION:  0000f8fd Byte(s) ← 63,741 (十進表記)
ROMDATA SECTION:  00001c19 Byte(s) ←  7,193 (十進表記)
RAMDATA SECTION:  0000ea1a Byte(s) ← 59,930 (十進表記)

ICCRXの場合

  19'345 bytes of readonly  code memory
   1'920 bytes of readonly  data memory
  54'978 bytes of readwrite data memory

GNURX

   text    data     bss     dec     hex filename
  28084    1092   55156   84332   1496c RTOSDemo_GNURX.elf

もっとも、調べて頂くことは出来ないでしょうか、とは言ったものの、ICCRXについてもGNURXについても分からないだろうと思いますので、CC-RXの挙動で取っ掛かりになるのではないだろうかと思った点を、以下に書いてみました。

CC-RXの未使用の変数/関数を削除する最適化の疑問点

● リンカにインフォメーションメッセージでunused symbolを表示させたところ、以下のようなdeleteされたシンボルのリストが表示されたのですが、それでもずっと沢山のunusedシンボルのリストが表示されました。直感的に、なぜunusedシンボルが残っているのか(deleteされていないのか)不思議な気がするのです、、、(その一方で、_Except_Vectorsや_Reset_Vectorがunusedになっているのも不思議ですが、、、)

リンカのインフォメーションメッセージのdeleteされたシンボルのリスト

6758.FreeRTOSDemo_delete_symbols_20200707.txt
M0560004:"DefaultBuild\lowsrc.obj"-"_sml_buf" deleted by optimization
M0560004:"DefaultBuild\r_byteq.obj"-"_R_BYTEQ_Close" deleted by optimization
M0560004:"DefaultBuild\r_byteq.obj"-"_R_BYTEQ_GetVersion" deleted by optimization
M0560004:"DefaultBuild\r_dtc_rx.obj"-"_R_DTC_CreateSeq" deleted by optimization
M0560004:"DefaultBuild\r_dtc_rx.obj"-"_R_DTC_Close" deleted by optimization
M0560004:"DefaultBuild\r_dtc_rx.obj"-"_R_DTC_GetVersion" deleted by optimization
M0560004:"DefaultBuild\r_dtc_rx_target.obj"-"_r_dtc_module_disable" deleted by optimization
M0560004:"DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_PortWrite" deleted by optimization
M0560004:"DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_PortRead" deleted by optimization
M0560004:"DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_PortDirectionSet" deleted by optimization
M0560004:"DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_PinRead" deleted by optimization
M0560004:"DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_PinControl" deleted by optimization
M0560004:"DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_GetVersion" deleted by optimization
M0560004:"DefaultBuild\r_gpio_rx.obj"-"_gpio_port_addr_get" deleted by optimization
M0560004:"DefaultBuild\r_gpio_rx.obj"-"_gpio_pin_function_check" deleted by optimization
M0560004:"DefaultBuild\r_gpio_rx.obj"-"_gpio_set_output_type" deleted by optimization
M0560004:"DefaultBuild\r_sci_rx_pinset.obj"-"_R_SCI_PinSet_SCI9" deleted by optimization
M0560004:"DefaultBuild\r_sci_rx.obj"-"_R_SCI_Receive" deleted by optimization
M0560004:"DefaultBuild\r_sci_rx.obj"-"_R_SCI_Close" deleted by optimization
M0560004:"DefaultBuild\r_sci_rx.obj"-"_R_SCI_GetVersion" deleted by optimization
M0560004:"DefaultBuild\r_sci_rx72n.obj"-"_sci_disable_ints" deleted by optimization
M0560004:"xfofind"-"__Fofind" deleted by optimization
M0560004:"xctype"-"__Getpctype" deleted by optimization
M0560004:"xstate"-"__Getpmbstate" deleted by optimization
M0560004:"xwcstate"-"__Getpwcstate" deleted by optimization


リンカのインフォメーションメッセージのunusedシンボルのリスト
8838.FreeRTOSDemo_unused_symbols_20200707.txt
M0560400:Unused symbol "DefaultBuild\event_groups.obj"-"_uxEventGroupGetNumber"
M0560400:Unused symbol "DefaultBuild\event_groups.obj"-"_vEventGroupSetNumber"
M0560400:Unused symbol "DefaultBuild\heap_4.obj"-"_vPortInitialiseBlocks"
M0560400:Unused symbol "DefaultBuild\heap_4.obj"-"_vPortGetHeapStats"
M0560400:Unused symbol "DefaultBuild\port.obj"-"_p_vSoftwareInterruptEntry"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_uxQueueMessagesWaitingFromISR"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_vQueueDelete"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_uxQueueGetQueueNumber"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_vQueueSetQueueNumber"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_ucQueueGetQueueType"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_xQueueIsQueueEmptyFromISR"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_xQueueCreateSet"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_xQueueAddToSet"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_xQueueRemoveFromSet"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_xQueueSelectFromSet"
M0560400:Unused symbol "DefaultBuild\queue.obj"-"_xQueueSelectFromSetFromISR"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferGenericCreate"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_vStreamBufferDelete"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferReset"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferSetTriggerLevel"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferBytesAvailable"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferSend"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferSendFromISR"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferReceive"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferNextMessageLengthBytes"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferReceiveFromISR"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferIsEmpty"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferIsFull"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferSendCompletedFromISR"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_xStreamBufferReceiveCompletedFromISR"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_uxStreamBufferGetStreamBufferNumber"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_vStreamBufferSetStreamBufferNumber"
M0560400:Unused symbol "DefaultBuild\stream_buffer.obj"-"_ucStreamBufferGetStreamBufferType"
M0560400:Unused symbol "DefaultBuild\tasks.obj"-"_uxTaskPriorityGetFromISR"
M0560400:Unused symbol "DefaultBuild\tasks.obj"-"_xTaskResumeFromISR"
M0560400:Unused symbol "DefaultBuild\tasks.obj"-"_vTaskEndScheduler"
M0560400:Unused symbol "DefaultBuild\tasks.obj"-"_pcTaskGetName"
M0560400:Unused symbol "DefaultBuild\tasks.obj"-"_uxTaskGetSystemState"
M0560400:Unused symbol "DefaultBuild\tasks.obj"-"_xTaskCatchUpTicks"
M0560400:Unused symbol "DefaultBuild\tasks.obj"-"_uxTaskGetTaskNumber"
M0560400:Unused symbol "DefaultBuild\tasks.obj"-"_vTaskSetTaskNumber"
M0560400:Unused symbol "DefaultBuild\tasks.obj"-"_uxTaskGetStackHighWaterMark"
M0560400:Unused symbol "DefaultBuild\timers.obj"-"_xTimerGetTimerDaemonTaskHandle"
M0560400:Unused symbol "DefaultBuild\timers.obj"-"_xTimerGetPeriod"
M0560400:Unused symbol "DefaultBuild\timers.obj"-"_xTimerGetExpiryTime"
M0560400:Unused symbol "DefaultBuild\timers.obj"-"_xTimerPendFunctionCall"
M0560400:Unused symbol "DefaultBuild\timers.obj"-"_uxTimerGetTimerNumber"
M0560400:Unused symbol "DefaultBuild\timers.obj"-"_vTimerSetTimerNumber"
M0560400:Unused symbol "DefaultBuild\IntSemTest.obj"-"_xInterruptGivePeriod"
M0560400:Unused symbol "DefaultBuild\UARTCommandConsole.obj"-"_vOutputString"
M0560400:Unused symbol "DefaultBuild\main_full.obj"-"_main_full"
M0560400:Unused symbol "DefaultBuild\main_full.obj"-"_vFullDemoTickHook"
M0560400:Unused symbol "DefaultBuild\freertos_object_init.obj"-"_Kernel_Object_init"
M0560400:Unused symbol "DefaultBuild\freertos_object_init.obj"-"_Object_init_manual"
M0560400:Unused symbol "DefaultBuild\freertos_start.obj"-"_demo_main"
M0560400:Unused symbol "DefaultBuild\r_smc_interrupt.obj"-"_R_Interrupt_Create"
M0560400:Unused symbol "DefaultBuild\dbsct.obj"-"__CTBL"
M0560400:Unused symbol "DefaultBuild\dbsct.obj"-"__DTBL"
M0560400:Unused symbol "DefaultBuild\dbsct.obj"-"__BTBL"
M0560400:Unused symbol "DefaultBuild\dbsct.obj"-"_deadSpace"
M0560400:Unused symbol "DefaultBuild\lowsrc.obj"-"_sml_buf"
M0560400:Unused symbol "DefaultBuild\lowsrc.obj"-"_environ"
M0560400:Unused symbol "DefaultBuild\lowsrc.obj"-"_read"
M0560400:Unused symbol "DefaultBuild\lowsrc.obj"-"_lseek"
M0560400:Unused symbol "DefaultBuild\r_bsp_common.obj"-"_R_BSP_GetVersion"
M0560400:Unused symbol "DefaultBuild\r_bsp_common.obj"-"_R_BSP_GetIClkFreqHz"
M0560400:Unused symbol "DefaultBuild\r_bsp_cpu.obj"-"_R_BSP_InterruptsDisable"
M0560400:Unused symbol "DefaultBuild\r_bsp_cpu.obj"-"_R_BSP_SoftwareReset"
M0560400:Unused symbol "DefaultBuild\r_bsp_interrupts.obj"-"_R_BSP_InterruptRead"
M0560400:Unused symbol "DefaultBuild\r_bsp_locking.obj"-"_R_BSP_SoftwareUnlock"
M0560400:Unused symbol "DefaultBuild\r_bsp_software_interrupt.obj"-"_R_BSP_SoftwareInterruptClose"
M0560400:Unused symbol "DefaultBuild\r_bsp_software_interrupt.obj"-"_R_BSP_SoftwareInterruptSetTask"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___MDEreg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___OFS0reg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___OFS1reg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___TMINFreg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___BANKSELreg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___SPCCreg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___TMEFreg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___OSIS1reg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___OSIS2reg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___OSIS3reg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___OSIS4reg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___FAWreg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"___ROMCODEreg"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"_Except_Vectors"
M0560400:Unused symbol "DefaultBuild\vecttbl.obj"-"_Reset_Vector"
M0560400:Unused symbol "DefaultBuild\r_byteq.obj"-"_R_BYTEQ_Close"
M0560400:Unused symbol "DefaultBuild\r_byteq.obj"-"_R_BYTEQ_GetVersion"
M0560400:Unused symbol "DefaultBuild\r_dtc_rx.obj"-"_R_DTC_CreateSeq"
M0560400:Unused symbol "DefaultBuild\r_dtc_rx.obj"-"_R_DTC_Close"
M0560400:Unused symbol "DefaultBuild\r_dtc_rx.obj"-"_R_DTC_GetVersion"
M0560400:Unused symbol "DefaultBuild\r_dtc_rx_target.obj"-"_r_dtc_module_disable"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_PortWrite"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_PortRead"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_PortDirectionSet"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_PinRead"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_PinControl"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx.obj"-"_R_GPIO_GetVersion"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx.obj"-"_gpio_port_addr_get"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx.obj"-"_gpio_pin_function_check"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx.obj"-"_gpio_set_output_type"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx72n.obj"-"_g_gpio_open_drain_n_support"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx72n.obj"-"_g_gpio_open_drain_p_support"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx72n.obj"-"_g_gpio_pull_up_support"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx72n.obj"-"_g_gpio_dscr_support"
M0560400:Unused symbol "DefaultBuild\r_gpio_rx72n.obj"-"_g_gpio_dscr2_support"
M0560400:Unused symbol "DefaultBuild\r_sci_rx_pinset.obj"-"_R_SCI_PinSet_SCI9"
M0560400:Unused symbol "DefaultBuild\r_sci_rx.obj"-"_R_SCI_Receive"
M0560400:Unused symbol "DefaultBuild\r_sci_rx.obj"-"_R_SCI_Close"
M0560400:Unused symbol "DefaultBuild\r_sci_rx.obj"-"_R_SCI_GetVersion"
M0560400:Unused symbol "DefaultBuild\r_sci_rx72n.obj"-"_sci_disable_ints"
M0560400:Unused symbol "xfofind"-"__Fofind"
M0560400:Unused symbol "xprintf"-"_stderr"
M0560400:Unused symbol "xctype"-"__Getpctype"
M0560400:Unused symbol "xctype"-"__Tls_setup__Ctype"
M0560400:Unused symbol "xstate"-"__Getpmbstate"
M0560400:Unused symbol "localeco"-"__Tls_setup__Locale"
M0560400:Unused symbol "xwcstate"-"__Getpwcstate"
M0560400:Unused symbol "xvalues"-"__Denorm"
M0560400:Unused symbol "xvalues"-"__Eps"
M0560400:Unused symbol "xvalues"-"__Hugeval"
M0560400:Unused symbol "xvalues"-"__Nan"
M0560400:Unused symbol "xvalues"-"__Snan"
M0560400:Unused symbol "xvalues"-"__Rteps"
M0560400:Unused symbol "xvalues"-"__Xbig"
M0560400:Unused symbol "xvalues"-"__Zero"

 

  • こんにちは。NoMaYです。

    RX Driver Package V1.35で以下の対応が入ったようです。



    /***********************************************************************************************************************
    Pre-processor Directives
    ***********************************************************************************************************************/
    /* Set this as the entry point from a power-on reset */
    #if defined(__CCRX__)
    #if BSP_CFG_CONFIGURATOR_VERSION < 2140
        /* The PResetPRG section of compiler setting are not added by Smart configurator if you are using Smart Configurator
           for RX V2.13.0 (equivalent to e2 studio 2022-04) or earlier version.
           Please update Smart configurator to Smart Configurator for RX V2.14.0 (equivalent to e2 studio 2022-07) or
           later version.
         */
        #error "To use this version of BSP, you need to upgrade Smart configurator. Please upgrade Smart configurator. If you don't use Smart Configurator, please change value of BSP_CFG_CONFIGURATOR_VERSION in r_bsp_config.h."
    #endif
    #pragma section ResetPRG /* Put PResetPRG section at the start address of the code flash. */
    #pragma entry PowerON_Reset_PC
    #endif /* defined(__CCRX__) */

     
    [関連リンク]

    RX MCUのROM/RAM usage sizeがRenesas QuickConnect IoTのsample programでボロ負け(very worse than)している件(RA MCUやRL78 MCUに比べて)
    japan.renesasrulz.com/cafe_rene/f/analog/7575/rx-mcu-rom-ram-usage-size-renesas-quickconnect-iot-sample-program-very-worse-than-ra-mcu-rl78-mcu