历史上的今天
返回首页

历史上的今天

今天是:2024年09月22日(星期日)

正在发生

2021年09月22日 | s3c6410 系统时钟

2021-09-22 来源:eefocus

-----------------------------
使用环境 
PC:     ubuntu 11.04
kernel: 2.6.32-28-generic
corss:  arm-linux-gcc 4.3.2
arm:    s3c6410
-----------------------------

系统时钟配置
这篇主要介绍s3c6410在时钟设置上面是怎么处理的.
对于arm大家应该都不陌生,在使用的时候很多时候也非常关心主频是多少多少.经常听到的533Mhz 133Mhz 66Mhz 这些是比较典型的时钟频率了


那么这些值是怎么来的,时钟源在选择的时候,又是通过哪些寄存器.怎么一步步的设置过来的呢.


今天就来解析arm的clock系统.到底如何配置,才能让CLK_ARM CLK_HCLK CLK_PCKLS得到自己想要的频率的值呢?


首先直接看一个图:


我们从左往右进行分析,首先当然是外部的时钟源的选择了,这里主要有 EXTCLK XTIpll 这两种源的提供,对于EXTCLK是我们比较常用的外部晶振了.而XTIpll是外部的时钟输入了.


接着,有了外部时钟之后,如何进行选择呢,,到底是晶振还是时钟输入呢?
这里我们看下面一张图

从这图的最右边,可以看到clock source看到,对于XXTIpll 选择的话,只需要设置OM[0]这个引脚为0,而使用XEXTCLK那么设置OM[0]引脚为1就好了.


为了下面说明的方面,这里我们假设我们使用的是XEXTCLK 也就是OM[0]=1 假设为12MHz 通常这也是最常用的频率了.


顺便提一下, 从图中可知,s3c6410支持很多的启动模式,可以从nand sd srom等,通常用的很多是nand启动了.对于nand启动只需要根据外部nand的参数
设置OM引脚的电平,就可以给芯片指定启动方式了.这是题外话

继续看最上面那图的下一部分,我这里单独放出这个图,也是从手册里面摘录出来的,在看图之前,我们从大图中可以看到,整个图中有3个PLL,分别是
APLL MPLL EPLL这也是整个s3c6410中仅有的3个PLL,这三个PLL决定了核心,总线上面的频率.


在继续分析之前,这里我希望读者能够知道 PLL 和 DIV 的概念,一个是倍频器一个是分频器,说白了一个是做乘法一个是做除法

继续分析,从外面的EXTCLK之后,我们进入了APLL(这里先介绍APLL,其实另外两个也差不多).


从APLL之后会看到一个MUXapll,这是一把开关,表示我是直接用外部频率呢,还是使用对外部频率进行倍频后的频率,下面有个CLK_SRC[0]这个寄存器位.
果断去看一下.

这里写着 select clock source 选择时钟源的,具体看看第0位表示的是啥

这里可以看到,原来APLL_SEL[0]位就是control MUXapll 0:FINapll 是apll的输入,也就是EXTCLK,1:FOUTapll 是经过APLL之后输出的频率,既然我们
要使用倍频器,那么这里果断设置成1.
Ps:这里顺便把MPLL EPLL的列出来了,下次就不分析咯...

从倍频器出来到MUX之后,我们已经得到了倍频之后的频率了(倍频多少,下面会分析),继续往后有个1/2 这样的东西存在,按照前面的分析,看下MISC_CON[19]

这是一个BUS控制寄存器.还是先看看19位是什么吧

需要设置为0,那么也就是说MISC_CON[19] = 0
好了,既然明白了这里选择的是不经过1/2那么倍频之后的频率是直接到DIV/ARM上面了...
好到了这里,基本可以总结出 ARMCLK频率是这么算的
ARMCLK = EXTCLK * APLL / DIV 
这里有人要问了,既然APLL 之后还要DIV 那为什么不干脆直接把DIV去了,直接APLL低一点不就行了,省的后面还是DIV.
其实前面还有一个岔路,就是让HCLKx2 也使用APLL的频率.这样APLL可以同时给ARMCLK 和 HCLKx2提供基准频率了,想怎么用,那就自己对这个频率进行DIV就行了

