(三)MINI2440的時鐘配置

2021-10-06 06:52:16 字數 2141 閱讀 3645

時鐘源:om[3:2]選擇時鐘源

mpll:main pll(主鎖相環)

在mini2440開發板中,

(1)nreset為低時復位晶元,延時一段時間等待電壓穩定後,nreset才輸出高電平,cpu才可以工作。

(2)根據om[3:2]的值,選擇輸入時鐘源,在mini2440中,輸入時鐘源是12mhz的晶振

(3)pll鎖存om[3:2]的值

(4)設定pll,並禁能時鐘一段時間,fclk停止(為什麼cpu時鐘訊號停止了還能寫暫存器???)

(5)pll重新生效,等待時鐘訊號穩定

(6)新的fclk出現,cpu執行

注意:手冊中提醒,即使使用者不想更改預設的pll配置,也要讀取pllcon的值,再原封不動地寫一次。如果

hdivn非0,則cpu需要被設定為非同步模式,否則pll設定後的fclk會出問題。

.text

.global _start

_start:

/* 關閉看門狗 */

ldr r0,

=0x53000000

ldr r1,=0

str r1,

[r0]

/* 設定mpll, fclk : hclk : pclk = 400m : 100m : 50m */

/* locktime(0x4c000000) = 0xffffffff */

ldr r0,

=0x4c000000

ldr r1,

=0xffffffff

str r1,

[r0]

/* clkdivn(0x4c000014) = 0x5, tfclk:thclk:tpclk = 1:4:8 */

ldr r0,

=0x4c000014

ldr r1,

=0x5

str r1,

[r0]

/* 設定cpu工作於非同步模式 */

mrc p15,

0,r0,c1,c0,

0 orr r0,r0,#0xc0000000

//r1_nf:or:r1_ia

mcr p15,

0,r0,c1,c0,

0/* 設定mpllcon(0x4c000004) = (92<<12)|(1<<4)|(1<<0)

* m = mdiv+8 = 92+8=100

* p = pdiv+2 = 1+2 = 3

* s = sdiv = 1

* fclk = 2*m*fin/(p*2^s) = 2*100*12/(3*2^1)=400m

*/ldr r0,

=0x4c000004

ldr r1,=(

92<<12)

|(1<<4)

|(1<<0)

str r1,

[r0]

/* 一旦設定pll, 就會鎖定lock time直到pll輸出穩定

* 然後cpu工作於新的頻率fclk

*//* 設定記憶體: sp 棧 */

/* 分辨是nor/nand啟動

* 寫0到0位址, 再讀出來

* 如果得到0, 表示0位址上的內容被修改了, 它對應ram, 這就是nand啟動

* 否則就是nor啟動

*/mov r1, #0

ldr r0,

[r1]

/* 讀出原來的值備份 */

str r1,

[r1]

/* 0->[0] */

ldr r2,

[r1]

/* r2=[0] */

cmp r1, r2 /* r1==r2? 如果相等表示是nand啟動 */

ldr sp,

=0x40000000

+4096

/* 先假設是nor啟動 */

moveq sp, #4096

/* nand啟動 */

streq r0,

[r1]

/* 恢復原來的值 */

bl main

halt:

b halt

mini2440硬體篇之系統時鐘

一般系統的時鐘又外部晶振促發,通過內部電路產生時鐘源。2440時鐘控制邏輯給整個晶元提供了三種時鐘,fclk用於cpu核,hclk用於ahb匯流排裝置,如cpu核 儲存控制器 中斷控制器 ldc控制器 dma pclk用於apb匯流排裝置,如看門狗 iis iic pwm定時器 mmc adc ua...

Mini2440學習筆記(三) SDRAM

2440的儲存控制器有個8個bank bank0 bank7,對外引出27根位址線 addr0 addr26 訪問範圍是128m,有8個片選訊號 ngcs0 ngcs7 與之對應,所有可以訪問1g的位址空間。bank6和bank7的可訪問位址空間是可以設定的。只有bank6和bank7可以外接sdr...

mini2440 解除安裝模組

我的mini2440買回來這麼久了,一直有個問題很奇怪,就是執行insmod ko一切正行,lsmod也可以看到你插入的模組,但是用rmmod就會出現no such file,一直對這個問題就感覺很奇怪,也google了很多,網上五花八門的答案都有。最後還是仔細看了手冊才找到答案,原來是要把板子上的...