欢迎访问 生活随笔!

生活随笔

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

编程问答

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

发布时间:2025/4/16 编程问答 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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,也就是ARMCLKHCLKPCLKDDRCLK等时钟的基准时钟,下图可以很清楚描述这些时钟的关系

 

现在我们知道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中对FCLKPCLKHCLK中得到体现。

 

下面接着看对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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。