ARM系统时钟初始化
2440时钟体系,12MHz的晶振

6410时钟体系,12MHz的晶振

210时钟体系,24MHz晶振

时钟初始化:1、设置locktime 2、设置分频系数 4、设置CPU到异步工作模式 3、设置fclk
.text
.global _start
_start:
b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq _undefined_instruction: .word undefined_instruction
_software_interrupt:.word software_interrupt
_prefetch_abort:.word prefetch_abort
_data_abort:.word data_abort
_not_used:.word not_used
_irq:.word irq
_fiq:.word reset undefined_instruction:
nop software_interrupt:
nop prefetch_abort:
nop data_abort:
nop not_used:
nop irq:
nop fiq:
nop reset:
bl set_svc
bl disable_watchdog
bl disable_interrupt
bl disable_mmu
bl clock_init
bl light_led set_svc:
mrs r0, cpsr
bic r0, r0, #0x1f
orr r0, r0, #0xd3
msr cpsr, r0
mov pc, lr #define pwTCON 0x53000000
disable_watchdog:
ldr r0, =pwTCON
mov r1, #0x0
str r1, [r0]
mov pc, lr disable_interrupt:
mvn r1, #0x0
ldr r0, =0x4a000008
str r1,[r0]
mov pc, lr disable_mmu:
mcr p15,,r0,c7,c7,
mrc p15,,r0,c1,c0,
bic r0,r0,#0x00000007
mcr p15,,r0,c1,c0,
mov pc, lr #define GPBCON 0x56000010
#define GPBDAT 0x56000014
light_led:
ldr r0, =GPBCON
ldr r1, =0x15400
str r1,[r0] ldr r0, =GPBDAT
ldr r1, =0x6bf
str r1, [r0]
mov pc, lr #define CLKDIVN 0x4c000014
#define MPLLCON 0x4c000008
#define MPLL_405MHZ ((<<)|(<<)|(<<))
clock_init:
ldr r0, =CLKDIVN
mov r1, #0x5
str r1, [r0] mrc p15,,r0,c1,c0,
orr r0,r0,#0xc0000000
mcr p15,,r0,c1,c0, ldr r0, =MPLLCON
ldr r1, =MPLL_405MHZ
str r1, [r0] mov pc, lr
黄色部分就是时钟初始化,中间一段绿色的是HDIVN不是0的时候,CPU要设置成异步模式,看下面这个

但是在6410里面,设置成异步模式看这个寄存器

第7位设置是否为异步模式,所谓代码里要用bic来清除。第六位是设置是否用PLL之后产生的时钟来提供时钟源

