时钟初始化是个比较烦锁的过程,流程比较长,其中涉及到大量的端口操作,要理解的基础知识也较多。本文先分析一下时钟初始化的原理,后续再说明如何编程实现该过程。

1. What & Why

很多设备都要求输入一定频率的时钟才可以工作,比较明显的例子是CPU。当然除了CPU外还有其他的设备,可以说时钟是这些设备的心脏,没有时钟它们是不会工作的(切断或降低时钟能达到降频减耗的目的)。在开发板刚启动时,时钟处于一个很低的频率,要我们做一些初始化的工作才能把频率提上去,为设备提供所需的工作时钟频率。这就是为什么要进行时钟初始化。

2. Princeple

时钟初始化涉及到很多电子电路的知识,本人并非该科班出身,只能借助Google做些浅薄的理解。

(1) PLL

PLL (Phase-Locked Loop), 锁相环,主要用于产生与基准时钟同步的振荡信号。

PFD是鉴频鉴相器,PUMP是电荷泵,两个模块组合起来可以通过比较输入时钟信号和反馈时钟信号的频率以及相位来控制环路滤波器(Loop Filter)的电压,从而实现控制VCO(振荡器)的频率,得到我们想要的时钟。P/M/S可以理解成分频器控制逻辑,通过三个控制字,是PLL输出频率的选择更加方便。

总的来说,PLL可以基于输入时钟产生一个新的时钟,该时钟频率可以通过调用P/M/S参数来达到调节输出时钟频率的目的。我们要提高系统时钟的操作可以归结为对PLL的P/M/S参数设置。

(2) AMBA总线

AMBA(Advanced Microcontroller Bus Architecture)总线规范是ARM 公司设计的一种用于高性能嵌入式系统的总线标准。AMBA 总线是一个多总线系统,AMBA 2.0 规范中定义了三种可以组合使用的不同类型的总线:AHB(Advanced High-performance Bus)、ASB(AdvancedSystem Bus)和APB(Advanced Perpheral Bus)。AHB 总线适用于连接高性能和高时钟频率的系统模块,主要用于连接高性能和高吞吐量的设备, 如CPU、片上存储器、DMA设备和协处理器等。APB 总线适用于连接低功耗的外部设备模块。

典型的基于AMBA 2.0 的SoC核心结构如下图所示:

2003 年,ARM 扩展了AMBA 技术的性能与灵活性,发布了AMBA 3.0。AMBA 3.0 包括AMBA 3.0 AXI、AMBA 3.0 APB、AMBA 3.0 AHB-lite 和AMBA 3.0 ATB。基于AMBA 2.0和AMBA 3.0

的AMBA 总线互连结构如下图所示:

(3) S3C6410的三个PLL

ARM PLL (APLL), main PLL (MPLL), extra PLL (EPLL)

Note:

(1) ARM核的时钟叫ARMCLK,由APLL产生;MPLL产生HCKL和PCLK,HCLK供连接在AXI/AHB上的设备使用,PCLK供连接在APB上的设备使用。EPLL用于一些特殊设备。

(2) ARM1176的最高运行频率是667MHz, AXI/AHB最高运行频率是133MHz, APB最高运行频率是66MHz

初始化时钟系统就是从时钟源头开始,一步步地设置PLL, 多路复用器,分频器等,最终得到目标总线的时钟。

转载于:https://www.cnblogs.com/warriorlee/archive/2012/08/23/2651744.html

