S3C2440的裸奔–系统时钟篇

S3C2440的裸奔 --系统时钟篇 作者: 泠瑛 网名: ling 邮件: lingying<at>live.com qq: 1641445037 网络团队: ARELY小组 更新日期:2012年06月07日 星期四 11时53分50秒 声明: 这是我个人学习ARM2440的笔记,主要参考了下面这些书,服务器空间,当然还远远不止这些。互联网上的开源技术资料和老师学长的指导都是我学习的源泉,当然ARELY小组的哥哥姐姐更是给予我全方位的支持,尤其是何君哥哥,他给予我的不仅是技术上的,还有精神上的鼓励和引导,谢谢大家,感谢开源文化!参考书目: 人民邮电出版社 《嵌入式Linux应用开发完全手册》 –韦东山著 机械工业出版社 《嵌入式Linux应用开发全程解析与实战》 –吴士力、刘奇、朱兰著 电子工业出版社 《嵌入式Linux系统实用开发》 –何永琪等著 人民邮电出版社 《Linux设备驱动开发详解》 –宋宝华著 电子工业出版社 《ARM嵌入式常用模块与综合系统设计实例精讲》–张绮文、解书钢著 电子工业出版社 《嵌入式系统Linux内核开发实战指南》 –王洪辉著 北京航空航天大学出版社 《ARM LINUX入门与实践》 –方强、程昌南著 北京航空航天大学出版社 《嵌入式底层软件开发》 –杨铸、唐攀著 可能是宅的太久了吧,这几天情绪非常低落,直接影响我的学习进度,所以只是看了那么一点点内容!mini2440在没有开启时钟前,香港虚拟主机,全靠一个板载的12MHz晶振提供频率来运行。也就是CPU,内存,UART等等都运行在12MHz下面,这显然效率非常低,要知道S3C2440正常可以工作在400MHz下呢,两者相差非常之大。 s3c2440的时钟系统由3部分组成, 内核工作频率:由FCLK提供,最高400MHz,为ARM920T内核使用的工作频率 AHB总线频率:由HCLK提供,最高100MHz,为AHB总线上挂接的硬件提供工作频率,例如内存,香港虚拟主机,NAND,LCD控制器等硬件 APB总线频率:由PCLK提供,最高50MHz,为APB总线上挂接的硬件提供工作频率,例如UART串口,WATCHDOG等 s3c2440的PLL: s3c2440时钟源为板载的12MHz晶振,为了得到更高的时钟频率,可通过PLL来提高频率,PLL有如下两种: MPLL:用来产生FCLK、HCLK、PCLK UPLL:用来产生USB设备的工作频率 寄存器设置部分略,详见手册或相关书籍。 下面是启动代码:

@******************************************************************************@ File:crt0.S@ 功能:初始化系统时钟,然后转入C程序@******************************************************************************.equWTCON,0x53000000@看门狗控制寄存器.equWTDAT,0x53000004@看门狗数据寄存器.equWTCNT,0x53000008@看门狗计数寄存器.equLOCKTIME, 0x4c000000@变频锁定时间寄存器.equMPLLCON,0x4c000004@MPLL寄存器.equCLKDIVN,0x4c000014@分频比寄存器.text.global _start_start:ldrr0, =WTCON@ 关闭WATCHDOGmovr1, #0x0strr1, [r0]@ 写入0,禁止WATCHDOG,否则CPU会不断重启blinit_clock@初始化系统时钟ldrsp, =1024*4@ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K@ nand flash中的代码在复位后会移到内部ram中,此ram只有4Kblmain@ 调用C程序中的main函数halt_loop:bhalt_loopinit_clock:@ 设置锁频时间ldr r0, =LOCKTIME@取得LOCKTIME寄存器地址ldr r1, =0x00ffffff@设置锁定时间str r1, [r0]@将r1中的数据写入r0@设置FCLK,HCLK,PCLK三者之间的比例,本来还需要设置CAMDIVN寄存器,@但这里设置成1:4:8,所以CAMDIVN使用默认值就可以了!ldr r0, =CLKDIVN@取得CLKDIVN寄存器地址mov r1, #0x05@设定比例str r1, [r0]@修改CPU总线模式mrc p15, 0, r1, c1, c0, 0orr r1, r1, #0xc0000000mcr p15, 0, r1, c1, c0, 0@倍频到400MHzldr r0, =MPLLCON@MPLL控制寄存器ldr r1, =0x0005c011str r1, [r0]mov pc, lr@ 返回@******************************************************************************大多数人想要改造这个世界,但却罕有人想改造自己。

S3C2440的裸奔–系统时钟篇

相关文章:

你感兴趣的文章:

标签云: