裸机系列——2440时钟

发布者:chunxing最新更新时间:2022-02-28 来源: eefocus关键字:裸机系列  2440时钟  CPU 手机看文章 扫描二维码
随时随地手机看文章

自己的总结:


1.2440 有俩个PLL ,UPLL 和MPLL 。UPLL 用于USB 时钟UCLK ,MPLL 对应FCLK .HCLK 、PCLK 。ARM 启动时直接使用外部晶振作为CPU 时钟,对应2440 为12Mhz 。只有在设置了时钟寄存器M P S 三个值,具体的寄存器PLLCON 下面已经说得很清楚了。设置分频寄存器后CPU 时钟即采用倍频后的FCLK 时钟。


2. CPU 时钟即就是FCLK 时钟,HCLK 从FCLK 分频,PCLK 从HCLK 分频。具体的分频比例需要设置寄存器CLKDIVN ,详细见手册。


3. 系统要工作需要首先设置好时钟,时钟是CPU 及外设工作的心脏,当你没有设置时钟时CPU 直接使用外部晶振,所以有些慢设没有设置时钟也能工作。时钟设置时有一个CPU 时钟模式- 快速总线模式和异步时钟模式,具体是实现找了好多资料都没有弄明白,大概有一些了解的地方是 ,快速总线模式下且HDIVN 不为0 时,CPU 使用HCLK 时钟且可以改变CPU 时钟但不改变FCLK 和PCLK 的频率。


下面是转载别人的:


S3C2410 CPU 默认的工作主频为12MHz ,使用PLL 电路可以产生更高的主频供CPU 及外围器件使用 。S3C2410 有两个PLL :MPLL 和UPLL ,UPLL 专用与USB 设备。MPLL 用于CPU 及其他外围器件。


通过MPLL 会产生三个部分的时钟频率:FCLK 、HCLK 、PLCK 。FCLK 用于CPU 核,HCLK 用于AHB 总线的设备( 比如SDRAM) ,PCLK 用于APB 总线的设备( 比如UART) 。从时钟结构图中可以查看到使用不同时钟频率的硬件。


Figure 7-1. Clock Generator Block Diagram

(注:这里要注意从图中看出,Uart 使用的是PCLK )


时钟源选择


表 7-1 描述了模式控制引脚 (OM3 和 OM2) 和选择时钟源之间的对应关系。 OM[3:2] 的状态由 OM3 和 OM2 引脚的状态在 nRESET( 当振荡器 (crystal/oscillatto) 时钟输出稳定后, nRESET 引脚变为高电平 ) 的上升沿锁存得到。  


注意: 1 、尽管 MPLL 在系统复位的时候就开始产生,但是只有有效的设置好 MPLLCON 寄存器后 才能用于系统时钟。在此之前,外部时钟将直接作为系统时钟 。即使不需要改变 MPLLCON 寄存器的初值,也必须 将同样的值写入寄存器。


2 、当 OM[1:0] 为 11 时, OM[3:2] 用于决定一种测试模式。


下面介绍MPLL 的启动流程:


(注:下面内容部分直接摘录自《s3c2410 完全开发流程》,Clock 部分写了非常好)


S3c2410 datasheet 224 页“Figure 7-4. Power-On Reset Sequence” 展示了上电后MPLL 启动的过程

请跟随FCLK 的图像了解启动过程:


1 、上电几毫秒后,晶振输出稳定,FCLK= 晶振频率,nRESET 信号恢复高电平后,CPU 开始执行指令。


2 、我们可以在程序开头启动MPLL ,在设置MPLL 的几个寄存器后,需要等待一段时间(Lock Time) , MPLL 的输出才稳定。在这段时间(Lock Time) 内,FCLK 停振,CPU 停止工作。Lock Time 的长短由寄存器LOCKTIME 设定。


3 、Lock Time 之后,MPLL 输出正常,CPU 工作在新的FCLK 下。


设置S3c2410 的时钟频率就是设置MPLL 的几个寄存器:


1 、LOCKTIME :设为0x00ffffff


前面说过,MPLL 启动后需要等待一段时间(Lock Time) ,使得其输出稳定。位[23:12] 用于UPLL ,位[11:0] 用于MPLL 。使用确省值0x00ffffff 即可。


2 、CLKDIVN :用来设置FCLK:HCLK:PCLK 的比例关系,默认为1:1:1


这里值设为0x03 ,即FCLK:HCLK:PCLK=1:2:4


3 、MPLLCON :设为(0x5c << 12)|(0x04 << 4)|(0x00) ,即0x5c0040


