【嵌入式开发】时钟初始化 ( 时钟相关概念

您所在的位置:网站首页 ppll电脑配件是什么意思 【嵌入式开发】时钟初始化 ( 时钟相关概念

【嵌入式开发】时钟初始化 ( 时钟相关概念

2024-07-12 20:29| 来源: 网络整理| 查看: 265

文章目录 一. 时钟相关概念解析1. 相关概念术语( 1 ) 时钟脉冲信号 ( 概念 : 电压幅度 时间间隔 形成脉冲 | 作用 : 时序逻辑基础 间隔固定 根据脉冲数量可计算出时间 )( 2 ) 时钟脉冲频率 ( 概念 : 单位时间内产生的脉冲个数 )(3) 时钟源 ( 产生来源 : ① 晶振 ② 锁相环 PLL | 晶振 : 晶体震荡电路 | PLL 锁相环 : 晶振 + PLL 合成 | 晶振 与 PLL 对比 优缺点 ) 二. 时钟体系简介1. 2440 开发板 时钟体系(1) 2440 开发板时钟体系介绍 ( 12MHz 晶振 | 2 PLL : ① MPLL ② UPLL | MPLL -> ① FCLK [ ARM 核 ] ② HCLK [ AHB 总线 ] ③ PCLK [ APB 总线 ] | UPLL -> UCLK [ USB 总线 ] )(2) 6410 开发板时钟体系介绍 ( 12MHz 晶振频率 | 3 PLL : ① APLL ② MPLL ③ EPLL | APLL -> ACLK [ ARM 核 ] | MPLL -> ① HCLK [ AHB 总线 ] ② PCLK [ APB 总线 ] | EPLL -> SCLK [ USB 总线 ] )(3) S5PV210 开发板时钟体系介绍 ( 24MHz 晶振频率 | 4 PLL ① APLL ② MPLL ③ EPLL ④ VPLL ) 三. S3C6410 初始化时钟1. S3C 6410 时钟初始化流程简介(1) CPU 频率变化过程 ( ① 上电后 12MHz | ② 配置 PLL | ③ 处于 Lock Time 频率 0Hz | ④ 正常 PLL 频率 )(2) 时钟初始化的四个步骤 ( ① 配置 Lock Time | ② 设置分频系数 | ③ 设置 APLL MPLL 频率 | ④ 设置 CPU 工作模式 -> 异步工作模式 ) 2. S3C 6410 时钟初始化 汇编代码编写(1) 配置 Lock Time(2) 设置分频系数(3) 设置 CPU 异步工作模式(4) 设置 APLL 和 MPLL 时钟频率(5) 设置 时钟源(6) 代码示例 3. 链接器脚本4. Makefile 编译脚本5. 编译输出可执行文件6. 烧写代码到开发板并执行( 1 ) OK6410 开发板启动切换方式( 2 ) 制作 SD 卡启盘 并 准备程序( 3 ) SecureCRT 连接开发板并烧写程序 7. 将程序烧写到开发板上运行 ( 仅做参考 )

本博客的参考文章及相关资料下载 :

1.本博客代码及参考手册下载 :https://download.csdn.net/download/han1202012/10606616 一. 时钟相关概念解析 1. 相关概念术语 ( 1 ) 时钟脉冲信号 ( 概念 : 电压幅度 时间间隔 形成脉冲 | 作用 : 时序逻辑基础 间隔固定 根据脉冲数量可计算出时间 )

时钟脉冲信号 :

这里写图片描述

1.概念 : 按照 一定的电压幅度 和 一定的时间间隔 , 连续发出的 脉冲信号, 就是 时钟 脉冲信号;2.重要作用 : 时钟脉冲信号 是 时序逻辑的 基础, 脉冲信号的 间隔是固定的, 可以 根据脉冲信号的个数 及 间隔 计算出对应的时间 ;3.应用场景 : 芯片 中的 晶体管 工作状态 都是由 0 1 组成, 即 开和关, 控制这些开关操作都是 按照 时钟信号 的 节奏 进行 的;4.说明示例 : 现在的主流 CPU i7 8700K 主频是 3.7GHz, 其中 1 GHz = 10^3 MHz = 10^6 KHz = 10^9 Hz 即 10亿 Hz, 每秒钟有 37亿 次时钟脉冲信号; 也就是 经常说的 每秒钟 运算 37 亿次; 当前的超级计算机可以到达 每秒 2亿亿次; ( 2 ) 时钟脉冲频率 ( 概念 : 单位时间内产生的脉冲个数 )

时钟脉冲频率 :

1.概念 : 单位时间内 产生 的 时钟脉冲个数 就是 时钟脉冲频率;2.举例 : 1秒中 产生 1次, 就是 1Hz, 1秒钟产生 100 次就是 100Hz, 上面举例的 i78700K CPU, 一秒钟产生 37亿次, 就是 3.7GHz 的时钟脉冲频率; (3) 时钟源 ( 产生来源 : ① 晶振 ② 锁相环 PLL | 晶振 : 晶体震荡电路 | PLL 锁相环 : 晶振 + PLL 合成 | 晶振 与 PLL 对比 优缺点 )

时钟源 : 时钟脉冲信号 是由 晶振 或 锁相环 PLL 产生;

1.晶振 : 全称 晶体振荡器, 是由 石英晶体 制作的, 石英晶体 ① 按照一定的方位角 切割, 并 ② 在其内部添加电子元件组成振荡电路; ① 震荡特性 : 如果 给晶振通电, 就会产生机械震荡, 其 频率由 制作的材质, 切割角度 等决定;② 物理特性 : 石英非常 稳定, 其控制的 震荡频率也很稳定, 其 频率可以根据集合尺寸精确控制;③ 晶振优势 : 晶振具有 A. 结构简单, B. 噪音低, C. 可提供精确定制的频率, 等优点;④ 晶振缺陷 : A. 生产成本高 , B. 交货的周期很长; 2.PLL(锁相环) : 锁相环 比 晶振 更复杂, PLL 需要一个外部晶振作为输入, PLL 可以对外部晶振产生的频率进行 加倍 或 分频 操作, 即 提高 或 降低 频率; ① 使用场景 : 简单系统一般采用 石英晶振, 复杂的系统采用 晶振 + PLL 合成 提供时钟源;② 降低成本 : 如果需要特定的时钟频率, 可以使用 PLL + 低频晶振 代替高频的晶振 , 这样成本比较低;③ 多时钟频率系统 : 如果 在一个设备上需要多个时钟频率系统, 可以使用 PLL + 晶振 合成提供时钟源, PLL 将 晶振频率 进行 加倍 或 分频 即可得到不同频率的时钟源;④ 与晶振对比 : PLL + 晶振 比 纯晶振 成本要低, 并且提供更加灵活多变的时钟频率 ; 二. 时钟体系简介

时钟体系学习步骤 : 对不不同的时钟体系, 需要按照下面的学习步骤学习即可; ① 晶振频率 ; ② PLL 个数 及 种类 ; ③ PLL 产生的时钟类型; ④ PLL 产生的时钟作用;

1. 2440 开发板 时钟体系

参考手册 : S3C2440.pdf , 章节 : 7 CLOCK & POWER MANAGEMENT , Page 235;

(1) 2440 开发板时钟体系介绍 ( 12MHz 晶振 | 2 PLL : ① MPLL ② UPLL | MPLL -> ① FCLK [ ARM 核 ] ② HCLK [ AHB 总线 ] ③ PCLK [ APB 总线 ] | UPLL -> UCLK [ USB 总线 ] )

2440 开发板时钟体系介绍 :

1.晶振频率 : 12MHz;2.PLL (锁相环) : 有 2 个 PLL, 分别是 MPLL 和 UPLL;3.产生时钟个数 : ① MPLL 锁相环 产生出 FCLK , HCLK, PCLK 三个时钟; ② UPLL 锁相环 产生出 UCLK 时钟;4.各个时钟作用 : ① FCLK 时钟作用 : 处理器 中使用, ARM 核使用的时钟是 FCLK, 该时钟是 MPLL 产生的;② HCLK 时钟作用 : AHB 总线中使用, 如 LCD, DMA 控制, 该时钟是 MPLL 产生的;③ PCLK 时钟作用 : APB 总线中使用, 如 Uart 串口, GPIO, 该时钟是 MPLL 产生的;④ UCLK 时钟作用 : USB 总线中使用, 该时钟是 UPLL 产生的; 5.2440 时钟体系图示 : 该图在 S3C2440.pdf 文档中的 7 CLOCK & POWER MANAGEMENT 章节, 237 页 ;

这里写图片描述

(2) 6410 开发板时钟体系介绍 ( 12MHz 晶振频率 | 3 PLL : ① APLL ② MPLL ③ EPLL | APLL -> ACLK [ ARM 核 ] | MPLL -> ① HCLK [ AHB 总线 ] ② PCLK [ APB 总线 ] | EPLL -> SCLK [ USB 总线 ] )

参考手册 : S3C6410X.pdf , 章节 : 3.3.4.1 Clock selection between PLLs and input reference clock , Page 124;

6410 开发板时钟体系介绍 :

1.晶振频率 : 12MHz;2.PLL (锁相环) : 有 3 个 PLL, 分别是 APLL , MPLL 和 EPLL;3.产生时钟个数 : ① APLL 锁相环 产生出 ACLK 一个时钟; ② MPLL 锁相环 产生出 HCLK, PCLK 时钟; ③ EPLL 产生 SCLK 时钟;4.各个时钟作用 : ① ACLK 时钟作用 : 处理器中使用, ARM核中使用 ACLK 时钟, 该时钟是 APLL 锁相环产生;② HCLK 时钟作用 : AHB 总线中使用, 如 LCD, DMA ; 该时钟是 MPLL 产生的;③ PCLK 时钟作用 : APB 总线中使用, 如 Uart 串口, GPIO 中使用, 该时钟是 MPLL 产生的;④ SCLK 时钟作用 : USB 总线中使用, 该时钟是 EPLL 锁相环产生的; 5.6410时钟体系图示 : 该图在 S3C6410X.pdf 文档中的 3.3.4.1 Clock selection between PLLs and input reference clock 章节, 124 页 ;

这里写图片描述

(3) S5PV210 开发板时钟体系介绍 ( 24MHz 晶振频率 | 4 PLL ① APLL ② MPLL ③ EPLL ④ VPLL )

参考手册 : S5PV210_UM_REV1.1.pdf , 章节 : 3.4 CLOCK GENERATION , Page 361;

S5PV210 开发板时钟体系介绍 :

1.晶振频率 : 24MHz;2.PLL (锁相环) : 有 4 个 PLL, 分别是 APLL , MPLL , EPLL 和 VPLL;3.S5PV210 的 时钟体系分类 : 分为 以下 三类 ; ① 主系统时钟体系 : MSYS , 由 APLL 锁相环产生, 产生的时钟有 ARMCLK, HCLK_MSYS, PCLK_MSYS , 应用在 ARM 核 中;② 显示相关时钟体系 : DSYS , 由 MPLL 锁相环产生, 产生的时钟有 HCLK_DSYS, PCLK_DSYS, 主要应用在显示相关的部件中 ;③ 外围设备时钟体系 : PSYS , 由 EPLL 锁相环产生, 产生的时钟有 HCLK_PSYS, CLK_DPM, 主要用于外设, 如 Uart 串口 等;④ VPLL 锁相环产生的时钟 : VPLL 产生的时钟 主要用于视频处理; 4.S5PV210时钟体系图示 : 该图在 S5PV210_UM_REV1.1.pdf 文档中的3.4 CLOCK GENERATION, 361 页 ; 这里写图片描述 三. S3C6410 初始化时钟 1. S3C 6410 时钟初始化流程简介 (1) CPU 频率变化过程 ( ① 上电后 12MHz | ② 配置 PLL | ③ 处于 Lock Time 频率 0Hz | ④ 正常 PLL 频率 )

CPU 上电后 从 低频率 到 高频率的变化过程 :

1.上电后的工作频率 : 上电后 ARM 核的工作频率就是晶振频率, 即 12MHz, 这个速度非常慢;2.配置锁相环 : 配置锁相环, 使 频率 增加;3.Lock Time 时间 : 配置 PLL 锁相环后, 会出现一段不工作的时间, 此时 CPU 频率为 0Hz, 这段时间叫 Lock Time;4.正常频率 : 在 Lock Time 之后, 就会进入正式的 锁相环 工作频率, 此时的频率是 晶振频率 经过 锁相环 处理后的 高频率;5.图示 : 下图是处理器上电后各种参数的变化, 横轴是时间轴, 没有纵轴, 各个参数在上电后的每个时间段的表现; 这里写图片描述

整个时钟初始化流程是需要软件帮助进行的, 因此这些步骤需要开发者进行开发, 这也是该博客的主要内容;

(2) 时钟初始化的四个步骤 ( ① 配置 Lock Time | ② 设置分频系数 | ③ 设置 APLL MPLL 频率 | ④ 设置 CPU 工作模式 -> 异步工作模式 )

时钟初始化流程 :

1.配置 Lock Time : 配置 PLL 锁相环后会有一段 CPU 频率为 0 的时间, 这段时间处理器不工作, 这段时间就是 Lock Time;2.设置分频系数 : 通过 为 不同的时钟设置不同的分频系数, 根据这个分频系数, 来确定每个时钟的频率;3.设置 APLL MPLL 频率 : 设置一个时钟的频率, 可以根据分频系数计算出其它所有时钟的频率了;4.设置 CPU 工作模式 : 如果 FCLK 与 HCLK 的频率不同, 那么 CPU 需要设置为 异步工作模式, FCLK 是 ARM 核的时钟, HCLK 是 总线时钟, 如果两个时钟不一致, 需要将 CPU 设置为 异步工作模式; ① 常用设置 : 一般情况下 设置 分频系数的时候, 不会给 FCLK 与 HCLK 设置相同的分频系数, 因此, 该步骤大部分情况下都要执行; 2. S3C 6410 时钟初始化 汇编代码编写

参考手册 : ARM芯片 手册 S3C6410X.pdf ( 基于 6410 开发板 ARM 11 )

1.手册对应章节 : 3 SYSTEM CONTROLLER;2.S3C6410X.pdf手册下载地址 : (1) 配置 Lock Time

配置 Lock Time :

1.文档位置 : S3C6410X.pdf 手册, Page 141, 3.4.2.1 PLL Control Registers 章节; 这里写图片描述2.默认设置不变 ( 推荐 ) : 一般情况下, 使用开发板的默认设置即可, 如果有特殊定制需求才修改该 PLL_LOCK 寄存器的值; (2) 设置分频系数

设置分频系数 :

1.相关文档位置 : S3C6410X.pdf 手册, Page 125, 3.3.4.2 ARM and AXI/AHB/APB bus clock generation 章节; 这里写图片描述2.APLL 锁相环 : 12 MHz 的晶振频率, 经过 APLL 锁相环 产生 输出时钟, 该输出时钟 经过 DIVARM 分频, 产生 ARMCLK, 这是 ARM 核使用的时钟;3.MPLL 锁相环 : 12MHz 晶振频率时钟, 经过 MPLL 锁相环 产生的 时钟, 该时钟 经过 DIVHCLKX2 分频后, 产生 HCLKx2 时钟, 同时 DIVHCLKX2 分频后的时钟 又 经过不同的 分频 产生 HCLK, PCLK, CLKJPEG, CLKSECUR 时钟; ① HCLK 时钟 : HCLKx2 时钟 经过 DIVHCLK 分频后, 产生 HCLK 时钟;② PCLK 时钟 : HCLKx2 时钟 经过 DIVPCLK 分频后, 产生 PCLK 时钟;③ CLKJPEG 时钟 : HCLKx2 时钟 经过 DIVCLKJPEG 分频后, 产生 CLKJPEG 时钟;④ CLKSECUR 时钟 : HCLKx2 时钟 经过 DIVCLKSECUR 分频后, 产生 CLKSECUR 时钟; 4.分频参数参考 : 不同的时钟分频器的分频参数列表 , 来源 S3C6410X.pdf 手册, Page 126, 3.3.4.2 ARM and AXI/AHB/APB bus clock generation 章节; 这里写图片描述5.时钟分频公式 : 文档位置 S3C6410X.pdf 手册, Page 126, 3.4.2.3 Clock divider control register 章节; ① DIVARM 分频公式 : ARMCLK = DOUTAPLL / (ARM_RATIO + 1) , DOUTAPLL 是 APLL 锁相环输出的时钟, ARM_RATIO 是设置的分频系数;② DIVHCLKX2 分频公式 : HCLKX2 = HCLKX2IN / (HCLKX2_RATIO + 1), HCLKX2IN 是 MPLL 锁相环的输出时钟频率, HCLKX2_RATIO 是设置的分频系数;③ DIVHCLK 分频公式 : HCLK = HCLKX2 / (HCLK_RATIO + 1), HCLKX2 是 DIVHCLKX2 分频后的时钟频率, HCLK_RATIO 是设置的分频系数;④ DIVPCLK 分频公式 : PCLK = HCLKX2 / (PCLK_RATIO + 1), HCLKX2 是 DIVHCLKX2 分频后的时钟频率, PCLK_RATIO 是设置的分频系数; 6.PLL 锁相环输出频率 : ① APLL 锁相环输出频率 : 533 MHz ;② MPLL 锁相环输出频率 : 533 MHz ; 7.具体参考参数设置 : 从 6410 开发板中的 u-boot 源码中查找相关的时钟 分频系数 ; ① DIVARM 分频参数 : 0 , APLL 输出频率为 533MHz, 根据公式计算 ARMCLK 时钟频率为 533MHz;② DIVHCLKX2 分频参数 : 1 , MPLL 输出频率 533MHz, 根据公式计算 HCLKX2 时钟为 266 MHz;③ DIVPCLK 分频参数 : 3 , HCLKX2 时钟为 266 MHz, PCLK 频率为 66MHz;④ DIVHCLK 分频参数 : 1 , HCLKX2 时钟为 266 MHz, HCLK 频率为 133MHz;

设置分频系数代码编写 :

1.定义分频控制寄存器( Clock divider control register ) 地址 : 之前说的 分频参数 都是通过 CLK_DIV0 寄存器设置的, 将 CLK_DIV0 的地址定义成常量, #define CLK_DIV0 0x7E00F020; 这里写图片描述2.定义分频参数的值 : 参考 CLK_DIV0 值的表格 设置 CLK_DIV0 寄存器的实际值; ① 定义 ARM_RATIO 分频参数 : 这个参数设置成 0, CLK_DIV0 寄存器的 [3:0] 位 设置该参数, 该参数单独为 0x0


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3