历史上的今天
返回首页

历史上的今天

今天是:2025年10月28日(星期二)

正在发生

2022年10月28日 | 【JZ2440笔记】系统时钟设置

2022-10-28 来源:csdn

一、前言

JZ2440开发板上的外部晶振是12MHz的,开发板一上电时S3C2440的系统时钟为12MHz,但是S3C2440最高系统时钟可以跑到400MHz,为了发挥CPU更高的性能,需要将外部晶振输入的12MHz时钟通过芯片内部的锁相环电路进行倍频,然后获得400MHz的系统时钟,使得CPU指令执行速度变快,同时也相应提升HCLK和PCLK总线的速度。


二、实验目标

将S3C2440的FCLK系统时钟从12MHz提升到400MHz,HCLK提升到100MHz、PCLK提升到50MHz。运行LED闪烁程序。


三、S3C2440的时钟体系

1、时钟体系


时钟模块框图如下:

S3C2440A 中的时钟控制逻辑可以产生必须的时钟信号,包括 CPU 的 FCLK,AHB 总线外设的 HCLK 以及APB 总线外设的 PCLK。S3C2440A 包含两个锁相环(PLL):一个提供给 FCLK、HCLK 和 PCLK,另一个专用于USB 模块(48MHz)。时钟控制逻辑可以不使用 PLL 来减慢时钟,并且可以由软件连接或断开各外设模块的时钟以降低功耗。


2、锁相环


PLL(锁相环)方框图如下:


输入时钟Fin就是指的外部晶振12MHz的时钟,P、M和S是要配置的三个分频参数,会有专门的寄存器设置,然后MPLL或者UPLL就是经过倍频后的时钟了。但是PLL(锁相环)不可能将12MHz的输入时钟瞬间变为400MHz的时钟输出,从PLL开始工作到正常输出有一段时间需要等待,这段时间为多长也可以人为设置,在这段时间内由于时钟是不稳定的,所以PLL模块在这段时间内关断了时钟的输出,CPU也停止运行,等到时钟稳定了PLL再输出,CPU然后继续运行。如下图所示:

外部晶振的输入时钟经过MPLL的倍频后输出的时钟直接供给FCLK使用,也是ARM920T的工作时钟。由于基本的外设跑不到400MHz那么高的时钟,所以FCLK会经过HDIVN和PDIVN两个分频器,将时钟进行分频(降速)供HCLK和PCLK用。HCLK速度一般比PCLK跑的更快,因为FCLK 是提供给 ARM920T 的时钟。HCLK 是提供给用于 ARM920T,存储器控制器,中断控制器,LCD 控制器,DMA 和 USB 主机模块的 AHB总线的时钟。PCLK 是提供给用于外设如 WDT,IIS,I2C,PWM 定时器,MMC/SD 接口,ADC,UART,GPIO,RTC 和SPI 的 APB 总线的时钟。


3、时钟设置


为了获得想要的HCLK和PCLK时钟,有以下的一些分频设置:

我们选择1:4:8的分频配置,所以要设置HDIVN为2,PDIVN为1。


芯片手册上还提了以下两个注意点:


(1)应当谨慎设置 CLKDIVN,不要使其超过 HCLK 和 PCLK 的最小值。


(2)如果 HDIVN 不为 0,CPU 总线模式应该使用以下指令使其从快总线模式改变为异步总线模式(S3C2440不支持同步总线模式)。


MMU_SetAsyncBusMode


MRC p15, 0, r0, c1, c0, 0


ORR r0, r0, #R1_nF:OR:R1_iA


MCR p15, 0, r0, c1, c0, 0


以下就是一些寄存器的配置了:

LOCKTIME就是PLL(锁相环)的锁定时间设置了,默认值就行。U_LTIME和M_LTIME也都使用默认值。UPLLCON是设置USB时钟的,这里我们用不上不用管。就设置MPLLCON就行了,MPLLCON就是设置MDIV、PDIV和SDIV这三个参数。有如下的公式。


Mpll = ( 2 × m × Fin ) / ( p × 2 s )


m = ( MDIV + 8 ), p = ( PDIV + 2 ), s = SDIV


这里Fin是12000000,要得到Mpll为400000000,合理范围内取三个参数就行了。有以下的参考频率设置。

这里我们选择92,1,1的分频搭配,正好可以得到400MHz的FCLK时钟。


有了FCLK时钟,接下来要配置HCLK和PCLK。有如下的寄存器可以配置:

CLKDIVN寄存器中设置HDIVN为2,PDIVN为1。CAMDIVN寄存器由于默认为0,就不去设置了。


说了半天其实就设置两个寄存器而已。


四、代码编写

代码分为以下几个文件:


watchDog.S:启动文件。


main.c:运行LED闪烁程序。


Makefile:编译代码。


各个文件内容分别如下:


watchDog.S


