cpu-fclk:400mhz
ahb匯流排-hclk:136mhz
apb匯流排-pclk:68mhz
文件解釋:
中文翻譯:fclk、hclk和pclk,fclk由arm920t使用。hclk用於ahb匯流排,由arm920t、記憶體控制器、中斷控制器、lcd控制器、dma和usb主機塊。pclk用於apb匯流排,用於wdt、iis、i2c、pwm定時器、mmc介面等外圍裝置,adc、uart、gpio、rtc和spi。
(假設我們要使用fclk=400mhz,hclk=100mhz,pclk=50mhz——>1:4:8)
/* 設定mpll, fclk : hclk : pclk = 400m : 100m : 50m */
講解:
設定clkdiv的hdivn[2:1]=10且camdivn[9]=0(預設為0,如果沒使用可以不修改):hclk=fclk/4
設定clkdiv的[0]為1:pclk=hclk/2
所以設定完後clkdiv=0x101
講解:設定mpllcon:fclk=400m→mdiv=92,pdiv=1 ,sdiv=1
m=mdiv+8=92+8=100,p=pdiv+2=1+2=3,s=sdiv=1+2=3
mpll=2*m*fin/(p*2^s) = 2*100*12/(3*2^1)=400m=fclk
/* 設定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]
所以我們還需要將這段**拷貝到我們的start.s中去,讓cpu處於非同步模式
mmu_setasyncbusmode
mrc p15,0,r0,c1,c0,0
orr r0,r0,#r1_nf:or:r1_ia
mcr p15,0,r0,c1,c0,0
.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
2 3樹 Java實現部分演算法
2 3樹是一種樹結構型別的檢索樹,符合下面的定義 1 乙個節點包含乙個或兩個關鍵碼 2 每個內部結點有兩個子女 如果它包含乙個關鍵碼 或三個子女 如果它包含三個關鍵碼 3 所有葉結點都在樹的同一層,因此樹的高度總是平衡的 4 對於每個結點,其左子樹的所有後繼結點都小於第乙個關鍵碼的值,而其中間子樹的...
第23課 跟蹤系統事件,充分掌握系統執行動態
在本節課,我們要介紹 linux 上兩個非常有用的工具 ltrace 和 strace。在分析軟體的執行過程 除錯疑難 bug 執行效能分析和調優等方面,它們都是非常有用的輔助工具。另外,我們還會介紹與之相關的乙個功能強大的系統呼叫 ptrace。充分理解並掌握 ptrace 的使用,能夠實現一些很...
牛客小白月賽23 部分題解
e 水題簽到 include using namespace std intmain j 水題 include using namespace std int a 100005 intmain sort a,a n cout a 0 i 題意 尋找字典序最大的子串 思路 遍歷兩個for,然後把所有的...