Difference between revisions of "Cflow"
Jump to navigation
Jump to search
(Create page for cflow utility, add example use on STM32 clock init code.) |
(No difference)
|
Latest revision as of 05:34, 25 August 2025
Cflow can trace routine call frames, can follow all routine calls neglecting whether tests would skip the calls at run time. Useful for seeing which execution paths could possibly be called.
ted@localhost:~/projects/zephyr-project/zephyr/drivers$ cflow -m stm32_clock_control_init ~/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c cflow:/home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:99: plln_mul redefined cflow:/home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:94: this is the place of previous definition cflow:/home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:99: pllout_div redefined cflow:/home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:95: this is the place of previous definition cflow:/home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:107: __unused redefined cflow:/home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:91: this is the place of previous definition cflow:/home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:530: __unused redefined cflow:/home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:107: this is the place of previous definition cflow:/home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:548: __unused redefined cflow:/home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:530: this is the place of previous definition stm32_clock_control_init() <int stm32_clock_control_init (const struct device *dev) at /home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:825>: ARG_UNUSED() config_enable_default_clocks() config_regulator_voltage() <void __weak config_regulator_voltage (uint32_t hclk_freq) at /home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:934> RCC_CALC_FLASH_FREQ() HAL_RCC_GetSysClockFreq() GET_CURRENT_FLASH_PRESCALER() LL_SetFlashLatency() set_up_fixed_clock_sources() <void set_up_fixed_clock_sources (void) at /home/ted/projects/zephyr-project/zephyr/drivers/clock_control/clock_stm32_ll_common.c:636>: IS_ENABLED() LL_RCC_HSE_EnableBypass() LL_RCC_HSE_DisableBypass() LL_RCC_HSE_EnableTcxo() LL_RCC_HSE_EnableDiv2() LL_RCC_HSE_Enable() LL_RCC_HSE_IsReady() z_arm_nmi_set_handler() LL_RCC_HSE_EnableCSS() LL_RCC_HSI_IsReady() LL_RCC_HSI_Enable() LL_RCC_SetHSIDiv() hsi_divider() LL_RCC_MSI_EnableRangeSelection() LL_RCC_MSI_SetRange() LL_RCC_MSI_EnablePLLMode() LL_RCC_MSI_SetCalibTrimming() LL_RCC_MSI_IsReady() LL_RCC_MSI_Enable() LL_RCC_LSI1_Enable() LL_RCC_LSI1_IsReady() LL_RCC_LSI_Enable() LL_RCC_LSI_IsReady() z_stm32_hsem_lock() stm32_backup_domain_enable_access() LL_RCC_LSE_SetDriveCapability() LL_RCC_LSE_EnableBypass() LL_RCC_LSE_Enable() LL_RCC_LSE_IsReady() LL_RCC_LSE_EnablePropagation() LL_RCC_LSE_IsPropagationReady() stm32_backup_domain_disable_access() z_stm32_hsem_unlock() LL_RCC_HSI14_Enable() LL_RCC_HSI14_IsReady() LL_APB2_GRP1_EnableClock() LL_SYSCFG_VREFINT_EnableHSI48() LL_RCC_HSI48_Enable() LL_RCC_HSI48_IsReady() set_up_plls() DT_PROP() DT_NODELABEL() ahb_prescaler() MHZ() LL_RCC_SetAHBPrescaler() LL_RCC_SetSysClkSource() LL_RCC_GetSysClkSource() stm32_clock_switch_to_hsi() LL_RCC_SetAPB1Prescaler() apb1_prescaler() LL_RCC_SetAPB2Prescaler() apb2_prescaler() LL_C2_RCC_SetAHBPrescaler() LL_RCC_SetAHB3Prescaler() LL_RCC_SetAHB4Prescaler() LL_RCC_SetADCClockSource() adc12_prescaler() adc34_prescaler() ted@localhost:~/projects/zephyr-project/zephyr/drivers$