久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 4412時鐘配置(zhi)簡要分析

4412時鐘(zhong)配置簡要(yao)分析 時間:2018-09-29    ;  來源:未知(zhi)

相關名詞:

oscillator:振(zhen)蕩器(qi)

phase locked loops:鎖相環(huan)(PLL)

這篇文章我(wo)(wo)們只涉及(ji)如(ru)何初始(shi)化APLL以及(ji)獲得相(xiang)應的ARMCLK時鐘,對于其它部分我(wo)(wo)們放到(dao)下一次再(zai)進行介紹。

在(zai)芯(xin)片手(shou)冊里(li),“時鐘(zhong)管理單(dan)元 (Clock Management Unit)“的簡稱為 CMU 。CMU_ XXX 表示“XXX 模塊(kuai)內的 CMU ”,比如CMU_CPU等。

對(dui)于(yu)PC來說, CPU 、內(nei)存、主板、聲卡(ka)、顯卡(ka)等(deng)(deng),這些功(gong)能部件(jian)由不同的(de)芯片組(zu)成(cheng)(cheng), 在實體上(shang)是(shi)相(xiang)互獨立的(de)。在嵌入式系統(tong)里(li),一塊芯片內(nei)往往集(ji)成(cheng)(cheng)了多種功(gong)能比(bi)如Exynos 4412 上(shang)面既有CPU,還有音(yin)頻(pin) /視頻(pin)接(jie)口、 LCD 接(jie)口、 GPS 等(deng)(deng)模塊 這類芯片被稱(cheng)為(wei)(wei) SoC,即 System on Chip,譯(yi)為(wei)(wei)芯片級系統(tong)或(huo)片上(shang)系統(tong)。

Exynos4412時鐘體系

不(bu)同的模塊往往工(gong)作(zuo)在不(bu)同的頻率下,一個芯片上采(cai)用單時鐘設(she)(she)計基(ji)本是不(bu)可(ke)能實現(xian)的 ,在 SoC設(she)(she)計中(zhong)采(cai)取多時鐘域設(she)(she)計。4412的時鐘域有5個, 如下圖所(suo)示(shi):

 這(zhe) 5個時鐘域名如(ru)下(xia) (下(xia)文中的 BLK 表示 block ,模塊(kuai) ):

①CPU_BLK :

內含 Cortex-A9 MPCore處理器(qi)、 L2 cache 控制器(qi)、CoreSight (調試用 )。CMU_CPU用于(yu)給這些部件產生時鐘 。

② DMC_BLK :

內含 DRAM 內存控制器 (DMC)、安裝子系統 (Security sub system )、通用中斷控制器 (Generic Interrupt Controller,GIC) 。CMU_DMC 用于給這些(xie)部(bu)件產(chan)生(sheng)時鐘。

③ LEFTBUS_BLK 和 RIGHTBUS_BLK:

它們是全(quan)局的數(shu)據(ju)(ju)總(zong)線,用于在 DRAM 和(he)和(he)其他子模塊之(zhi)間傳輸數(shu)據(ju)(ju)。

④ 其他BLK : 在上(shang)圖(tu)中,用畫筆(bi)圈起來(lai)的模塊(kuai) 。

CMU_TOP用于給這(zhe)些模(mo)塊產(chan)生時(shi)鐘。

4412有3個初始(shi)時鐘源:

 ① XRTCXTI引腳 :接 32KHz(32.768KHz)的晶(jing)振(zhen),用于實時鐘(zhong) (RTC) 。

② XXTI引腳(jiao) :接(jie)(jie)12M ~50 MHz的晶振, 用于(yu)向系統提供時鐘,也可以(yi)不接(jie)(jie)。

 ③ XUSBXTI引腳 :接24MHz的晶振 ,該時鐘(zhong)源提供給USB PHY和PLL(APLL、MPLL、VPLL、EPLL)。

為(wei)什么選擇(ze)給(gei)XUSBXTI引腳接外部晶振(zhen)?晶振(zhen)為(wei)什么選擇(ze)24MHz?