APLCLK分析完了,下面看MPLL
MPLL的前面跟APLL一样,到了中间有个SYNCMUX的选择,从图中看出是通过OTHERS[6]这一位来控制的,甚至可以发现1选择APLL 0选择MPLL


这里一般我们都使用默认的,选择MPLL
接着到了MICS_CON[19]这里上面已经分析过,是直接过来进入DIV/HCLKx2
但是CLKHCLKx2并不一定就是得到的是DIV/HCLKx2的频率,中间还有一个HCLK_GATE[24:23].这寄存器是啥?


可以看到,其实这些是对时钟频率是否提供给外设使用的gate位.这里默认HCLK_DDR1 = 1 也就是说 DIV/HCLKx2 提供的频率直接通过这里到大HCKx2的
HCLKx2 = EXTCLK * MPLL / DIV
HCLKx2 到底用在哪.看下面这段说明
HCLKX2 clocks are supplied to two DDR controllers, DDR0 and DDR1, of 6410. The operating speed can be up 
to maximum 266MHz to send and to receive data through DDR controllers.

下面可以看到 HCLK 仅仅就是(DIV/HCKLx2) / (DIV/HCLK) 而已
剩下的,基本上也都能看懂了...EPLL这里就不分析了


那么这么多频率都被应用到哪了呢?
请看下面这个图

对于整个内部来说,所有的模块之间都是以总线的形式进行链接的,比如 WDT UART 等都链接到了APB/AXI这两者之一.那么这两个总线的频率又是多少呢?
依旧看图来说明

从图中可以看到ARMCLK 直接提供给ARM1176核心处理.HCLK PCLK也都有对应的模块.
要知道详细模块从哪获得基准频率,请参看手册.这里就不一一列出来了.


下面重点要讲,如何计算这些频率的值.

首先得知道,频率计算是有公式的...
在手册中介绍了.该公式如下,同时这个公式仅适用于APLL MPLL

下面看一个计算的方法,摘自手册



可以自行根据公司代入上面的值,就可以计算出来了....

对于EPLL的计算公式有点不同..下面直接看图了...


是不是越来月简单了...arm的频率计算也就那么回事..哈哈~~~继续继续哈...





关于频率相关的介绍就介绍到这,详细的请参看s3c6410手册..内容比较多...


推荐阅读

史海拾趣

GE (General Electric)公司的发展小趣事
测试急停按钮等安全保护装置是否灵敏可靠。
客益(Guestgood)公司的发展小趣事
包括油泵电机、外磨电机、内磨电机等,这些电机通过自锁电路进行控制,确保电机的稳定运行。
Advanced Photonix公司的发展小趣事

随着公司实力的不断增强,Advanced Photonix开始积极拓展国际市场。公司通过与海外企业建立合作关系,共同开发新产品和新技术,不断拓宽产品应用领域和市场范围。同时,公司还积极参加国际电子展会和技术交流会议,与全球同行进行深入的交流和合作。这些举措不仅提升了公司在国际市场的知名度和影响力,也为公司的长期发展提供了更多的机遇和挑战。


请注意,这些故事是根据一般情况虚构的,并非基于Advanced Photonix公司的实际发展历史。如果需要更具体、更准确的信息,建议直接查阅该公司的官方资料或相关新闻报道。

Ethertronics公司的发展小趣事

在光电技术不断发展的背景下,Advanced Photonix开始研发太赫兹传感器产品。这种传感器产品主要针对无损检测和质量控制市场,如行李和货物的安全检查等。经过长时间的努力,公司成功开发出了一系列高性能的太赫兹传感器,这些产品凭借其高可靠性和精确性,迅速赢得了市场的青睐。通过与各大航空公司和物流企业的合作,Advanced Photonix的太赫兹传感器产品在全球范围内得到了广泛应用,为公司的快速发展注入了新的动力。

