跟着视频学习了ARM芯片时钟体系,信息量有点大,做个笔记梳理梳理。

1.时钟体系的结构图

有很多外设,一些工作在AHB总线,一些工作在APB总线

CPU工作在FCLK,AHB总线工作在HCLK,APB总线工作在PCLK

根据数据手册,我们可以知道FCLK、HCLK、PCLK的时钟频率,时钟源由12MHz的晶振经过锁相环PLL得到这些时钟频率

2.时钟示意图

OM[3:2]是选择器,选择时钟源,根据数据手册,若为00,则两个时钟源(CPU用、USB用)都选择为晶振

MPLL(main PLL):给CPU时钟用的PLL,使用MPLLCON寄存器控制输出频率(见4)

UPLL(USB PLL):给USB时钟用的PLL,使用UPLLCON控制输出频率(见4)

由图可知,经过MPLL得到一个时钟,作为FCLK提供给CPU,FCLK经过HDIVN得到HCLK,经过PDIVN得到PCLK

HCLK提供给AHB总线,并由AHB总线提供给挂载在AHB总线上的其他各种高速设备作为时钟

PCLK提供给APB总线,并由APB总线提供给挂载在APB总线上的其他各种低速设备作为时钟

3.时钟选择过程

先来看下上电之后时钟的设置过程:

1.上电之后等待电源稳定,复位芯片输出高电平给S3C2440的复位引脚(对应nRESET那里的一小段低电平时间)

2.根据OM[3:2]的值(默认为00),FCLK = 晶振(12MHz),一上电FCLK就开始起振,但此时CPU还没开始运行(对应The logic ...)

3.PLL锁存OM[3:2]的值,此时CPU才开始运行(对应PLL can operate ...)

4.设置PLL(对应Lock Time),此时FCLK不起振,CPU停止工作

5.在Lock Time时,PLL工作

6.等待Lock Time结束,PLL输出稳定,FCLK = PLL输出的新时钟频率,CPU开始工作

4.设置寄存器

1)LOCKTIME数值寄存器:设置LOCK TIME的时间,一般使用默认值

2)PLL控制寄存器(附常用参考值)

计算公式以及参数表格

3)时钟分频控制寄存器:决定分频系数、HCLK、PCLK的时钟频率

4)注意事项

如果HDIV不为0,则必须设置CPU工作位异步模式,否则CPU会选择HCLK为时钟

写入#R1_nF:0xc0000000

5.代码实现CPU工作于FCLK = 400MHz

1)汇编代码

.text

.global _start

_start:

/* 关闭看门狗 */

ldr r0, =0x53000000

ldr r1, =0;

str r1, [r0]

/* 设置LOCALTIME */

ldr r0, =0x4c000000

ldr r1, =0xFFFFFFFF

str r1, [r0]

/* 设置分频系数HDIVN、PDIVN,使得FCLK:HCLK:PCLK = 400M:100M:50M */

ldr r0, =0x4c000014

ldr r1, =0x5

str r1, [r0]

/* 设置CPU工作于异步模式 */

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

orr r0,r0,#0xc0000000

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

/* 设置MPLLCON,使得FCLK=400MHz */

ldr r0, =0x4c000004

ldr r1, =( (92<<12)|(1<<4)|(1) ) // 根据公式得到以下数值

str r1, [r0]

/* 一旦设置PLL,就会锁定localtime,直到PLL输出稳定,CPU才会开始工作 */

/* 设置内存: sp 栈 */

/* 分辨是nor/nand启动

* 方法:写0至0地址,再读出

* 如果为0,则为nand启动(nand0地址对应片内RAM,可随意更改)

* 否则为nor启动(nor相当于硬盘,要更改需要先发数据格式)

*/

mov r1, #0

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

str r1, [r1] /* 将0写入0地址 */

ldr r2, [r1]

cmp r0, r2 /* r1==r2? 相等表示从NAND启动 */

ldr sp, =0x40000000+4096 /* 先假设nor启动 */

moveq sp,#4096 /* 若r1==r2,执行该语句,即从nand启动 */

streq r0, [r1]

/* 调用main */

bl main

halt:

b halt