由于一般USB IP核需要直接(jie)使用高(gao)精(jing)度時(shi)鐘,所(suo)以在XUSBXTI引(yin)腳上(shang)(shang)接(jie)24M晶振(zhen),XXTI引(yin)腳就不需要接(jie)了。手冊上(shang)(shang)說(shuo)由于iROM代碼是(shi)根(gen)據24M晶振(zhen)頻率(lv)設計的。

We recommend using a 24 MHz crystal as the iROM design is based on the 24 MHz input clock. 

從原(yuan)理圖上可知, 4412開(kai)發板外接(jie)24MHz的晶振;但(dan)是4412的CPU頻率(lv)可達1.4GHz。可以(yi)想象,一定有硬件(jian)部(bu)件(jian)把(ba)24MHZ的頻率(lv)提升(sheng)為1.4GHZ,這個部(bu)件(jian)被稱為PLL(鎖相環)。4412內部(bu)其他(ta)部(bu)件(jian)也(ye)要工作(zuo)于一定頻率(lv),比 UART 、DDR等,也(ye)應該有PLL把(ba)24MHZ的頻率(lv)提高(gao)后供給它們(men)。

PLL

4412有4個PLL,分別為APLL、MPLL、EPLL和VPLL;2個PHY:(USB PHY和HDMI PHY(PHY:物理層,一般指與外部(bu)信號接口的芯片))。芯片手冊5.3章節

① APLL:用(yong)于 CPU_BLK (可產生高達(da)1.4GHz的(de)頻率(lv));作為 MPLL 的(de)補充(chong),它(ta)也可以給 DMC_BLK 、LEFTBUS_BLK 、RIGHTBUS_BLK 和 CMU_TOP 提(ti)供時鐘。

② MPLL:(可產生高達1GHz的頻(pin)率)用于(yu)DMC_BLK 、LEFTBUS_BLK 、RIGHTBUS_BLK 和(he) CMU_TOP。

③ EPLL :主要給音(yin)頻模塊(kuai)提供(gong)時(shi)鐘,192MHz

④ VPLL :主要給(gei)視頻(pin)系(xi)統提供54MHz時(shi)鐘(zhong), 給(gei) G3D(3D圖形加速器(qi) )提供時(shi)鐘(zhong),或者是(shi)1.1V下的440MHz。

⑤ USB PHY :給 USB 子系統提供(gong) 30MHz 和 48MHz 時鐘(zhong) 。

⑥ HDMI PHY :產生 54MHz 時鐘(zhong) 。

4412時(shi)鐘流(liu)程(cheng)

以上(shang)圖為例,里面涉及(ji)3個概念:

① MUX:多路復(fu)用,即從(cong)多個輸(shu)入源中選擇一個

② PLL:把低頻率的(de)輸入時鐘提高后輸出

③ p:分頻(pin)器,把高頻(pin)率的輸入(ru)時鐘降頻(pin)后輸出

左邊深色的:無(wu)抖動多(duo)路選擇(ze)器(qi),無(wu)抖動意味(wei)著在(zai)(zai)多(duo)路選擇(ze)切換的瞬間,下(xia)游(you)(you)時(shi)鐘(zhong)就可以穩定下(xia)來。需(xu)要注意是(shi)在(zai)(zai)切換時(shi)要保證上(shang)游(you)(you)時(shi)鐘(zhong)已(yi)經存在(zai)(zai)并穩定,不(bu)然下(xia)游(you)(you)時(shi)鐘(zhong)狀(zhuang)態不(bu)確定。

右邊淺色的:有(you)抖動多路選(xuan)擇器,意味著多路選(xuan)擇切換(huan)后,要經(jing)歷(li)一段時(shi)間(jian)的不穩(wen)定(ding)時(shi)間(jian),但是有(you)穩(wen)定(ding)后有(you)相應(ying)寄存(cun)器標志位標示下游時(shi)鐘已經(jing)穩(wen)定(ding),這類指示寄存(cun)器器一般以(yi)CLK_MUX_STAT開頭。

由APLL的時(shi)鐘(zhong)流程圖可知, 它的時(shi)鐘(zhong)來(lai)源可以是(shi) XXTI引腳上接的晶振,也可以是(shi) XUSBXTI 引腳上接的晶振,通過上圖左邊的MUX來(lai)選擇,這個MUX的輸出被稱為FINPLL。