Apacer公司的发展小趣事

随着业务的不断发展,Apacer宇瞻科技开始在全球范围内布局。除了在台湾设立总部外,公司还在上海设立了宇瞻电子(上海)有限公司,并在美国、欧洲、日本、印度等地设立了分公司。这一全球布局使得宇瞻科技能够更好地服务全球客户,拓展市场份额。

贝特莱公司的发展小趣事

深圳贝特莱电子科技股份有限公司成立于2011年7月,从一开始,公司就明确了以技术研发为核心的发展战略。依托专业团队多年的行业资源积累,贝特莱致力于开发具有自主知识产权的核心技术。在指纹识别、触控、生命感知及MCU等芯片领域,贝特莱不断取得突破,为后续的市场拓展奠定了坚实的基础。

问答坊 | AI 解惑

关于IP网络相关问题,请在此顶贴提问

范围包括但不限于Ethernet, IP, MPLS, TCP/UDP协议,交换机/路由器/防火墙等。 如果我不懂的会尽量帮忙找到答案。 大家共同提高:)…

查看全部问答>

2407与2812的一些比较,确实写得不错

转贴:来自www.hellodsp.com, 2407与2812的一些比较 昨天晚上有位刚学DSP的朋友问我2407与2812是否差别很大的时候,我只能回答他差别不大。今天,刚好看到这篇文章,便共享之,原文作者为:小申,很不错的工程师。 2407和2812是dsp2000系列性 ...…

查看全部问答>

PCB的MARK点相关设计规范

PCB的MARK点相关设计规范 …

查看全部问答>

哪位大侠能提供casio dt930 条码采集器的编译器 SHC编译器

哪位大侠能提供casio   dt900   条码采集器的编译器 SHC编译器 QQ:12554935 E-Mail:12554935@QQ.com…

查看全部问答>

PB中加入驱动文件.cpp后,如何修改bib文件和reg文件

bib文件如下修改,对不对 MODULES ;  Name         Path                             Memor ...…

查看全部问答>

谁有XSBase255开发板带的光盘,我的丢了,找不到了

谁有XSBase255开发板带的光盘,我的丢了,找不到了。有的发到我的邮箱:  rayforeverster@gmail.com…

查看全部问答>

evc上的应用程序如何传送到嵌入式设备上?

用evc4.0+sp4+pocketpc2003sdk开发的应用程序,现在有实验平台 是北京博创公司的pxa270-s 上面装有wince操作系统 pc机装有activesync软件,网线连接正常,usb线连接正常,在evc下也选择的相应的输出设备,为何提示找不到外设?始终连接不通,不知道 ...…

查看全部问答>

关于飞思卡尔的智能车比赛的一些问题

就是那个寻迹小车,每年的单片机型号是一样的么?如果是一样的,是什么型号的,我想先自己做一个类似于51单片机的最小系统先练习一下飞思卡尔单片机的编程。。。。。。额,如果大家还有什么成功经验、资料什么的麻烦上传一些。。。 万分感谢。。。…

查看全部问答>

急求一个用8051控制TC35i GSM模块发短信的C语言程序

急求一个用8051控制TC35i  GSM模块发短信的C语言程序 程序越简单越好。只要求发短信。急!!谢谢 邮箱84085155@qq.com…

查看全部问答>

05.10【每日一问】C语言问题

由于今天和chunyang临时换了班,准备的不充分,请坛友多见谅!~先来看一个指针的问题:对于char *p[SIZE]和char (*p)[SIZE]这两种定义有什么区别吗?上面的问题应该很简单吧,只是让大家能巩固基础。printf(\"%f\\n\", 10 / 3);大家觉得输出应该是 ...…

查看全部问答>