对于MPLLCON 寄存器,[19:12] 为MDIV ,[9:4] 为PDIV ,[1:0] 为SDIV 。有如下计算公式:


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


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


Fin 即默认输入的时钟频率12MHz 。MPLLCON 设为0x5c0040 ,可以计算出FCLK=200MHz ,再由CLKDIVN 的设置可知:HCLK=100MHz ,PCLK=50MHz 。


通常我们将如上时钟初始化的过程写成clock_init 函数供其他函数调用,代码如下:


void clock_init(void)


{


        /*init clock*/


rLOCKTIME = 0xFFFFFF;


    /* 设置FCLK:HCLK:PCLK=1:2:4, 这样假设处理器主频为200M, 则HCLK 为50M,PCLK 为25M 。ARM920T 内核使用FCLK, 内存控制器,LCD 控制器等使用HCLK ,看门狗、串口等使用PCLK*/


rCLKDIVN  = 0x3;


    /* 设置时钟频率为200M*/


    rMPLLCON = 0x5c0040;


    }


改变2410 的PLL 频率,具体过程:


1 、第一步软件工作: 设置P M S divider control ,也就是设置MPLLCON 寄存器。


关于PMS ,可以看Figure 7-2. 寄存器MPLLCON 的设置呢,其实有一定的规则,并非你想要的每个Fclk 频率都可以得到。官方推荐了一个表PLL VALUE SELECTION TABLE ,要按照这个进行。否则的话,就需要自己按照公式推算,但是mizi 公司并不保证你的设置是合适的。所以,如果想要工作在200MHz ,还是按 照vivi 的推荐值即可。