通過(guo)設置APLL的寄存器 (根據公式選擇參(can)數值 ),可(ke)以把FINPLL提高為(wei)某(mou)個頻率輸出,假設為(wei)1.4GHz ,在圖(tu)上(shang)它被命名為(wei)FOUTAPLL。

繼續往右(you)看圖,里面有多(duo)個p ,可以(yi)設置(zhi)對(dui)應的寄存器把(ba)頻(pin)(pin)率降(jiang)下(xia)來(lai)。 CPU可以(yi)工(gong)作于(yu)1.4GHz,但是其他模塊不能工(gong)作于(yu)這么高的頻(pin)(pin)率所以(yi)要把(ba)頻(pin)(pin)率降(jiang)下(xia)來(lai)。

如何設置PLL

設置 PLL 的流程如下: 的流程如下:

(1)設置系(xi)統(tong)PLL鎖定(ding)時間

(2)配置PLL

(3)配置各模塊分頻系數

(4)切換到PLL時鐘(zhong)

① 設置PLL的 P、M、S值(zhi),這是根據(ju)期(qi)望(wang)得到的頻(pin)率用公式計(ji)算出來

② 設置PLL的(de)其(qi)他控(kong)制參數

③ 使(shi)能PLL

④ PLL會等(deng)待一(yi)段時間使時鐘穩定

⑤ 設置MUX ,選擇PLL所(suo)輸出的時鐘

簡單地說就是: 先設置,再啟(qi)動,后使(shi)用。

第 5點意(yi)味著:如果(guo)當(dang)前正使用(yong)該PLL,那么(me)先(xian)設置 MUX 改(gai)(gai)用(yong)其他時鐘源或禁止使用(yong)此 PLL,設置完PLL后再(zai)設置MUX改(gai)(gai)回(hui)原來所(suo)使用(yong)的PLL時鐘。

PLL寄存(cun)器

4412時鐘控(kong)制器(qi)地(di)址(zhi)分布表

以(yi)APLL舉(ju)例說(shuo)明(ming)。

APLL的地址即是上(shang)表中的CMU_CPU,即0x1004_4000 - 0x1004_8000(相關(guan)描述見芯片說手(shou)冊5.9.1.131 APLL_LOCK之后的說明(ming))。

簡(jian)單的(de)(de)說,比如復位后,CPU默認(ren)工作(zuo)頻率(lv)(lv)(lv)在400Hz,現在需要(yao)升到1000Hz工作(zuo),那么從400-->1000Hz需要(yao)一(yi)個(ge)過程,假設為時間t1,在t1這(zhe)段時間內,CPU的(de)(de)頻率(lv)(lv)(lv)是變(bian)化的(de)(de),那么CPU的(de)(de)狀態就(jiu)是不穩定(ding)的(de)(de),此(ci)時,就(jiu)需要(yao)把(ba)頻率(lv)(lv)(lv)鎖定(ding),設置鎖定(ding)時間,直(zhi)到CPU穩定(ding)的(de)(de)輸出頻率(lv)(lv)(lv)。

說(shuo)明:設置(zhi)APLL的(de)(de)參數并(bing)使能它(ta)后, APLL 并(bing)不能立刻輸(shu)出穩定的(de)(de)時(shi)(shi)鐘 ,它(ta)需要經歷一(yi)個鎖定的(de)(de)時(shi)(shi)間 (lock time) 。APLL的(de)(de)大鎖定時(shi)(shi)間是: (270 x Pp)  個周(zhou)期。 所以 APLL_LOCK 設置(zhi)為(wei) (270 x Pp) 就可(ke)以了。(Pp即(ji)為(wei)PMS中的(de)(de)P值)

APLL_CON0寄存器

注意(Sp默認值應該為0x0而(er)不是0x1):

APLL_CON0的(de)reset value能夠在(zai)24MHz的(de)輸入時鐘頻率下產生一個800MHz的(de)時鐘。

Fout = 24 * 200 / (6 * 2^0) = 800MHz

FOUT = SRCCLK* M/(P * 2^S)

