Chinaunix首页 | 论坛 | 博客
  • 博客访问: 157765
  • 博文数量: 42
  • 博客积分: 996
  • 博客等级: 准尉
  • 技术积分: 705
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-09 19:41
文章分类
文章存档

2012年(42)

我的朋友

分类: LINUX

2012-04-26 09:39:57

目的:熟悉cpu初始化过程细节
题目:关闭看门狗、设置主机频率、关闭中断。
明细:
@ turn off the watchdog

#if defined(CONFIG_S3C2400)
# define pWTCON  0x15300000
# define INTMSK  0x14400008 
# define CLKDIVN 0x14800014 
#elif defined(CONFIG_S3C2410)
# define pWTCON  0x53000000
# define INTMSK  0x4A000008 
# define INTSUBMSK 0x4A00001C
# define CLKDIVN 0x4C000014 
#endif
@ 宏定义以S3C2410的SOC为例:
@ pWTCON定义为:看门狗计数器控制寄存器.
@ INTMSK定义为:中断控制寄存器.
@ INTSUBMSK定义为:子中断控制寄存器.
@ CLKDIVN定义为:时钟分频控制寄存器.
 
#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)
 ldr     r0, =pWTCON  @ 伪指令,(注:=号后边跟的是立即数),把看门狗计数器控制寄存器地址存于r0 
 mov     r1, #0x0     @ r1 写0,mov指令与ldr指令实现的功能相当,它们之间的区别是于寻址方式梢有差异
 str     r1, [r0]     @ 非使能看门狗计数器,pWTCON中的最后一比特写0表示不会输出复位信号

 
@   mask all IRQs by setting all bits in the INTMR - default
  
 mov r1, #0xffffffff  @ r1写全1 
 ldr r0, =INTMSK      @ 中断控制器的基址存于r1 
 str r1, [r0]         @ 注:因为INTMSK是立即数,故不能写成"str r1, INTMSK",关闭所有中断源.(1表示非使能)
# if defined(CONFIG_S3C2410)
 ldr r1, =0x3ff
 ldr r0, =INTSUBMSK
 str r1, [r0]
@ 分析同上.另外,子中断有11个中断源,INTSUBMSK写成0x3ff(0011 1111 1111).bit10对应的中断源为INT_ADC,此处写为0为使能状态,个人认为应该最好写为0x7ff.*/


# endif

 @ FCLK:HCLK:PCLK = 1:2:4  
 @ default FCLK is 120 MHz ! 
 ldr r0, =CLKDIVN
 mov r1, #3
 str r1, [r0]
@ 分析同上.时钟分频控制寄存器bit1(HDIVN)写1表示HCLK=FCLK/2;写0表示HCLK=FCLK.bit0(PDIVN)写1表示PCLK=HCLK/2;写0表示PCLK=HCLK.


#endif @ CONFIG_S3C2400 || CONFIG_S3C2410

阅读(1993) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~