tiny6410裸机编程-----Timer (1)相关推荐

  1. BSP板机支持包、linux启动分析、ARM裸机编程

    文章目录 一.BSP 二.驱动 驱动的基本要素 三.启动分析 1.uboot 2.uboot的作用 3.uboot相关命令 关键的内容: 1)bootargs,启动参数 2)启动命令 3)修改启动延时 ...

  2. 07 树莓派裸机编程,并在Windows MSYS2 QEMU模拟器中运行

    作者 将狼才鲸 创建日期 2022-11-14 Gitee源码和工程地址:才鲸嵌入式 / 开源安防摄像机(嵌入式软件) CSDN文章地址:项目介绍:开源安防摄像机(嵌入式软件) 4)完整的环境安装步骤 ...

  3. ARM2440触摸屏编程(裸机编程)

    俗话说:合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下.只有基础扎实了,做事情才能更得心应手.对于编程也是一样的,只有对各个器件的工作原理摸得一清二楚,才能高效地写出好代码.所以学习驱动和 ...

  4. mini2440 裸机编程 -led

    又重新做回了嵌入式,想把以前学到的东西从头复习一下.首先从裸机编程开始. 本系列使用的硬件环境是友善之臂的 mini2440,百问网的OpenJtag,所有程序在 linux gcc下编译, 具体硬件 ...

  5. 应用编程与裸机编程、驱动编程的区别(Linux应用编程篇)

    用嵌入式Linux硬件平台下的软件开发来说,我们大可将编程分为三种,分别为裸机编程.Linux驱动编程以及 Linux应用编程. 裸机编程: 一般把没有操作系统支持的编程环境称为裸机编程环境,譬如单片 ...

  6. 03 - 程序设计框架:裸机编程中应用层、中间层、驱动层划分

    03-程序设计框架:裸机编程中应用层.中间层.驱动层划分 1.框架设计层次 <代码大全>第五章中,把程序设计分为四个层次: 软件系统,就是整个系统.整个程序 分解为子系统或包.比如我们可以 ...

  7. TQ210_裸机编程(一)——点亮LED灯

    TQ210_裸机编程点亮LED灯 首先查看 TQ210 的底板原理图: 我们可以看到 两个 LED 分别接到 S5PV210 的 GPC0_3 和 GPC0_4 引脚. 这里用了 NPN 三极管,具有 ...

  8. S5PV210(TQ210)裸机编程

    本文更多的是教会大家如何学习. 4.1    汇编学习 4.1.1 基础知识     4.1.2 ARM模拟器 4.2    S5PV210启动流程 4.3    点亮一个LED 4.4    串口 ...

  9. TQ210裸机编程(3)——按键(查询法)

    首先查看TQ210的底板原理图 这次编程只操作KEY1和KEY2,在TQ210核心板原理图中搜索XEINT0 可以看出KEY1和KEY2分别接在S5PV210的GPH0_0和GPH0_1引脚. 这次编 ...

最新文章

  1. 转载: EMD(Emprical mode decomposition)经验模态分解
  2. arduino串口监视器显示nan_使用Arduino开发板制作摩尔斯电码生成器
  3. 最好用的在线思维导图软件
  4. #中调用委托的简单方法
  5. Zull路由网关---SpringCloud
  6. 线程池实现填充短信_填充一个池需要多少个线程?
  7. 关于使用MYSQL出现的内存泄漏问题
  8. php 不通过表单post,php – 简单表单不通过_POST发送数据
  9. 集体智慧编程源代码(免费)
  10. 使用hMailServer邮箱服务器收发邮件
  11. 笔记篇二:鸢尾花数据集分类
  12. linux - find查找文件/grep搜索文件内容
  13. 夜曲歌词 拼音_标准的《夜曲》歌词
  14. 数据库中违反外键约束的情况
  15. 100+篇论文合集:GNN在NLP中的应用
  16. 【Touch】触摸事件onTouch
  17. 第二届北京职教国际青年创新创业技能大赛启动
  18. flex 布局,省略号失效
  19. 2020版KALI安装教程
  20. 程序员怎么合理的利用自己的业余时间接单赚钱,怎么才能赚到比本职工作还多的钱呢?

热门文章

  1. 64位整数乘法(类快速幂)
  2. 非零段划分(CSP202109-2)
  3. [pthon]模块 time
  4. 二维数组转化稀疏数组
  5. 2018-2019-1 20165302 《信息安全系统设计基础》第三周学习总结
  6. 阿里云linux主机更新hostname
  7. 《HTML5 Canvas游戏开发实战》——3.3 自定义画板
  8. Unity3D导出的EXE不用显示分辨率选择界面
  9. 商场超市数据备份方案
  10. CoffeeScript、TypeScript 、 JavaScript 之间