arm学习之时钟体系结构-凯发旗舰

×
单片机 > 单片机程序设计 > 详情

arm学习之时钟体系结构

发布时间:2024-08-22 发布时间:
|

今天在宿舍学习的是s3c2440的系统时钟体系,这部分的难点不是很多,所以相对来说轻松点,但还是把感悟记录下来吧。

1.s3c2440的的时钟体系有哪些?它们分别有什么作用? 
答:以前一直有个小疑问,你说,这cpu运行那么快,外部的设备运行的就比较慢,那它们的时钟源怎么匹配呢?哦,今天算是差不多弄清楚了。因为它们有不同的时钟源。就s3c2440来说, 
它有三种时钟源: 
(1)fclk:用于cpu核。 
(2)hclk:用于ahb总线上的设备,比如cpu核存储器控制器、中断控制器、lcd控制器、dma和usb主机模块等高性能的设备。 
(3)pclk:用于apb总线上的设备,比如watchdog、iis、i2c、pwm定时器、mmc接口、adc、uart、gpio、rtc和spi等低速设备。 
产生这些时钟源的简要流程可以这样描述: 
(1)系统刚上电的时候,fclk即等于外部输入的时钟。一般是12m或者24m的晶振。 
(2)然后用软件的方式打开mpll(锁相环电路,用于提高系统时钟频率),把12m或者24m的时钟频率提高到100-400m(针对于s3c2440)。 
(3)再然后,通过设置一些寄存器,可以改变fclk、hclk、pclk的时钟频率比例(比如说1:2:2) 
这样,其他的两个时钟源也就提高了。 
要明白的是,系统在运行的时候,是三个时钟源一起在工作,分别为不同的设备提供不同的时钟频率。当然,有些设备对这些频率还不是很“满意”、它会自己进行一些倍频或者分频的工作。

2.本质上,定时器的工作原理是什么? 
答:定时器的工作原理简要说起来其实也很简单。就是利用系统给的时钟(一般是pclk)进行计数,当数计满了,就会产生一次中断。我们想要所长时间进行一次中断,把这个数计算好就行了。

其他:在敲代码的过程中,发现一个小问题。书上说:就是在cpu在转到中断服务的时候,lr保存的是前一个工作模式的的即将执行的地址,就中断而言,是当前pc 4。可是给的代码例程里计算返回地址的时候用的是sub lr,lr,#4—–是lr-4,这不又回到需要中断的指令了。有问题。 
后来,查了一些资料才知道,可能是书上写错了,这是我摘自一篇博客的话: 
irq异常发生时,因为这个异常是在指令执行时候发生的,pc的值等于当前执行指令加8,然后将这个值保存在lr中。但是lr寄存器中保存的是pc 8,指向的是后面的第二条指令,如果不进行减4处理,将会漏执行一条指令,所以pc恢复的时候就需要lr减4,所以正常从子程序返回的时候会使用如: 
subs pc, lr,#4 返回到当前指令的下一条指令



『本文转载自网络,凯发旗舰的版权归原作者所有,如有侵权请联系删除』

热门文章 更多
stm32问题记录:这回keil编译器背锅
网站地图