根(gen)據 M、P、S的值,可以算出(chu)(chu)APLL的輸出(chu)(chu)時鐘(芯片手冊的公式中2Sp應該是2的指(zhi)數):

FOUT = Mp x FIN / (Pp x 2 ^ Sp)

FOUT范圍21.9MHz~1400MHz。

M、P、S的值應從下表中選(xuan)取

Fout = 24 * 175 / (3 * 1) = 1400

 

APLL_CON1( 地址 : 0x10044104)(這里只(zhi)列出了有用的位)

該寄存(cun)器(qi)用于設置 BYPASS 模式(shi),即(ji)APLL是(shi)直接輸出(chu)FIN時鐘,還(huan)是(shi)提升頻(pin)率后(hou)再輸出(chu)時鐘;也(ye)用于設置AFC(自動頻(pin)率控(kong)制(zhi) )功(gong)能,暫時無(wu)需理會。該寄存(cun)器(qi)取默認值即(ji)可。

CLK_SRC_CPU (地址 : 0x10044200)

參考上面(mian)的APLL時鐘流程圖:

 ① BIT[0] 控制第1個MUX (即 MUXAPLL) ,用 于選擇是使FIN還是 APLL 的(de)輸出(chu)時鐘,這個輸出(chu)被稱為(wei) MOUTAPLL。

② BIT[16]控制 第2個(ge) MUX( 即 MUXCORE) ,用于(yu)選擇 MOUTAPLL 還是 SCLKMPLL 。其中 SCLKMPLL 由下面的 MUXMPLL 控制。

③ BIT[24]控制第3個MUX( 即 MUXMPLL) ,用(yong)于選(xuan)擇 FINPLL 還是 FOUTMPLL ,這(zhe)個輸出(chu)被稱為SCLKMPLL 。其中, FOUTMPLL來自(zi)MPLL 的輸出(chu)。

④ BIT[20]控制第4個 MUX( 即 MUXHPM) ,用于選擇 MOUTAPLL還是(shi) SCLKMPLL 。

CLK_MUX_STAT_CPU (地址 : 0x10044400) :

該寄存(cun)器全(quan)部為只讀寄存(cun)器,用于讀取 CLK_SRC_CPU寄存(cun)器里(li)所(suo)設置的MUX 狀態。

CLK_p_CPU0 (地(di)址 : 0x10044500),CLK_p_CPU1( 地(di)址 : 0x10044504)

參考上面的(de)APLL時(shi)鐘流程圖(tu),以 CPU 的(de)工(gong)作頻率 ARMCLK 為例,根(gen)據(ju)上圖(tu)計算ARMCLK的(de)頻率:

ARMCLK = MUXCORE的輸出 / pCORE / pCORE2

= MOUTCORE / (CORE_RATIO + 1) / pCORE2

= MOUTCORE / (CORE_RATIO + 1) / (CORE2_RATIO + 1)

MOUTCORE表示MUXCORE的輸出,在MUXAPLL為(wei)1、MUXCORE為(wei)0時,它等于(yu)“Mp x FIN / (Pp x 2 ^ Sp),即APLL的輸出FOUT”

這里需要(yao)確認的(de)(de)是如何(he)確定(ding)MOUTCORE的(de)(de)具體值,根據CLK_SRC_CPU中的(de)(de)BIT[0]以及(ji)BIT[16]確定(ding)MUXAPLL即MUXCORE的(de)(de)值。

CLK_p_STAT_CPU0 (地(di)址 : 0x10044600),CLK_p_STAT_CPU1( 地(di)址 : 0x1004 604)

用(yong)于(yu)判斷設置分頻參數(shu)后,分頻器輸出是否已(yi)經(jing)穩定。

在裸(luo)機程序中打(da)印相關(guan)寄(ji)存器(qi)的(de)值,分析一(yi)下當前CPU的(de)時(shi)鐘。

分析(xi)一下該值:

首先APLL_CON0寄存器

Sp=0x0, Mp=0x3, Pp=0x7d=125---> Fout = 24 * 125/ (3 * 1) = 1000MHz--->APLL