@ step1: set P M S divider control


        mov r1, #CLK_CTL_BASE


         ldr r2, =vMPLLCON_200


        str r2, [r1, #oMPLLCON]


    其中,MDIV=0x5c ,PDIV=0x04 ,SDIV=0x00. 公式Mpll (Fclk )= (m×Fin )/ (p×(2^s) )【m=MDIV+8, p=PDIV+2,s=SDIV 】


2 、第二步软件工作:设置CLKDIVN 。


这一步是设置分频系数,即Fclk 为cpu 主频,Hclk 由Fclk 分频得到,Pclk 由Hclk 分频得到。假设Hclk 是Fclk 的二分频,Pclk 是 Hclk 的二分频,那么分频系数比就是Fclk :Hclk :Pclk=1 :2 :4. 那么Hclk 为100MHz ,总线时钟周期为10ns 。Pclk 为 50MHz 。


@ step2: change clock divider


        mov r1, #CLK_CTL_BASE


        mov r2, #vCLKDIVN


        str r2, [r1, #oCLKDIVN]


3 、第三步软件工作: CLKDIVN 的补充设置


  void ChangeClockDivider(int hdivn,int pdivn)


{


     // hdivn,pdivn FCLK:HCLK:PCLK


     //     0,0         1:1:1


     //     0,1         1:1:2


     //     1,0         1:2:2


     //     1,1         1:2:4


    rCLKDIVN = (hdivn<<1) | pdivn;   


    if(hdivn)


        MMU_SetAsyncBusMode();


    else


        MMU_SetFastBusMode();


}


If HDIVN = 1, CPU 总线模式必须从快速总线模式转变为同步总线模式,采用以下指令


;void MMU_SetFastBusMode(void)


; FCLK:HCLK= 1:1


  EXPORT MMU_SetFastBusMode


MMU_SetFastBusMode


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


   bic  r0,r0,#R1_iA:OR:R1_nF


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


   MOV_PC_LR


If HDIVN=1 and CPU 总线模式为快速总线模式时, CPU 由HCLK 提供. 该特性可以在不改变HCLK and PCLK 的前提下把CPU 的频率减半.


;void MMU_SetAsyncBusMode(void)


; FCLK:HCLK= 1:2


   EXPORT 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


4 、第四步软件工作:等待locktime 时间,让新的Fclk 生效


@ step4: stay locktime


        mov r1, #CLK_CTL_BASE


         ldr r2, =vLOCKTIME


        str r2, [r1, #oLOCKTIME]


6 、对外设的影响


在这个实验中,主要是有两个需要改变,一个外设是UART ,一个外设是SDRAM 。


(1 )UART ,它是接在APB 总线上,所以对应的时钟信号为Pclk ,现在为50MHz 。如果想要设置波特率为115200bps ,那么根据公式 UBRDIV0=(int)(PCLK/(bps*16))-1 计算,应该为26 。如果放到程序中,那么应该注意形式。具体如下:


UBRDIV0 = ((int)(PCLK/16./UART_BAUD_RATE) -1);


(2 )SDRAM ,主要的影响因素为刷新频率。前面在SDRAM 中没有具体分析,现在可以详细说明。使用了两片HY57V561620CT-H ,查看手册 其刷新频率为8192 refresh cycles/64ms ,所以刷新周期64ms/8192 =7.8125us 。看寄存器REFRESH 的各个位的设置情况:


    ·REFEN[23] :开启自动模式,设为1


    ·TREFMD[22] :设为Auto refresh 模式,设为0


    ·Trp[21:20] :看看RAS precharge Time ,查看SDRAM 手册,发现-H 系列此参数至少为20ns ,现在Hclk 对应的时钟周期为10ns ,所以至少应该为2 个clock 。可以设为00


    ·Tsrc : Semi Row Cycle Time ,也就是RAS Cycle Time ,至少65ms ,所以至少得6.5clock ,按照可选值,应该设置为11


    ·Refresh[10:0] :


    公式refresh period = (2^11 - refresh_count +1)/Hclk ,由此推导出refresh_count=2^11+1-refresh period*Hclk 。带入数值,计算得出1268 =0x04f4 ,这个数值要用四舍五入,减少误差。


    · 其余的保留值,均设置为0


由此得出该寄存器的值应该为0x008c04f4 。

关键字:裸机系列  2440时钟  CPU 引用地址:裸机系列——2440时钟

上一篇:裸机系列——IIS_DMA
下一篇:S3C2440裸机实验之clock(时钟设置)

推荐阅读最新更新时间:2024-11-12 22:21

AMD谈Zen5架构:CPU核心越多 内存将成瓶颈
AMD的CPU路线图已经发展到了5nm Zen4这一代,今年底就会推出,CPU核心数将从没目前最多64核提升到96核、128核,再往后的Zen5预计也是这些核心数,但性能更强,不过AMD高管认为随着CPU核心数的增加,内存的瓶颈问题会越来越严重。 日前AMD高级副总裁负责服务器部门总经理Dan McNamara在一次金融大会上谈到了AMD的新动向,首先是供应问题,他认为至少在2023年底之前,AMD在服务器领域都可以继续增加产品交付量。 其次,他还谈到了Zen5架构,这是5nm Zen4的继任者,Dan McNamara认为CPU核心数没必要再增加了——Zen4时代有两种架构,分别是zen4C及zen4d,分别是96核、1
[家用电子]
基于双CPU实时图像监控的嵌入式系统设计方法
图像监控以其直观、方便、信息内容丰富而被广泛应用于许多场合。在电子技术与通讯技术的发展过程中,图像监控系统的技术水平直接反映了不同阶段电子与通讯的技术状况。上世纪90年代末,随着多媒体技术、视频压缩编码技术和网络通讯技术的发展,数字视频监控系统迅速崛起。在数字图像监控系统中,嵌入式监控系统主要由嵌入式处理器、以太网接口控制器等相关支撑硬件及嵌入式操作系统组成。 1 设计方案 采用TI公司的TMS320VC5471为处理器,此芯片是一种双内核器件,内部集成了一个带程序和数据存储器(均为RAM)的 TMS320C54x DSP子系统和一个带仿真工具的ARM7TMRISC微控制器核。在双CPU系统中,ARM7TDMI作为
[单片机]
基于双<font color='red'>CPU</font>实时图像监控的嵌入式系统设计方法
144 个高性能核心,每秒 1 TB 内存,英伟达推 Grace CPU 超级芯片
在 3 月 22 日举行的GTC 2022 主题演讲上,英伟达正式推出了首款面向 AI 基础设施和高性能计算的数据中心专属CPU。 NVIDIA Grace CPU 超级芯片由两个 CPU 芯片组成,它们之间通过NVLink®-C2C互连在一起。Grace CPU 超级芯片是去年英伟达发布的首款由 CPU-GPU 集成的“Grace Hopper 超级芯片”的模块,它将与基于 NVIDIA Hoppe 架构的 GPU一同应用于大型 HPC 和AI 应用。 据介绍,NVIDIA Grac CPU 超级芯片由两个 CPU 芯片组成,它们之间通过NVLink®-C2C互连在一起。Grace CPU 超级芯片基于最新的数据中心架构 A
[手机便携]
FPGA与多核CPU使嵌入式设计更灵活
随着嵌入式器件在过去数十年来的爆炸性成长,使得硬件组件及软件工具都有显著的改善。虽然有着这种成长与创新,但传统嵌入式系统的设计方法却少有进步,并逐渐变成一种障碍。有鉴于新标准与协议的快速发展,以及对产品上市压力的日益增加,嵌入式系统设计也即将发生颠覆性的典范改变。   随着硬件技术及软件工具的进步在加速成长,由整合所带来的挑战也开始浮现。如果无法妥善处理这些挑战,将会使得终端产品变得更加昂贵,并且有碍于让更多创新设计的实验、成长及上市。    标准的嵌入式架构   在一般的计算市场,标准化已带来更加稳健而耐用的操作系统、更精炼的终端应用,及基础硬件组件的进步。我们从其中所学到的经验是,从避免花在客制化硬件架构及相关软件组件的
[模拟电子]
FPGA与多核<font color='red'>CPU</font>使嵌入式设计更灵活
神奇的示波器探头:成也是你,败也是你
又是一个和探头,接地相关的真实调试案例!    有些电路本来没有问题,连接上探头就有问题了;有些电路本来有问题,接上探头又没有问题了。两种情况下的根源可能大不一样,但一定是有一个没有被挖出来的根源。    来自西门子公司的李工和R&S的李工一起,追根溯源,搞明白了原来问题出在晶振的"来料不良"上。这令笔者想起有位老采购说的:最容易出问题的物料就三样:电源,晶振和接插件。在发现问题的过程中,我们可以看到示波器作为"工程师的眼睛"的价值。    2014年7月份,我们启动了电能质量高端设备开发项目。这个项目的技术需求是采样点多,数据率高,算法复杂,数据存储量大,网络接口多,高级应用多等。面临这样的情况,我们通过大量分析和评
[测试测量]
三毛派神作价6亿并购众志芯科技 进军CPU芯片业务
  三毛派神12月7日早间披露重组预案,公司拟购买北大众志持有的北京众志芯科技有限公司的100%股权。同时,公司拟向西藏昊融投资管理有限公司非公开发行股份募集配套资金,募集配套资金总额不超过6亿元。公司股票继续停牌。   根据预估值,标的资产的交易价格约为6.2亿元,三毛派神拟以13.73元/股的价格,向北大众志发行股份的数量约为4516万股。   另外,公司拟以锁价发行的方式向昊融投资非公开发行股份募集配套资金,募集资金总额不超过6亿元,发行价为13.73元/股。截至目前,中新融创持有昊融投资全部股权,为昊融投资的控股股东。解直锟持有中新融创控股股东北京中海嘉诚资本管理有限公司 99%股权,为昊融投资的实际控制人。
[半导体设计/制造]
以MSP430低功耗单片机为CPU的太阳能警报器系统设计
引言 我国是世界上受自然灾害影响最为严重的国家之一,近年来由于滥砍滥伐严重,自然资源过度开采,造成地质灾害和自然灾害发生的频率增多,破坏程度也越来越严重,2008年的四川汶川大地震、2010年的贵州玉树地震都造成了严重的人员死亡和经济损失,还有各地频发的各种泥石流、山体滑坡和水灾等都造成了不同程度的破坏,随时威胁着人民的生命财产安全。每年国家在防灾、抗灾和救灾方面都要花费大量的人力物力。如果能在灾害监测和预警方面下大力气,做到准确预测灾害的来临,灾前做好充分的准备工作,可以将灾害所造成的人员伤亡和经济损失减到最低,也为国家节省大量的救灾资金。 太阳能防空防灾电声警报器为各自独立的功能部件用积木形式集成安装在可移动的防水机箱内外
[单片机]
以MSP430低功耗单片机为<font color='red'>CPU</font>的太阳能警报器系统设计
51单片机CPU的基本构成及作用
单片机是什么,是在一个集成硅片中集成了一些部件,构成了一个微型的计算机系统的东西,这些只是对单片机的基础概念是简单了解,会用单片机C语言的编程来实现一些简单的ALU的操作,但是这些还是远远不够的,我们还需要了解单片机的运行机制,工作原理。 这一期来了解一些关于单片机的其他重要知识,51单片机的CPU是多少位,CPU的主要作用是什么,51单片机它的基本构成是由哪些部件或者哪些东西来构成的。 51单片机它的CPU位数是多少位? 51单片机是8位的CPU,表示数据处理一次能够处理的数据的位宽是8个比特位,也就是一个字节,这个叫做它的位数,51单片机除了具备八位的CPU之外,实际上它有两个,它还有一个位处理器,一个字节处理器,所以
[单片机]
51单片机<font color='red'>CPU</font>的基本构成及作用
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved