S3C2440中有三种时钟,分别是FCLK,HCLK和PCLK。这三种时钟的功能各不相同,其中FCLK主要是为ARM920T的内核提供工作频率,如图:

  HCLK主要是为S3C2440 AHB总线(Advanced High performance Bus)上挂接硬件提供工作频率,AHB总线主要挂接有内存,NAND,LCD控制器等硬件,如图:

  PCLK主要是为APB总线提供频率,APB总线上主要挂载UART、WatchDog等硬件控制器,如图:

  S3C2440上的时钟源是12MHz,如果想让CPU工作在更高频率上,就需要通过PLL(锁相环)来提高主频。S3C2440上的PLL有两种,一种是MPLL,它是用来产生FCLK、HCLK、PCLK的高频工作时钟;还有一种是UPLL,用来为USB提供工作频率。

  从时序图中,我们可以看到,上电之后,如果什么都不设置,FCLK和晶振的频率相等。当设置PLL后,CPU并不是马上就使用设置好的高频时钟,而是有一段锁定时间,在这段时间里,CPU停止运行,等12MHz变成高频时钟稳定以后,整个系统再重新运行。

  

  开启MPLL的过程: 1、设置LOCKTIME变频锁定时间

            2、设置FCLK与晶振输入频率(Fin)的倍数

            3、设置FCLK,HCLK,PCLK三者之间的比例

  从手册上可以看到,LOCKTIME的默认时间是0xFFFFFFFF,控制方法如图:

  

  FCLK与Fin的倍数通过MPLLCON寄存器设置,三者之间有以下关系:

  MPLL(FCLK) = (2*m*Fin)/(p*2^s)

  其中:m = MDIV + 8, p = PDIV + 2, s = SDIV

  PLL配置寄存器如图:

  当设置完MPLL之后,就会自动进入LockTime变频锁定期间,LockTime之后,MPLL输出稳定时钟频率。

    FCLK、HCLK、PCLK的设置比例如图:

  而设置HDIVN和PDIVN的值是通过设置CLKDIVN来完成的,如图:

  如果HDIV设置为非0,CPU的总线模式要进行改变,默认情况下FCLK = HCLK,CPU工作在fast bus mode快速总线模式下,HDIV设置为非0后, FCLK与HCLK不再相等,要将CPU改为asynchronous bus mod异步总线模式,可以通过下面的嵌入汇编代码实现:

__asm__(
"mrc p15, 0, r1, c1, c0, 0\n" /* 读出控制寄存器 */
"orr r1, r1, #0xc0000000\n" /* 设置为“asynchronous bus mode” */
"mcr p15, 0, r1, c1, c0, 0\n" /* 写入控制寄存器 */
);

JZ2440开发笔记(8)——FCLK、HCLK和PCLK的更多相关文章

  1. JZ2440开发笔记(9)——位置无关代码设计【转】

    b MAIN 和 ldr pc,=MAIN 的区别(谈到代码位置无关性) 看bootloader的时候经常看到这两种写法,不太明白区别,网上查了查.其实看了之后还是一头雾水? 其中,2和3 似乎是一个 ...

  2. JZ2440开发笔记(7)——2440启动方式

    JZ2440的启动方式有两种,一种是从NOR FLASH中启动,还有一种就是从NAND FLASH中启动. 如果从NOR FLASH启动,CPU会访问NOR FLASH的0地址,而0地址位于BANK0 ...

  3. JZ2440开发笔记(6)——存储控制器

    存储控制器与CPU及其它外设的关系 我们看到cpu上集成了一个存储管理器,外围的存储设备都接在这个存储管理器上.cpu负责发出命令,其它的一切工作都交给了存储管理器.那么存储管理器是如何来管理这些外设 ...

  4. JZ2440开发笔记(5)——通过按键点亮LED

    在JZ2440中,点亮LED就是给LED的控制位设置为输出,数据位设置为低电平,而通过按键点亮LED,就需要将按键对应的控制位设置为输出. 下面是JZ2440的3个LED电路图: 下面是JZ2440的 ...

  5. JZ2440开发笔记(2)——minicom的安装和配置使用【转】

    一.安装配置minicom 1.安装minicom lingd@ubuntu:~$ sudo apt-get install minicom 2.配置minicom lingd@ubuntu:~$ s ...

  6. JZ2440开发笔记(4)——设置静态IP

    1. 配置静态ip地址 $sudo vim /etc/network/interfaces 原有内容只有如下两行: auto lo iface lo inet loopback 向末尾追加以下内容: ...

  7. JZ2440开发笔记(3)——配置TFTP

    第一步: 1.关闭ubuntu的防火墙 ufw disable2.卸载了iptables         apt-get remove iptables 1.用iptables -F这个命令来关闭防火 ...

  8. JZ2440开发笔记(1)——arm-linux-gcc环境搭建

    1 下载arm-linux-gcc-4.4.3安装包,http://arm9.net/download.asp 2 解压arm-linux-gcc-4.4.3-20100728.tar.gz,使用命令 ...

  9. 基于JZ2440开发板编写bootloader总结(一)

    凡走过必留下痕迹,学点什么都会有用的. 本系列博文总结了自己在学习嵌入式Linux编程过程中的收获,若有错误,恳请指正,谢谢! --参考教材韦东山系列教材 bootloader 是一个用于启动linu ...

随机推荐

  1. javascripct数组

    定义数组 数组对象用来在单独的变量名中存储一系列的值. 我们使用关键词 new 来创建数组对象.下面的代码定义了一个名为 myArray 的数组对象: var myArray=new Array() ...

  2. hadoop基本命令1

    (大讲台——国内首个it在线混合式自适应学习平台,轻量级的高薪就业和技能提升解决方案) 1.列出所有Hadoop Shell支持的命令$ bin/hadoop fs -help2.显示关于某个命令的详 ...

  3. MVC-Razor引擎布局

    ViewBag.Title:标题 layout: @ViewBag.Title view: @{ViewBag.Title="标题"} @RenderBody():视图的内容直接渲 ...

  4. userInteractionEnabled

    NO -------是自身View下面的按钮之类的能点 YES------是View自身的按钮能点击,他下面的不能点击

  5. 仿今日头条最强顶部导航指示器,支持6种模式-b

    项目中经常会用到类似今日头条中顶部的导航指示器,我也经常用一个类似的库PagerSlidingTabStrip,但是有时并不能小伙伴们的所有需求,所以我在这个类的基础上就所有能用到的情况做了一个简单的 ...

  6. hdu 1540 Tunnel Warfare (区间线段树(模板))

    http://acm.hdu.edu.cn/showproblem.php?pid=1540 Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) ...

  7. No Pain No Game

    hdu4630:http://acm.hdu.edu.cn/showproblem.php?pid=4630 题意:给定一个排序,求区间最大GCD. 题解:离散树状数组.首先把查询按左端点从大到小排序 ...

  8. 安装edX DevStack

    概述 edX Developer Stack 就是通常我们所说的Devstack,是为本地开发所设计的一个Vagrant实例. Devstack: 和产品(edx Product Stack)对系统的 ...

  9. SPRING IN ACTION 第4版笔记-第六章Rendering web views-001- Spring支持的View Resolver、InternalResourceViewResolver、JstlView

    一.Spring支持的View Resolver 二.InternalResourceViewResolver Spring supports JSP views in two ways: Inte ...

  10. ANDROID_MARS学习笔记_S02_008_ANIMATION第二种使用方式:xml

    一.简介 二.代码1.res\anim下的xml(1)alpha.xml.xml <?xml version="1.0" encoding="utf-8" ...