S3C2440 初始化时钟

发布者:DelightfulGaze最新更新时间:2024-07-25 来源: cnblogs关键字:S3C2440  时钟树 手机看文章 扫描二维码
随时随地手机看文章

一、S3C2440 时钟

1、时钟树

  • 从s3c2440的技术手册的时钟树可以了解到,它的时钟分四大块FCLK,HCLK,PCLK,UCLK。FCLK主要用于CPU的运行时钟,HCLK主要用于内存控制器,中断控制器等一些高速设备的时钟,PCLK主要用于GPIO控制器,I2C控制器等一些较低速设备的时钟,UCLK主要给USB控制器提供时钟的。时钟树如下图:

2、S3C2440支持的时钟速率

  • 1、S3C2440的最高速率:FCLK最高支持400MHz,HCLK最高支持136MHz,PCLK最高支持68MHz。

  • 2、在本实验将 FCLK设置为400MHz,HCLK设置为100MHz,PCLK设置为50MHz。

二、设置时钟

1、时钟源的选择

  • 1、s3c2440的时钟源,可以从晶振里来也可以从外部时钟来。来源于哪里可以由OM2和OM3管脚设置。

  • 2、由于我的板子接了12MHz的晶振,所以将晶振设置为输入的时钟源;OM2和OM3都设置为0。

2、锁相环设置(MPLLCON寄存器)

  • MPLLCON寄存器:

  • MPLL 时钟的计算公式:

  • S3C2440技术手册提供了配置值,直接使用它的配置值,这里就不自己计算了。

3、配置HCLK和PCKL分频(CLKDIVN寄存器)

4、设置锁存存时间(LOCKTIME)

  • 由于配置锁相环的时候需要等待它输出稳定的时钟,等待的这段时间由LOCKTIME配置

  • LOCKTIME 寄存器使用默认的值0xFFFFFFFF即可

5、设置异步模式

  • S3C2440技术手册有说明,如果FCLK的时钟频率不等于HCLK的频率时需要配置成异步模式,否则CPU使用HCLK作为运行的时钟频率。设置的方法手册上也有,需要通过设置它的协处理器。

  • 对于#R1_nF:OR:R1_iA这个立即数是什么,在S3C2440手册上没有给出。一般这些跟CPU核相关的设置,我们可以去看它的CPU核的技术文档(S3C2440的CPU核是arm920t)。在arm920t技术文档找到了nF和iA。如下图:

三、程序编写

1、汇编程序(Startup.S)

因为要设置p15协处理器,所以初始化时钟用汇编语言来写。


.text                     /*定义代码段*/

.global _start            /*标号_start是GNU连接器用来指定第一个要执行所必须的(只能出现在一个模块),.global将_start声明为全局可见*/


_start:

    

    /* 关看门狗 */

    ldr r1,=0x53000000

    mov r0,#0x00000000

    str r0,[r1]

    

    /* 设置栈 */

/* 自动分辨是nor flash 启动还是nand flash启动 */

/* 先将一个数写道0地址,然后读出来判断跟写入的值是否一样;跟写入的一样则是nand flash启动,跟写入的值不一样则是nor flash 启动 */

mov r1, #0

ldr r0, [r1] /* 读出原来的值备份 */

str r1, [r1] /* 0->[0] */ 

ldr r2, [r1] /* r2=[0] */

cmp r1, r2   /* r1==r2? 如果相等表示是NAND启动 */

ldr sp, =0x40000000+0x1000 /* 先假设是nor启动,0x40000000 + 4k处 */

moveq sp, #0x1000  /* nand启动, 将栈设置在4k处 */

streq r0, [r1]   /* 恢复原来的值 */

#if 1

    /* 初始化时钟 */

    

    /* 设置锁存时间 LOCKTIME=0xffffffff */

    ldr r1,=0x4C000000

    ldr r0,=0xffffffff

    str r0,[r1]

    /* 设置HDIVN,PDIVN分频系数,让FCLK:HCLK:PCLK=1:4:8 */

    ldr r1,=0x4C000014

    mov r0,#0x00000005

    str r0,[r1]

    /* 设置Mpll锁相环 MDV=0x5c,PDIV=1,SDIV=1 */

    ldr r1,=0x4C000004

    ldr r0,=((0x5c<<12)|(1<<4)|(1<<0))

    str r0, [r1]

    /* 设置锁相环时钟源,使能锁相环 */

    ldr r1,=0x4C000010

    mov r0,#0x00000004

    str r0,[r1]

    /* 设置时钟为异步模式 */

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

    orr r0,r0,#0xc0000000

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

