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"

 

Parents
  • NoMaYさん

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

    種々調査いただきありがとうございます。本件調べてみます。
    少し開発リソースの空きがないので時間がかかりそうです。
    #誰かの質問を誰かに聞く前には、自分で解釈した言葉で聞くようにしています

    もしかするとエビスクラウンさんの指摘で直るのかもしれませんが、
    デフォルト設定値できっちり最適化がかかりきる、というのも大事だと思っています。
    色んな環境でベンチマークをとってマイコン選定する人が居たとすると、
    デフォルト設定で性能が出せないと競合のマイコンに負けてしまいますからね。

    以上です
Reply
  • NoMaYさん

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

    種々調査いただきありがとうございます。本件調べてみます。
    少し開発リソースの空きがないので時間がかかりそうです。
    #誰かの質問を誰かに聞く前には、自分で解釈した言葉で聞くようにしています

    もしかするとエビスクラウンさんの指摘で直るのかもしれませんが、
    デフォルト設定値できっちり最適化がかかりきる、というのも大事だと思っています。
    色んな環境でベンチマークをとってマイコン選定する人が居たとすると、
    デフォルト設定で性能が出せないと競合のマイコンに負けてしまいますからね。

    以上です
Children
No Data