APLL_CON1寄存(cun)器(qi):BIT[22]=0,BYPASS=0。

CLK_SRC_CPU:0001 0000 0000 0000 0000 0000 0001

MUX_APLL_SEL= 1 ->MOUTAPLLFOUT

MUX_CORE_SEL= 0 ->MOUTAPLL(這兩個決定了(le)當前使用的就是FOUT的時鐘)

CLK_p_CPU0寄(ji)存(cun)器(qi):BIT[30:28]=0 BIT[2:0]=0

ARM_CLK=MOUTCORE / (CORE_RATIO + 1) / (CORE2_RATIO + 1)

= FOUT/1/1= FOUT=1000MHz

為什(shen)么(me)當前的ARM_CLK是(shi)1000MHz?而不是(shi)1400MHz?

VDD_ARM 電壓是多少?

通過電(dian)路原理圖可知VDD_ARM的電(dian)壓為(wei)1.1V。

經過APLL倍頻后的時鐘路徑

24MHz時鐘路徑

通過(guo)配置APLL寄(ji)存器(qi),將當前(qian)接入的24MHz時(shi)鐘倍頻至固定頻率,并通過(guo)配置復用器(qi)以及分頻器(qi),輸出相應(ying)的CPU時(shi)鐘ARMCLK。

這里我們略微分析一下配(pei)置時鐘的過程。

圖(tu) 使(shi)用APLL倍(bei)頻后的時(shi)鐘圖(tu)

配置APLL

APLL使一(yi)(yi)個(ge)(ge)(ge)PLL(鎖相環),在4412中(zhong)這樣的(de)(de)(de)PLL一(yi)(yi)共有4個(ge)(ge)(ge),其他的(de)(de)(de)名為MPLL,EPLL,VPLL,它們(men)主(zhu)要的(de)(de)(de)功能(neng)就是將一(yi)(yi)個(ge)(ge)(ge)低頻(pin)率的(de)(de)(de)輸入時鐘(zhong)(zhong)成倍提高(gao),例(li)如通(tong)過配置(zhi)APLL后(hou)(hou),可以將24MHz的(de)(de)(de)時鐘(zhong)(zhong)提升(sheng)至(200-1400)MHz,然后(hou)(hou)經(jing)過對(dui)應(ying)的(de)(de)(de)多路復(fu)用器(MUX,從多個(ge)(ge)(ge)輸入源(yuan)中(zhong)選擇一(yi)(yi)個(ge)(ge)(ge))后(hou)(hou),再(zai)由相關的(de)(de)(de)分(fen)頻(pin)器(p,把高(gao)頻(pin)率的(de)(de)(de)時鐘(zhong)(zhong)降頻(pin)后(hou)(hou)輸出)分(fen)頻(pin)完成后(hou)(hou)得到(dao)相應(ying)的(de)(de)(de)ARMCLK。

APLL倍頻的相(xiang)關公式:

FOUT = FIN* M/(P * 2^S)

FOUT指經過(guo)APLL倍頻(pin)后的輸(shu)出(chu)值,在上(shang)圖(tu)中叫(jiao)FOUTAPLL,FIN指的是外部(bu)輸(shu)入時鐘(zhong),圖(tu)中的FINPLL為(wei)(wei)24MHz,P、M、S的值為(wei)(wei)倍頻(pin)值,可以(yi)通過(guo)寄(ji)存器(qi)(APLL_CON0)進(jin)行配置(zhi),這(zhe)里(li)的值好取芯片手冊中固定(ding)的那(nei)些,如(ru)下圖(tu)。

例如我們要輸(shu)出一個1000MHz的(de)時鐘,相應的(de)計算公式(shi)為(wei):

FOUT = 24MHz * 125/(3 * 2^0) = 1000MHz。//其他的時(shi)鐘則(ze)按照同樣的方式進行計算

圖(tu) 配置(zhi)APLL后(hou)

配置MUX多路(lu)復用器

這里需要配置MUXAPLL以及(ji)MUXCORE兩個(ge),這個(ge)由CLK_SRC_CPU寄存器進行(xing)配置,對于(yu)MUXAPLL為(wei)(wei)1選擇輸入(ru)源為(wei)(wei)FOUTAPLL,對于(yu)MUXCORE為(wei)(wei)0選擇MOUTAPLL。

圖 配(pei)置兩個(ge)MUX后(hou)

配置p分頻器

這(zhe)里需(xu)要配置(zhi)pCORE以及pCORE2兩個分(fen)頻器(qi),這(zhe)個由CLK_p_CPU0寄存器(qi)進行(xing)配置(zhi),將CORE_RATIO以及CORE2_RATIO均配置(zhi)為0,這(zhe)樣就可以得到(dao)1000MHz的ARMCLK。

相應的分頻器的計算公(gong)式(shi):

對(dui)于(yu)pCORE分頻(pin)器(qi)來說(shuo),輸入(ru)時鐘(zhong)(zhong)源(yuan)為MOUTCORE(M代表(biao)(biao)MUX,OUT表(biao)(biao)示輸出,CORE代表(biao)(biao)CORE復用器(qi),即MOUTCORE是MUXCORE復用器(qi)輸出時鐘(zhong)(zhong)),輸出時鐘(zhong)(zhong)源(yuan)為DOUTCORE,計算輸出時鐘(zhong)(zhong)源(yuan)的(de)大小為

DOUTCORE = MOUTCORE/(CORE_RATIO + 1)

對于(yu)及(ji)pCORE2分頻器(qi)來說(shuo),輸(shu)入(ru)時(shi)(shi)鐘為(wei)DOUTCORE,輸(shu)出時(shi)(shi)鐘為(wei)ARMCLK,計算輸(shu)出時(shi)(shi)鐘源的大小為(wei)

ARMCLK = DOUTCORE/(CORE2_RATIO + 1)

MOUTCORE時鐘就是(shi)由APLL倍頻后得到的FOUTAPLL,這樣我們(men)可以獲得整個(ge)的時鐘計算公式

ARMCLK = (FIN*M)/(P*2^S*(CORE_RATIO+1)*(CORE2_RATIO+1))

下(xia)面介(jie)紹一下(xia)程序中的流程,相關(guan)寄存器(qi)不進行介(jie)紹,需要閱讀芯片手冊7.9.1章節(jie)

寄存器CLK_SRC_CPU更改系統使用(yong)時(shi)鐘(zhong),配(pei)置(zhi)為暫(zan)時(shi)使用(yong)晶振(zhen)提(ti)供(gong)時(shi)鐘(zhong),等我們APLL配(pei)置(zhi)好并(bing)且穩定之(zhi)后再(zai)切(qie)換回來。

CLK_SRC_CPU = 0x0;

寄存器APLL_LOCK 設置系統(tong)PLL鎖定時(shi)間,由于倍頻到較(jiao)高時(shi)間,需要一個穩定的(de)過程(cheng),這個過程(cheng)為270*P的(de)時(shi)間(P為PMS中(zhong)的(de)P值)。

APLL_LOCK = 270 * 3;

寄存(cun)器APLL_CON0 配置APLL需要的PMS值,并使能(neng)APLL。

APLL_CON0 = ((1<&lt;31) | (0x7d<<16) | (0x3<<8) | (0x0));

 寄存器CLK_p_CPU0 配置需要的分(fen)頻值CORE_RATIO及CORE2_RATIO

CLK_p_CPU0 = ((0<&lt;28) | (2<<24) | (1<<20) | (6<<16) |(7<<12) | (7<<8) | (3<<4) | (0<<0));

寄存(cun)器CLK_SRC_CPU 使能APLL輸出。

CLK_SRC_CPU = 0x01000001;

不(bu)考慮(lv)其(qi)他影響,簡(jian)配置流程(cheng)就(jiu)是上(shang)邊的步驟(zou)。

上一篇:關于scanf( )函數使用

下一篇:LCD工作原理

熱(re)點文章推薦
華清學員就(jiu)業榜單
高薪(xin)學員(yuan)經(jing)驗分享(xiang)
熱點新聞(wen)推薦
前臺(tai)專線(xian):010-82525158 企業(ye)培訓(xun)洽(qia)談專線:010-82525379 院校合作(zuo)洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部