@******************************************************************************

@ File:watchDog.S

@ 功能:掌握看门狗和时钟功能的相关设置

@******************************************************************************       

 

.text

.global _start

_start:

 

ldr     r0, =0x53000000     @ WATCHDOG寄存器地址

            mov     r1, #0x0                     

            str     r1, [r0]            @ 写入0,禁止WATCHDOG,否则CPU会不断重启

@ CLKDIVN(0X4C000014)=0X5,tFCLK:tHCLK:tPCLK=1:4:8

ldr r0,=0x4c000014

ldr r1,=0x5

str r1,[r0]

@ 设置CPU工作在异步模式

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

    orr r0,r0,#0xc0000000   //R1_nF:OR:R1_iA 

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

@ 设置MPLLCON(0X4C000004)=(92<<12)|(1|4)|(1<<0)

    @ m=MDIV+8=92+8=100

    @ P=PDIV+2=1+2=3

    @ S=SDIV=1

    @ FCLK=2*M*Fin/(P*2^S)=2*100*12/(3*2^1)=400m

ldr r0,=0x4c000004

ldr r1,=(92<<12)|(1<<4)|(1<<0)

str r1,[r0]

   @ 一旦设置PLL,就会锁定lock time直到PLL输出稳定

   @ 然后CPU工作于新的频率FCLK

   

 

ldr sp, = 1024 * 4 @因为要使用C语言,所以设置堆栈

bl main @跳转到main函数执行

halt_loop:

b halt_loop @死循环原地跳转


main.c


#define GPFCON (*(volatile unsigned long *)0x56000050)

#define GPFDAT (*(volatile unsigned long *)0x56000054)

 

void wait(volatile unsigned long dly)

{

for(; dly > 0; dly--);

}

 

int main()

{

GPFCON = 0x00001500;  //将GPF4、GPF5、GPF6设置为输出模式

while(1)

{

GPFDAT = 0x00000000;  //亮灯

wait(30000);

GPFDAT = 0x00000070;  //灭灯

wait(30000);

}

while(1);

return 0;

}


Makefile


watchDog.bin : watchDog.S  main.c

#汇编程序生成目标文件

arm-linux-gcc -g -c -o watchDog.o watchDog.S

#C程序生成目标文件

arm-linux-gcc -g -c -o main.o main.c

#将两个目标文件生成bin文件

arm-linux-ld -Ttext 0x0000000 -g  watchDog.o main.o -o watchDog_elf

arm-linux-objcopy -O binary -S watchDog_elf watchDog.bin

#输出反汇编

arm-linux-objdump -D -m arm  watchDog_elf > watchDog.dis

clean:

#删除bin和中间文件

rm -f watchDog.dis watchDog.bin watchDog_elf *.o

linux下执行make命令,将生成的bin文件烧写到开发板的NandFlash上,开机选择Nand启动,可以看到LED闪烁的现象,而且闪烁的速度明显快于未设置时钟倍频时的速度。


五、实验总结

通过该实验熟悉了S3C2440的时钟体系,大体上分为FCLK,HCLK,PCLK和UCLK,明白了各个时钟总线的运行时钟是如何得到的,掌握了时钟设置的原理和方法。

推荐阅读

史海拾趣

Delock公司的发展小趣事

为了保持技术的领先地位,Delock公司非常重视与高校、研究机构的研发合作。公司先后与多所知名大学和研究机构建立了紧密的合作关系,共同开展电子连接技术的研发和创新。这些合作不仅为Delock公司带来了源源不断的技术创新成果,也为公司培养了一批高素质的研发人才。通过与高校、研究机构的紧密合作,Delock公司在电子连接技术领域始终保持领先地位。

DL Instruments LLC公司的发展小趣事

DL Instruments LLC的前身是Ithaco Corporation的精密仪器部门。在Edgar Seymour总裁的领导下,这个部门于1995年被出售给当时担任Ithaco Corporation质量总监的David Woolston先生。这一决定标志着公司从一个大型企业的一个部门,转型为一个独立的、专注于精密仪器制造的新实体——DL Instruments LLC。

ADPOW公司的发展小趣事

在市场竞争日益激烈的背景下,ADPOW公司深知品质是生存和发展的关键。因此,公司建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。同时,公司注重品牌建设,通过广告宣传、参加展会等方式提升品牌知名度和美誉度。这些举措有效提升了公司的市场竞争力。

Digital Core Design公司的发展小趣事

然而,随着《古墓丽影》系列的不断发展,Core Design也面临了一些挑战。其中最为严重的是版权问题。由于Core Design在后续的一些作品中可能违背了“古墓”的本源,享有Lara Croft和《古墓丽影》版权的游戏发行商Eidos作出了剥夺Core Design《古墓丽影》系列开发权的决定。这一决定对Core Design来说无疑是一个巨大的打击,但也促使其开始寻找新的发展机遇。

FUJITSU(富士通)公司的发展小趣事

面对版权问题的挑战和市场的变化,Core Design开始寻求变革。公司的创始人Jeremy Heath-Smith和Adrian Smith在《古墓丽影:黑暗天使》发行后不久就辞去了在Eidos和Core的职务,并创立了新的工作室Circle Studio。然而,这个新工作室最终也未能逃脱被市场淘汰的命运。在2006年6月,Circle Studio被Eidos彻底抛弃,并卖给了另一家公司Rebellion。虽然Core Design的名字被保留下来,但其实际的开发团队和运营已经发生了巨大的变化。在这个过程中,Core Design不得不面对现实,寻找新的发展机遇和方向。

以上这些故事展示了Core Design在电子行业中的发展历程,包括其初创时期的艰辛、成功时期的辉煌、挑战时期的困境以及变革时期的新生。这些故事都基于事实,旨在客观地呈现Core Design的历史和发展。

Alliance Fiber Optics Products Inc公司的发展小趣事

随着产品质量的不断提升和市场需求的扩大,AFOP开始积极拓展国内外市场。公司通过与各大电信运营商、设备制造商等建立合作关系,将产品应用于长途通信、大都会网络以及最后一里接入等领域。同时,AFOP还积极参与国际光纤通信展览会等活动,加强与国际同行的交流与合作,提升了公司在国际市场的知名度。

问答坊 | AI 解惑

自动调台收音机电路图

自动调台收音机电路图…

查看全部问答>

四川省大学生电子设计竞赛西南科技大学赛区竞赛题目-灭火机器人

本帖最后由 paulhyde 于 2014-9-15 09:46 编辑 电子竞赛题目-灭火机器人robots 一、电子竞赛题目任务: 设计制作一个消防智能小车模型,能到指定区域进行抢险灭火工作。以蜡烛模拟火源,随机分布在场地中,场地如图所示: 二、电子竞赛题目 ...…

查看全部问答>

有没有烧掉过mini2440开发板的液晶屏啊?

前几天把板子借同学了,今天他告诉我说刚才调试的时候液晶屏烧掉了 说刚才调试的时候有烧焦的味道,后来还看到屏背后冒白烟了:L 拿回来之后把线重新插了一边也不行,一直黑屏,但是触摸屏功能测试是正常的;隐约可以看到黑色的屏幕内有闪动, ...…

查看全部问答>

LINUX,WINDOWS不同系统和环境下对实时处理的比较问题

如果要应用到接口信号的检测处理,同时对检测信号作时间精度作记录,对单片机,ARM7,ARM9,LINUX系统,WINDOWS系统的这些应用,排除处理器相关性,谁能给出一些区别的地方在哪里?单片机机器语言和底层的实时性最高?要是算时间的话晶振频率偏低, ...…

查看全部问答>

请前辈指点下这条指令是什么意思?

MOV  RO, R1, LSL #3       ;RO=R1*(2**3) 1. 这条指令注释中的*号是什么意思? 2. 这条指令注释中的2**3是什么意思,是2的3次方吗? 谢谢~~~~…

查看全部问答>

platform builder开始运行时出错

No primary processors are available. The build system will be disabled.It is likely that a build system \'add-0n\' processor(pkg), installed by Setup, failed to laod. 点确定后,跳出一个窗口,\"No debugger\" 我安装的是微软网站上 ...…

查看全部问答>

meego git+repo

(转)1.git安装sudo apt-get install git-core curl2.repo安装    首先在用户主目录下面创建一个文件夹bin,然后把该路径加入到环境path里面,具体方法如下:         编辑~/.bashrc, 在末尾加入一行 ...…

查看全部问答>

笔记本电脑电源适配器—应对效率挑战

引言 不久之前,笔记本电脑的功能有限,如功率要求仅为50-70瓦(W)。近年来,功率要求攀升到100 W范围以上,但重量和尺寸的期望没有相应地改善。此外,需要满足规范中的低待机功率性能、外部电源(EPS)效率要求和IEC1000-3-2对75 W以上输入功率的谐波 ...…

查看全部问答>

信号链基础知识合辑

自《电源开关设计秘笈30例》推出以来,得到广大工程师的热烈反响,   应大家的强烈要求,现推出由德仪资深工程师William P. (Bill) Klein 主笔的《信号链基础知识合辑》,   欢迎大家踊跃下载学习。       [ 本 ...…

查看全部问答>

轻松解决EMI之传导干扰的八大对策

电磁干扰EMI中电子设备产生的干扰信号是通过导线或公共电源线进行传输,互相产生干扰称为传导干扰。传导干扰给不少电子工程师带来困惑,如何解决传导干扰?找对方法,你会发现,传导干扰其实很容易解决,只要增加电源输入电路中EMC滤波器的节数,并 ...…

查看全部问答>