#endif

    b main

loop:

    b loop

2、主程序(main.c)

main函数里面主要做了led灯闪烁的事情

/* 定义GPFCON 寄存器 */


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


/* 定义GPFDAT 寄存器 */

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



void delay(int tim){

while(tim--);

}



int main(){

/* 清零 */

GPFCON &= ~(0x03 << 8);

/* 设置为output */

GPFCON |= (0x01<<8);

while(1){

/* 将 GPF4 输出低电平 */

GPFDAT &= ~(1<<4);

delay(0x10000);

/* 将 GPF4 输出高电平 */

GPFDAT |= (1<<4);

delay(0x10000);

}

return 0;

}



3、Makefile

all:

arm-linux-gcc -c Startup.S -o Startup.o

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

arm-linux-ld -Ttext 0 Startup.o main.o -o Led.elf

arm-linux-objcopy -O binary -S Led.elf Led.bin

arm-linux-objdump -D Led.elf > led.dis

clean:

rm *.o *.elf *.bin *.dis

四、实验现象

通过初始化时钟后和不初始化时钟的led灯闪烁的快慢成都不一样。通过现象可以看到初始化时钟后led灯闪烁的更快,也就是说CPU的运行频率更快了。


关键字:S3C2440  时钟树 引用地址:S3C2440 初始化时钟

上一篇:S3C2440 用C语言点亮LED
下一篇:u-boot-1.3.4移植到s3c2440之nand驱动

推荐阅读最新更新时间:2024-11-08 11:37

