Exynos4412晶元的時鐘管理單元

2021-09-01 17:03:10 字數 3019 閱讀 9598

本章介紹exynos4412晶元的時鐘管理單元(cmu)。cmu控制鎖相環(pll)並為exynos4412晶元中的各個ip、匯流排和模組產生時鐘。它們還與電源管理單元(pmu)通訊,以便在進入某個低功耗模式之前停止時鐘,以通過時鐘切換來降低功耗。

1.exynos4412晶元的時鐘體系介紹

不同的模組往往工作在不同的頻率下,在乙個晶元上採用單時鐘設計基本上是不可能實現的,在soc設計中採取多時鐘域設計。4412的時鐘域有5個,如下圖1所示。

圖1. exynos 4412晶元的時鐘域

這5個時鐘網域名稱如下(下文中的blk表示block,模組):

cpu_blk:內含cortex-a9 mpcore處理器、l2 cache控制器、coresight(除錯用)。cmu_cpu用於給這些部件產生時鐘。

dmc_blk:內含dram記憶體控制器(dmc)、安全子系統(security sub system)、通用中斷控制器(generic interrupt controller,gic)。cmu_dmc用於給這些部件產生時鐘。

leftbus_blk和rightbus_blk:它們是全域性的資料匯流排,用於在dram和其他子模組之間傳輸資料。它還包含時鐘頻率為100mhz的全域性外設匯流排。您可以使用100mhz時鐘進行暫存器訪問。

cmu_top:為剩餘的功能塊生成時鐘,包括g3d,mfc,lcd0,isp,cam,tv,fsys,mfc,gps,maudio,peril和perir。它產生的匯流排時鐘工作在400/200/160/133/100mhz頻率。它還生成各種特殊時鐘來操作exynos 4412晶元中的ip。

另外,非同步匯流排橋插在兩個不同的功能塊之間。

各個不同的時鐘域已經在圖中使用不同的顏色的框做了相應的標註。

表1中描述了exynos 4412晶元中每個功能模組的典型工作頻率。

表1.在exynos 4412晶元中各個模組的操作頻率

從原理圖上可知,下圖2所示。tiny4412開發板外接24mhz的晶振;但是4412的cpu頻率可達1.4ghz。可以想象,一定有硬體部件,把24mhz的頻率提公升為1.4ghz,這個部件被稱為pll。4412內部其他部件也要工作於一定頻率,比uart、ddr裡等,也應該有pll把24mhz的頻率提高後供給它們使用。

圖2. tiny441開發板鏈結的外部晶振

4412晶元有3個外部初始時鐘源:

在tiny4412的開發板中,xrtcxti上沒有外接晶振,系統時鐘**是xusbxti引腳上接的24mhz晶振。

exynos4412有4個pll:apll、mpll、epll和vpll;2個phy:usb phy和hdmi phy(phy:物理層,一般指與外部訊號介面的晶元):

2.exynos4412中設定pll的方法

以圖3為例,裡面涉及3個概念:

以apll為例,它的時鐘**可以是xxti引腳上接的晶振,也可以是xusbxti引腳上接的晶振,通過圖3中左邊的mux來選擇,這個mux的輸出被稱為finpll。

通過設定apll的暫存器(根據公式選擇引數值,晶元手冊上面都有推薦值),可以把finpll提高為某個頻率輸出,假設為1.4ghz,在圖上它被命名為foutapll。

繼續往右看圖,裡面有多個div,可以設定對應的暫存器把頻率降下來。cpu可以工作於1.4ghz,但是其他模組不能工作於這麼高的頻率,所以要把頻率降下來。

設定pll的流程如下:

簡單地說,就是先設定,再啟動,後使用。

pll暫存器的設定:

4個pll的暫存器功能是相似的,這些暫存器可以分為6類,見表2。

表2. pll的暫存器分類

以apll為例:

apll_lock的暫存器格式:

設定apll的引數並使能它後,apll並不能立刻輸出穩定的時鐘,它需要經歷乙個鎖定的時間(lock time)。apll的最大鎖定時間是:(270 x pdiv)個週期。所以apll_lock設定為(270xpdiv)就可以了。pdiv在後面的apll_con1暫存器中介紹。

根據m、p、s的值,可以算出apll的輸出時鐘:

該暫存器用於設定bypass模式,即apll是直接輸出fin時鐘,還是提公升頻率後再輸出時鐘;也用於設定afc(自動頻率控制)功能,暫時無需理會。該暫存器取預設值即可。

clk_div_cpu1的暫存器格式:

armclk = muxcore的輸出/divcore/divcore2

= moutcore/(core_ratio + 1)/divcore2

= moutcore/(core_ratio + 1)/(core2_ratio + 1)

moutcore表示muxcore的輸出,在muxapll和muxcore都設定為0時,它等於"mdiv x fin / (pdiv x 2 ^ sdiv)"。

本文結束!

Exynos4412 系統移植

移植要點 1 環境搭建 2 boot配置 移植 編譯及燒寫 3 kernel配置 移植 燒寫及除錯 4 根檔案系統的製作gcc編譯流程 預處理 編譯彙編 鏈結核心子系統 程序管理 記憶體管理 檔案系統 裝置管理 網路交叉編譯工具鏈安裝步驟 1 解壓gcc 4.6.4.tar.gz到 toolchai...

Exynos4412啟動過程分析

學習exynos4412啟動流程前,我們先看看三星4412晶元啟動框圖 我們從圖中可以看到4412內部有64k的rom和256k sram,在rom中已經固化好了一段 當硬體上電後首先執行的就是這段 這段 三星起名為blo irom boot 其作用是初始化sram,並將emmc中256k 拷貝到s...

exynos4412中斷程式設計

我們知道,arm核能處理的異常有7種,但僅僅區分異常的種類顯然不能夠滿足需求。拿手機來說,觸控螢幕和按下音量鍵可能都是irq異常,但是arm並不能將他們區分開,而事實的情況是針對這兩種中斷,我們的處理方式顯然不同,為此就需要在soc中整合中斷控制器 generic interupt controll...