ARM9硬體介面學習之四 CLOCK

2021-05-25 18:02:53 字數 1607 閱讀 9328

s3c2410 cpu預設的工作主頻為12mhz,使用pll電路可以產生更高的主頻供cpu及外圍器件使用。s3c2410有兩個pll:mpll和upll,upll專用與usb裝置。mpll用於cpu及其他外圍器件。

通過mpll會產生三個部分的時鐘頻率:fclk、hclk、plck。fclk用於cpu核,hclk用於ahb匯流排的裝置(比如sdram),pclk用於apb匯流排的裝置(比如uart)。從時鐘結構圖中可以檢視到使用不同時鐘頻率的硬體。

figure 7-1. clock generator block diagram

(注:這裡要注意從圖中看出,uart

使用的是

pclk

,後面uart

實驗會用到)

下面介紹mpll

的啟動流程:

(注:下面內容部分直接摘錄自《

s3c2410

完全開發流程》,

clock

部分寫了非常好)

s3c2410 datasheet 224頁「figure 7-4. power-on reset sequence展示了上電後

mpll啟動的過程

請跟隨fclk的影象了解啟動過程:

1、上電幾毫秒後,晶振輸出穩定,fclk=晶振頻率,nreset訊號恢復高電平後,

cpu開始執行指令。

2、我們可以在程式開頭啟動

mpll,在設定mpll的幾個暫存器後,需要等待一段時間(lock time),mpll的輸出才穩定。在這段時間(lock time)內,fclk停振,cpu停止工作。lock time的長短由暫存器locktime設定。 3

、lock time之後,mpll輸出正常,cpu工作在新的fclk下。

設定s3c2410的時鐘頻率就是設定mpll的幾個暫存器:

1、locktime

:設為0x00ffffff

前面說過,mpll啟動後需要等待一段時間(lock time),使得其輸出穩定。位[23:12]用於upll,位[11:0]用於mpll。使用確省值

0x00ffffff即可。 2

、clkdivn

:用來設定fclk:hclk:pclk的比例關係,預設為1:1:1

這裡值設為0x03,即fclk:hclk:pclk=1:2:4

clkdivn不同的設定及對應的時鐘比例關係如下圖:

3、mpllcon:設為(0x5c << 12)|(0x04 << 4)|(0x00),即0x5c0040

對於mpllcon暫存器,[19:12]為mdiv,[9:4]為pdiv,[1:0]為sdiv。有如下計算公式:

mpll(fclk) = (m * fin)/(p * 2^s)

其中: m = mdiv + 8, p = pdiv + 2

fin 即預設輸入的時鐘頻率12mhz。mpllcon設為0x5c0040,可以計算出fclk=200mhz,再由clkdivn的設定可知:hclk=100mhz,pclk=50mhz。

通常我們將如上時鐘初始化的過程寫成clock_init函式供其他函式呼叫,**如下:

void clock_init(void)

檔案:clock.rar

大小:0kb

ARM9硬體介面學習之一 WatchDog

watchdog是整個arm體系結構中相對比較簡單的介面,控制 只有幾行,寫起來比較容易。首先選擇學習watchdog,可以快速入門,先對底層硬體工作原理有個初步的認識。watchdog即通常我們所說的 看門狗 watchdog原理上就是乙個定時器。定時器timer對時鐘進行計數,當定時器溢位時,產...

ARM9學習筆記之 MMU

我記得有一次我去應聘arm linux軟體工程師。結果被問到arm中的虛擬記憶體是怎麼管理的。由於我只對x86平台下的mmu了解,所以我被問倒了。原來我所學的只是皮毛。還有很多東西值得我去深入。要做arm linux下的驅動,熟悉虛擬記憶體應該是必須的。arm9中的虛擬記憶體是怎麼實現的呢?以下是我...

ARM9學習筆記之 彙編

arm系列晶元與pc系列 可能我說法不太準確 晶元在指令設計上就有本質的區別。arm中每條指令是精簡指令集要麼是32位,要麼是16位。而pc的指令是複雜指令集,一條指令可以由多個位元組組成。1.關於函式呼叫方法 在arm彙編中,函式呼叫非常靈活。1 bl指令 bl initmem 呼叫 initme...