日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WINCE6.0+S3C2443的启动过程---eboot2

發布時間:2025/4/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WINCE6.0+S3C2443的启动过程---eboot2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.3系統時鐘設置

我的另一篇博客介紹了S3C2443的時鐘管理http://blog.csdn.net/chinesedragon2010/archive/2010/09/24/5903553.aspx

?

這些紅色字體的值在S3C2443.inc文件中定義,

Startup_Mdiv????? EQU ?? 81

Startup_Pdiv????? EQU ?? 2

Startup_Sdiv????? EQU ?? 1

這些值的實際意義是什么呢?我們先來看看上圖的第188行到190行對MPLLCON寄存器的設置,結合下表

?

可知FOUT=534MHZ,這就是MSysClk,也就是ARMCLK、HCLK、PCLKDDRCLK等時鐘的基準時鐘,下圖可以很清楚描述這些時鐘的關系

?

現在我們知道FOUT=534MHZ了,S3C2443.inc文件中定義

Startup_ARMCLKdiv????? EQU???????????? 0??????????????????

Startup_PREdiv???????? EQU???????????? 0x1??????????????

Startup_HCLKdiv??????????? EQU???????????? 0x1??????????????

Startup_PCLKdiv???????????? EQU???????????? 1????

那么這些值代表的意義是什么呢?

其中Startup_ARMCLKdiv=0,根據CLKDIVO寄存器對ARMDIV位的定義可知ARMCLK=MSysClk=534MHZ,也就是ARM內核的主頻是534MHZ。

Startup_PREdiv=1,根據上圖,可知MSysClkPreDiv= MSysClk/2

Startup_HCLKdiv=1Startup_PCLKdiv=1,根據下表可知HCLK:DDRCLK:PCLK=4:2:8,可以得到HCLK=ARMCLK/4PCLK=ARMCLK/8

這些關系會在bsp_cfg.h中對FCLK、PCLKHCLK中得到體現。

?

下面接著看對CLKSRC寄存器的設置

ldr????????? r0,=CLKSRC??????????????????? ;????? Select MPLL clock out for SYSCLK

ldr????????? r1,[r0]

orr????????? r1,r1,#0x50

str????????? r1,[r0]???

上面代碼主要是選擇MPLL輸出作為MSysClk的基準時鐘,選擇EPLL輸出作為ESYSCLK的基準時鐘。

?

1.4??? 設置CPU的總線模式

通過調用函數MMU_SetAsyncBusMode來把CPU的總線模式設置為同步模式

bl?????????? MMU_SetAsyncBusMode

此函數體定義如下

MMU_SetAsyncBusMode

??????? mrc???? p15,0,r0,c1,c0,0

??????? orr???? r0,r0,#R1_nF:OR:R1_iA

??????? mcr???? p15,0,r0,c1,c0,0

??????? mov ?? pc, lr

?

通過上圖我們可知mrc???? p15,0,r0,c1,c0,0是用于讀取控制寄存器C1R0中,也知道C1在系統復位后C1控制寄存器除了V位之外的所有控制位都為0,見下圖

?

那么就是上電復位后,控制寄存器C1iAnF位,也即iAnF位這兩位的值也為0,下表是iAnF位這兩位組合的定義

?

?

結合上面這些圖表及下面的定義

R1_iA??????????? EQU??????? (1<<31)

R1_nF??????????? EQU??????? (1<<30)

所以orr???? r0,r0,#R1_nF:OR:R1_iA的意義就是先判斷R1_nF是否為1,如為1,則對C1nF位做或運算,也即把CPU的時鐘模式設置為Synchronous模式;如為0,則對C1iA位做或運算,也即把CPU的時鐘模式設置為FastBus模式,接著通過mcr???? p15,0,r0,c1,c0,0語句把運算后的結果寫回C1控制寄存器。

?

1.5??? 設置CLKOUT0CLKOUT1的時鐘源

設置CLKOUT0的時鐘源為PCLK,設置CLKOUT1的時鐘源為HCLK。

ldr????????? r0,=MISCCR

?????? ldr????????? r1,[r0]

?????? bic???????? r1,r1, #0x770

?????? orr????????? r1,r1,#0x320

?????? str????????? r1,[r0]

?????? 配置GPH13GPH14分別為CLKOUT0CLKOUT1

?????? ldr????????? r0,=GPHCON

?????? ldr????????? r1,[r0]

?????? bic???????? r1,r1, #0x3C000000

?????? orr????????? r1,r1, #0x28000000

?????? str????????? r1,[r0]???

?

?

?

-------------------------------->

?

總結

以上是生活随笔為你收集整理的WINCE6.0+S3C2443的启动过程---eboot2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。