Cflow

From Wiki at Neela Nurseries
Revision as of 05:34, 25 August 2025 by Ted (talk | contribs) (Create page for cflow utility, add example use on STM32 clock init code.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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$