S3C2440-时钟计算
S3C2440有两个PLL(phase locked loop)一个是MPLL,一个是UPLL。MPLL用于CPU及其他外围器件,UPLL用于USB。 S3C2440A 中的时钟控制逻辑可以产生必须的时钟信号,包括CPU 的FCLK,AHB 总线外设的HCLK 以及APB 总线外设的PCLK。S3C2440A 包含两个锁相环(PLL):一个提供给FCLK、HCLK 和PCLK,另一个专用于USB 模块(48MHz)。时钟控制逻辑可以不使用PLL来减慢时钟,并且可以由软件连接或断开各外设模块的时钟, 从S3C2440的DataSheet里可以看到,S3C2440最大支持400MHz的主频,但是这并不意味着一定工作在400MH
[单片机]
linux-2.6.35.3内核移植(s3c2440
宿 主机:Fedora13 目标 机:s3c2440 交叉 编译 器:arm-linux-gcc-3.4.1 交叉编译器路径:/usr/local/arm/3.4.1 要移植 的内核 版本:linux-2.6.35.3 文件 系统 类型: yaffs2 一、准备工作 1、下载 解压内核 从官网上下载linux-2.6.35的内核, ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ ,文件不大,约85M。 新建一个工作目录s3c2440,将内核源码包拷贝至工作目录下,再解压。 2、移植yaffs2驱动 下载最新的驱动http://www.aleph1.co.uk/cgi
[单片机]
S3C2440结构和启动流程
S3C2440结构如下图: 启动过程:大多数ARM芯片从0地址启动 1、NOR启动,NOR Flash基地址为0,片内RAM地址为0x40000000. CPU读出NOR上第一个指令(前4字节),执行。 CPU读出NOR上其它指令,执行。 2、NAND启动,片内4kRAM基地址为0,NOR Flash不可访问。 2440硬件把NAND前4k内容复制到片内RAM, 然后CPU从0地址取出第一条指令执行。
[单片机]
<font color='red'>S3C2440</font>结构和启动流程
基于S3C2440的嵌入式IPv6防火墙设计
  1 引言   在众多的网络安全设施中,防火墙是行之有效的重要网络安全设备,通过对网络通信进行筛选屏蔽以防未经授权的访问进出计算机网络。防火墙是位于可信网络和不可信网络之间的一道安全屏障,其最核心的任务就是管理和控制进出网络的通信量,它可以截获中途传输的数据包并进行处理,然后与事先定义好的安全策略规则相比较,并最终决定转发或丢弃该数据包。传统的防火墙通常位于一段网络的边界,它可以很好的过滤外界用户对内部网络的访问,但对内部网络的攻击却无能为力。针对此问题近年来关于新型防火墙的研究有很多,如分布式防火墙系统,嵌入式防火墙系统等。这些系统的目的是将防火墙的边界延伸,使其能够遍布网络的每一个终端设备,构建全方位的安全防护网络。  
[单片机]
基于<font color='red'>S3C2440</font>的嵌入式IPv6防火墙设计
s3c2440的dma操作的一般步骤
s3c2440的dma操作的一般步骤 一般的,在s3c2440中,要想进行dma传输,需要一下七个步骤: 一: int s3c2410_dma_request(unsigned int channel, struct s3c2410_dma_client *client, void *dev) s3c2410_dma_client的定义为: struct s3c2410_dma_client { char *name; }; 以uda1314的驱动为例,驱动中定义了两个s3c2410_dma_client static struct s3c2410_dma_client s3c
[单片机]
基于S3C2440嵌入式Linux的步进电机驱动程序
在嵌入式Linux开发过程中需要为指定设备编写和编译驱动程序,这与以往在PC机上的Linux驱动开发明显不同,本文设计了基于S3C2440嵌入式Linux下激光雕刻系统的步进电机驱动程序。 1 硬件系统的设计 步进电机开环控制系统主要由中央控制器、步进电机驱动器、传感器以及步进电机四大部分组成。本系统采用基于ARM920t内核的S3C244 0A微处理器作为控制系统的中央控制器,该芯片主频400MHz,最高可达到533MHz,内含多种设备接口,存储器使用64MB的Nand Flash和64MB的SDRAM。图1所示为控制系统框图。 2 系统的工作原理 本系统主要控制两个两相混合式步进电机,分别代表X轴和Y轴带动
[单片机]
基于<font color='red'>S3C2440</font>嵌入式Linux的步进电机驱动程序
基于嵌入式的远程监控系统的设计
 对图像监控系统,用户常常提出这样的功能需求:希望能够监控距离较远的对象。这些对象有可能分布在郊区、深山,荒原或者其他无人值守的场合;另外,希望能够获取比较清晰的监控图像,但对图像传输的实时性要求并不高,很明显,用传统的PC机加图像采集卡的方式很难满足这样的需求。 在嵌入式领域,ARM9系列微处理器在高性能和低功耗方面提供了最佳的性能,因此选用ARM9嵌入式处理器S3C2440设计实现了一个远程图像光线监控系统通过这个系统,可以远在千里之外控制一个摄像机进行图像采集并回传。如果这个摄像机有一个485接口的云台,还可以通过互联网远程控制摄像机的取景角度、镜头拉伸、聚焦等功能。 除了获取图像数据.系统还提供了多路开关控制和 数
[单片机]
基于嵌入式的远程监控系统的设计
基于嵌入式Linux的晶体生长控径系统的研究
   1 引言   随着单晶硅片制造向大直径化发展,直拉法单晶硅生长技术在单晶硅制造中逐渐显出其主导地位。为使结晶过程更加稳定和实用有效,则需提高对工艺参数的控制精度,基于CCD摄像扫描识别技术的单晶硅等径生长速度控制技术得到业界的重视。   基于ARM的单晶硅测径系统具有巨大的市场潜力。因此,这里研究了单晶硅测径系统的图像采集、处理及显示。    2 整体方案设计   系统上电后,CCD摄像头拍摄单晶炉炉膛内晶体硅棒生长区域图像,并传送至嵌入式系统,通过观察在VGA接口显示器上显示的图像清晰度来对摄像头调焦。图像经数字图像处理程序处理,计算出单晶硅棒的瞬时直径。系统把直径的数字量送至D/A转换器,再把转换的模拟量
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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