就这图中的这个
代码如下
.text
.global _start
_start:
b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq _undefined_instruction: .word undefined_instruction
_software_interrupt:.word software_interrupt
_prefetch_abort:.word prefetch_abort
_data_abort:.word data_abort
_not_used:.word not_used
_irq:.word irq
_fiq:.word reset undefined_instruction:
nop software_interrupt:
nop prefetch_abort:
nop data_abort:
nop not_used:
nop irq:
nop fiq:
nop reset:
bl set_svc
bl set_peri_port
bl disable_watchdog
bl disable_interrupt
bl disable_mmu
bl clock_init
bl light_led set_svc:
mrs r0, cpsr
bic r0, r0, #0x1f
orr r0, r0, #0xd3
msr cpsr, r0
mov pc, lr set_peri_port:
ldr r0,=0x70000000
orr r0,r0,#0x13
mcr p15,,r0,c15,c2,
mov pc,lr #define pwTCON 0x7e004000
disable_watchdog:
ldr r0, =pwTCON
mov r1, #0x0
str r1, [r0]
mov pc, lr disable_interrupt:
mvn r1, #0x0
ldr r0, =0x71200014
str r1,[r0]
mov pc, lr ldr r0, =0x71300014
str r1, [r0]
mov pc, lr disable_mmu:
mcr p15,,r0,c7,c7,
mrc p15,,r0,c1,c0,
bic r0,r0,#0x00000007
mcr p15,,r0,c1,c0,
mov pc, lr #define CLK_DIV0 0X7e00f020
#define OTHERS 0x7e00f900
#define MPLLCON 0x7e00f010
#define APLLCON 0x7e00f0c0
#define CLK_SRC 0x7e00f01c
#define PLL_VAL ((<<)|(<<)|(<<)|(<<))
#define DIV_VAL ((0x0<<)|(0x1<<)|(0x1<<)|(0x3<<))
clock_init:
ldr r0, =CLK_DIV0
ldr r1, =DIV_VAL
str r1, [r0] ldr r0, = OTHERS
ldr r1, [r0]
bic r1, r1, #0xc0
str r1, [r0] ldr r0, =MPLLCON
ldr r1, =PLL_VAL
str r1,[r0] ldr r0, =CLK_SRC
mov r1, #0x3
str r1, [r0]
mov pc, lr #define GPBCON 0x7f008820
#define GPBDAT 0x7f008804
light_led:
ldr r0, =GPBCON
ldr r1, =0x1111
str r1,[r0] ldr r0, =GPBDAT
ldr r1, =0xe
str r1, [r0]
mov pc, lr
黄色部分就是设置时钟的,能看懂手册,就能写代码。
ARM系统时钟初始化的更多相关文章
- LPC1788系统时钟初始化
#ifndef __SYS_H_ #define __SYS_H_ #include "common.h" #define SystemCoreClock 120000000 ...
- ARM S3C2440 时钟初始化流程
1.设置lock time 2.设置分频系数 3.设置CPU到异步工作模式 4.设置 FCLK 了解 芯片的时钟原理图,以及寄存器的作用 了解芯片的晶振频率,锁相环,分频系数,以及有哪些时钟
- STM32入门系列-STM32时钟系统,自定义系统时钟
在时钟树的讲解中我们知道,通过修改PLLMUL中的倍系数值(2-16)可以改变系统的时钟频率.在库函数中也有对时钟倍频因子配置的函数,如下: void RCC_PLLConfig(uint32_t R ...
- ARM时钟初始化
2440: S3C2440可以使用外部晶振(XTIpll)(默认为12MHZ)和外部时钟(EXTCLK)两种方式输入时钟信号.它由跳线OM[3:2]决定.S3C2440 默认的工作主频为12MHz(晶 ...
- S5PV210初始化系统时钟
S5PV210初始化系统时钟 S5PV210时钟体系S5PV210中包含3大类时钟domain,分别是主系统时钟domain (简称MSYS,下面将使用简称来进行相关讲解).显示相关的时钟domain ...
- STM32入门系列-STM32时钟系统,时钟初始化配置函数
在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main.那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使 ...
- STM32入门-STM32时钟系统,时钟初始化配置函数
在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main.那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使 ...
- STM32学习笔记(六) SysTick系统时钟滴答实验(stm32中断入门)
系统时钟滴答实验很不难,我就在面简单说下,但其中涉及到了STM32最复杂也是以后用途最广的外设-NVIC,如果说RCC是实时性所必须考虑的部分,那么NVIC就是stm32功能性实现的基础,NVIC的难 ...
- 嵌入式ARM系统开发基础
从.net到delplhi 从windows到Linxu 未来有多远? 如何突破自己? 什么是自己? 我从哪里来,要到哪里去? 世界是什么? 是世选择了我,还是我选择了世界? 怎么才能够完成蜕变? 去 ...
随机推荐
- nodejs之express中间件body-parser使用
1.安装express和body-parser npm install express npm install body-parser 2‘.案例如下 var express = require('e ...
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_10 构造函数注入
在AccountServiceImpl内定义三个属性 这里关注点是这几种类型.基本类型的包装类Integer 还有String类型,也包含了其他bean类型.Date 定义构造函数并赋值 重点关注在数 ...
- 配置XFCE4的时钟显示格式
配置XFCE4的时钟显示格式,如下1: %b%d %A, %R:%S 显示结果: 10月09日 星期三,09:50:45 如下2: [%Y年%b %d日] [%A],第%V周,第%j天 显示结果: 2 ...
- java:Spring框架4(Project,ER图)
1.Project: ER图: applicationContext.xml: <?xml version="1.0" encoding="UTF-8"? ...
- Linux 的简单命令以及在idea中配置码云
Linux 的简单命令: ls(list)功能:列出目录内容 cd(change directory)功能:切换目录 touch 1.txt 在当前目录创建一个文件1.txt clear:清除屏幕 p ...
- switch-case的选择用法
企业发放的奖金根据利润提成.利润I低于或等于100000元的,奖金可提0.1:利润高于100000元,低于200000(100000<I<=200000)时,低于100000元的部分按10 ...
- poj1042(贪心+枚举)
题目链接:https://vjudge.net/problem/POJ-1042 题意:给n个湖,给出每个湖第一次打捞时鱼的数量f[i],每单位时间鱼减少的数量d[i],从湖i到湖i+1用时t[i], ...
- [转帖]VPS、虚拟主机、云主机的区别
引用知乎网友通俗的例子解释: https://www.cnblogs.com/fjping0606/p/9993849.html 其实 应该是 vps 只是 单台物理机上面的虚拟机 云主机 可能是资源 ...
- Git_命令初解
- 从入门到自闭之Python基础——函数初识
1. 文件操作: 读操作: 格式:f = open("文件路径",mode = "r",encoding = "utf-8") f : 代表 ...