linux clk時鐘初始化

2021-10-09 16:50:31 字數 988 閱讀 4463

例項記錄的是am335x 時鐘初始化框架,具體細節還沒來得及深究,僅供自己記錄學習用。

/arch/arm/mach-omap2/board_generic.c

dt_machine_start(am33xx_dt, "generic am33xx (flattened device tree)")

.reserve    = omap_reserve,

.map_io        = am33xx_map_io,

.init_early    = am33xx_init_early,

.init_machine    = omap_generic_init,

.init_late    = am33xx_init_late,

.init_time    = omap3_gptimer_timer_init,

.dt_compat    = am33xx_boards_compat,

.restart    = am33xx_restart,

machine_end

時鐘初始化入口,主要是在start_kernel中呼叫time_init,然後呼叫omap3_gptimer_timer_init.

----->omap_clk_init       ----------------arch/arm/mach-omap2/timer.c

------>of_clk_init --------------------------driver/clk/clk.c這個函式裡主要是初始化所有通過clk_of_declare巨集函式註冊到__clk_of_table結構體中和dts中裝置節點對應的of_device_id結構體。通過「.compatible」匹配。一旦匹配成功,通過

clk_of_declare巨集關聯的時鐘初始化函式可得到執行。

如果需要新新增clk裝置節點和驅動,可按上述步驟操作。

clk驅動主要集中在driver/clk/***.c。也可通過.compatible屬性值來查詢對應的**。

ARM Linux時鐘初始化

arm linux時鐘初始化是從machine start中的map io函式開始的,map io函式中會呼叫s3c24xx init clocks 12000000 來進行,我們來看一下初始化過程 static struct cpu table cpu void init s3c24xx init...

時鐘初始化flash設定

時鐘初始化的時候,有這兩句 enable prefetch buffer flash prefetchbuffercmd flash prefetchbuffer enable flash 2 wait state flash setlatency flash latency 2 這是因為cpu比f...

SystemInit時鐘系統初始化函式

void systeminit void static void setsysclock void 下面主要講解該函式 static void setsysclockto72 void while hsestatus 0 startupcounter hse startup timeout if r...