在数据手册《S5PV210_UM_REV1.1》中的section 02_system/3 CLOCK CONTROLLER(354页)
一、时钟域
在S5PV210的SoC中,时钟系统分为三个区域:MSYS、DSYS、PSYS。

(1)MSYS:CPU(Cortex-A8内核)、DRAM控制器(DMC0和DMC1)、IRAM、IROM等
(2)DSYS:主要是视频图像解码相关的时钟
(3)PSYS:内部外设相关(串口、SD、USB、GPIO、IIC、SPI等)
二、时钟源
可以通过四个晶振作为时钟源信号输入,通过MUX开关进行选择,再使用PLL进行倍频。

三、详细分析
需要设置的几个关键寄存器
(1)CLK_SRC0:用来配置时钟源,对应框图中的MUX开关
(2)APLL_LOCK:配置APLL锁相环
(3)MPLL_LOCK:配置MPLL锁相环
(4)CLK_DIV0:配置分频系数
(5)APLL_CON0:配置锁相环倍频系数
(6)MPLL_CON:配置锁相环倍频系数
配置代码如下:
1 void clock_init(void)
2 {
3 // 第1步:设置时钟开关,使用24MHz的原始时钟源
4 rREG_CLK_SRC0 = 0x0;
5
6 // 第2步:设置PLL锁定时间(使用默认值即可)
7 // 默认是:0x0fff 我们设置为:0xffff
8 rREG_APLL_LOCK = 0x0000ffff;
9 rREG_MPLL_LOCK = 0x0000ffff;
10
11 // 第3步:设置DIV分频系数
12 rREG_CLK_DIV0 = 0x14131440;
13
14 // 第4步:设置PLL倍频系数
15 // FOUT = MDIV*FIN/(PDIV*2^(SDIV-1)) = 0x7d*24(0x3*2^(1-1))=1000MHz
16 rREG_APLL_CON0 = APLL_VAL;
17 // FOUT = MDIV*FIN/(PDIV*2^(SDIV-1)) = 0x29b*24(0xc*2^(1))=667MHz
18 rREG_MPLL_CON = MPLL_VAL;
19
20 // 第5步:设置各种时钟开关,使用PLL通过
21 rREG_CLK_SRC0 = 0x10001111;
22 }
最后配置的结果如下:


注意:重点是学会如何看懂这种类型的时钟框图,学会分析这一类的问题
关键字:S5PV210 时钟系统 SoC
引用地址:
总结:S5PV210时钟系统
推荐阅读最新更新时间:2026-03-25 10:33
S5PV210初始化系统时钟
S5PV210时钟体系 S5PV210中包含3大类时钟domain,分别是主系统时钟domain (简称MSYS,下面将使用简称来进行相关讲解)、显示相关的时钟domain (DSYS)、外围设备的时钟domain (PSYS)。 1) MSYS:用来给cortex a8处理器,dram控制器,3D,IRAM,IROM,中断控制器等提供时钟; 2) DSYS:用来给显示相关的部件提供时钟,包括FIMC, FIMD, JPEG, and multimedia IPs; 3) PSYS:用来给外围设备提供时钟,如i2s, spi,i2c,uart等 S5PV210外接的晶振频率(简称Fin)为24MHz,通过时钟控制逻辑PLL可以提高
[单片机]
Linux-3.0.8中基于S5PV210的IRQ模块代码追踪和分析
init/main.c: 1 asmlinkage void start_kernel(void) 2 { 3 ...... 4 early_irq_init(); 5 init_IRQ(); 6 ...... 7 } early_irq_init()函数有两种实现,一种是基于radix tree,一种是定义静态数组,如果要使用radix tree实现的,那么需要打开SPARSE_IRQ配置选项,由于我对数据结构不了解,所以分析以下静态数组实现方式版本的。 /kernel/irq/irqdesc.c 1 struct irq_desc irq_desc __cacheline_aligned_in_
[单片机]
S5PV210版本NDT嵌入式Linux主机目录分布及开发流程简要说明
开发才用win10宿主机+VMWare12.5+Ubuntu14.04 LTS虚拟机环境。 1、文件目录介绍 开发机器所建用户名为administrator,机器密码为******。 嵌入式QT目录:/home/administrator/linuxtools/armqt/ tftp共享目录:/home/administrator/tftp 根文件系统: /home/administrator/rootfs 内核目录: /home/administrator/kernel/linux-2.6.35.7 工程目录: /home/administrator/NDT-2015/NDT-F 2、
[单片机]
s5pv210编译qt
编译tslib,执行make时提示undefined reference to `rpl_malloc' 是因为config.h.in文件中有 /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc 把#undef malloc注释掉重新make即可 requires installation of untrusted packages 一、在源里面加入软件下载地址; 二、直接用“sudo apt-get install 软件包名”这个命令安装。 在出现提示的时候按y,同意安装即可。 e
[单片机]
【ARM裸机s5pv210 】时钟配置
clock.c // 时钟控制器基地址 #define ELFIN_CLOCK_POWER_BASE 0xE0100000 // 时钟相关的寄存器相对时钟控制器基地址的偏移值 #define APLL_LOCK_OFFSET 0x00 #define MPLL_LOCK_OFFSET 0x08 #define APLL_CON0_OFFSET 0x100 #define APLL_CON1_OFFSET 0x104 #define MPLL_CON_OFFSET 0x108 #define CLK_SRC0_OFFSET 0x200 #define CL
[单片机]
【ARM裸机s5pv210 】汇编开栈跳转 C语言
makefile final.bin: start.o led.o arm-linux-ld -Ttext 0x0 -o start.elf $^ arm-linux-objcopy -O binary start.elf final.bin %.o : %.S arm-linux-gcc -o $@ $ -c -nostdlib //不连接系统标准启动文件和标准库文件,只把指定的文件传递给连接器 %.o : %.c arm-linux-gcc -o $@ $ -c -nostdlib clean: rm *.o *.elf *.bin -f start.S #define W
[单片机]
s5pv210 cpu运行debian
1.环境准备 sudo apt-get install binfmt-support qemu qemu-user-static debootstrap 2.获取debian根文件系统 2.1.cd /opt 2.2.sudo debootstrap --foreign --arch armel wheezy wheezy_fs http://ftp.debian.org/debian/ 3.为chroot做准备 3.1.cp /usr/bin/qemu-arm-static /opt/wheezy_fs/usr/bin/ 3.2.sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINT
[单片机]
S5PV210之beep驱动从linux2.6.35.7移植到linux3.0.8
beep驱动从linux2.6.35.7内核移植到linux3.0.8,修改的部分为: '='后面的为修改后的 .ioctl = .unlocked_ioctl static int beep_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) = static int beep_ioctl(struct file *file, unsigned int cmd, unsigned long arg) beep_ioctl函数中struct inode *inode去掉,原因是b
[单片机]