2)C代码和之前一样

arm linux 时钟源 信息,Linux学习——ARM芯片时钟体系相关推荐

  1. arm linux 时钟源 信息,Linux时间子系统之一:clock source(时钟源)

    clock source用于为linux内核提供一个时间基线,如果你用linux的date命令获取当前时间,内核会读取当前的clock source,转换并返回合适的时间单位给用户空间.在硬件层,它通 ...

  2. linux查看显卡核心数,linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 | 帮助信息-动天数据...

    linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 作者:dthost | 时间:2015-09-30 | 8,325 次阅读 linux服务器 ...

  3. linux查看显示器名称命令,linux 查看显示器信息Linux下查看硬件信息命令大全

    /proc 虚拟的目录,是系统内存的映射.可直接访问这个目录来获取系统信息.其中也包含下面的信息: 主机CPU信息:cpuinfo 主机DMA通道信息:dma 文件系统信息:filesystems 主 ...

  4. linux内核时钟源,Suse linux查看可用时钟源和当前时钟源

    steve@sle11-sp2:~/Desktop> cat /sys/devices/system/clocksource/clocksource0/available_clocksource ...

  5. 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 )

    文章目录 一.下载 Linux 内核 1.下载最新版本 Linux 内核 2.下载指定版本 Linux 内核 二.Linux 内核版本号含义 一.下载 Linux 内核 1.下载最新版本 Linux ...

  6. linux 读取飞信信息,Linux下飞信

    Linux下飞信 #!/bin/sh # define default value URL='https://fetionapi.appspot.com/api/' # your phone numb ...

  7. 隐藏linux操作系统版本信息,linux centos 如何查看操作系统版本信息?

    本文介绍常用的四种查看linux下查看系统版本信息的方法: 一.uname -a [app@VM_11_211_centos ~]$ uname -a Linux VM_11_211_centos 2 ...

  8. 获取linux命令硬盘信息,Linux下如何获取磁盘信息

    HUX布斯 1,Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息.但是对于双核的cpu,在cpuinfo中会看到两个cpu.常常会让人误以为是两个单核的cpu.其实应该通过Phy ...

  9. linux删除配置信息,linux 配置信息

    # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostn ...

最新文章

  1. 【OpenGL】关于OpenGL中Bind函数的理解
  2. Logstash输出日志到elasticsearch
  3. python 实现杨辉三角(依旧遗留问题)
  4. QT的QAccessibleEvent类的使用
  5. 虚机大比拼之HYPER-V
  6. word图片嵌入式为何只能看到一部分_Word排版的正确姿势!(Word论文排版教学)...
  7. 最佳约会策略及其证明
  8. mysql root密码过期了_Mac下重置mysql的root密码
  9. 【转】EL表达式 (详解) .
  10. Kafka 源码解析:Server 端的运行过程
  11. 写入word_E016 如何把Word文字信息批量写入文本文件
  12. CF11D A Simple Task(状压DP)
  13. python贪吃蛇简单代码_Python贪吃蛇简单的代码
  14. 满满干货!邮储银行java面试
  15. 使用Java+Puppeteer+OpenCV 过腾讯防水墙滑动验证码
  16. 8086-逻辑运算指令
  17. 龙芯3A5000参数 龙芯3A5000怎么样
  18. Leetcode838: 推多米诺(medium)
  19. gitLab数据备份和恢复
  20. 推荐两个实用的PCIe工具软件

热门文章

  1. 一些有用的优化应用技巧
  2. Solaris培训第二章:OpenBoot PROM(转)
  3. 大数据如何学习,告诉你正确的学习姿势
  4. HDU5441 Travel 有秩并查集
  5. 最值得收藏——免费ppt模板网站
  6. mac 系统安装总结 二,dmg 文件安装
  7. arcgis api 4.x加载天地图(经纬度和墨卡托投影)(一篇文章搞透天地图加载)
  8. java am pm_java – 如何以AM / PM格式显示时间
  9. 大学生《Web课程谁》期末网页制作 HTML+CSS+JavaScript 网页设计实例 瑜伽网站企业网站制作
  10. 如何下载东直门街道卫星地图高清版大图