s3c2440启动代码里面时钟配置的问题

[复制链接]
 楼主| 2012CMD 发表于 2013-5-4 10:47 | 显示全部楼层 |阅读模式
想将汇编操作改成C操作,其他的都差不多,可是时钟配置的这里看不懂,求大仙指点
    [ PLL_ON_START
        ; Added for confirm clock divide. for 2440.
        ; Setting value Fclk:Hclk:Pclk
1        ldr        r0,=CLKDIVN
2        ldr        r1,=CLKDIV_VAL                ; 0=1:1:1, 1=1:1:2, 2=1:2:2, 3=1:2:4, 4=1:4:4, 5=1:4:8, 6=1:3:3, 7=1:3:6.
3        str        r1,[r0]
        ;program has not been copied, so use these directly
4        [ CLKDIV_VAL>1                    ; means Fclk:Hclk is not 1:1.
5        mrc p15,0,r0,c1,c0,0
6        orr r0,r0,#0xc0000000      ;R1_nF:OR:R1_iA
7        mcr p15,0,r0,c1,c0,0
8        |
9        mrc p15,0,r0,c1,c0,0
10        bic r0,r0,#0xc0000000    ;R1_iA:OR:R1_nF
11        mcr p15,0,r0,c1,c0,0
12        ]

其中CLKDIV_VAL=7,按照书上说的mrc p15,0,r0,c1,c0,0功能为将协处理器c1中内容读入到ARM处理器r0,而mcr p15,0,r0,c1,c0,0功能为将ARM处理器r0中内容读入到协处理器c1,现在有两个问题
①如果用C语言改写,这个协处理器CP15地址怎么定义,貌似s3c2440数据手册也没说啊,
②上述第5-7和9-11为什么内容一样,不是说[  |   ]作用相当于if else endif吗,if else 怎么能够去干同样的事呢

 楼主| 2012CMD 发表于 2013-5-4 14:16 | 显示全部楼层
@阿南
:D呼叫斑竹大人
不想用C中嵌套汇编,这个该怎么整
我是祝大叔 发表于 2013-5-5 00:04 | 显示全部楼层
新人一枚,刚开始学ARM,回答不上来。
阿南 发表于 2013-5-5 08:06 | 显示全部楼层
C语言里面也有时钟配置的,找一下源代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

80

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部