请问大家一个2440的时钟设置问题
时间:2010-12-03
来源:互联网
本帖最后由 zsmctfy 于 2010-12-03 22:32 编辑
我写了这么一个裸机程序,有两个文件,start.s和test.c,开发板是mini2440
start.s 中初使化sdram,但是在设置MPLL时遇到了困难
代码有点长,但有问题的只是start.s中的红色字的部分“@ bl clksetup”,在第八行。
请大家帮我看看。
start.s中的代码:
复制代码
test.c中的代码如下:
复制代码
困难就在于start.s中被注释的“@ bl clksetup”,它是设置MPLL 的,如果不注释这一部分,程序就会出错,注释就可以正常运行,请大家帮我看看这是什么原因。
我写了这么一个裸机程序,有两个文件,start.s和test.c,开发板是mini2440
start.s 中初使化sdram,但是在设置MPLL时遇到了困难
代码有点长,但有问题的只是start.s中的红色字的部分“@ bl clksetup”,在第八行。
请大家帮我看看。
start.s中的代码:
- .equ MEM_CTL_BASE, 0x48000000
- .equ SDRAM_BASE, 0x30000000
-
- .text
- .global _start
- _start:
- bl disable_watchdog
- @ bl clksetup
- bl memsetup
- bl copy_steppingstone_to_sdram
- ldr pc,=on_sdram
- on_sdram:
- mov sp,#0x34000000
- bl main
-
-
- disable_watchdog:
- mov r0,#0x53000000
- mov r1,#0x00
- str r1,[r0]
- mov pc,lr
-
- clksetup:
- mov r0,#0x4c000000
- add r0,r0,#0x14
- mov r1,#0x03
- str r1,[r0]
-
- mov r0,#0x4c000000
- add r0,r0,#4
- ldr r1,=((0x7f << 12) | (0x2 << 4) | 0x1 )
- str r1,[r0]
-
- mov pc,lr
-
-
- copy_steppingstone_to_sdram:
- mov r1,#0
- ldr r2,=SDRAM_BASE
- mov r3,#4*1024
- 1:
- ldr r4,[r1],#4
- str r4,[r2],#4
- cmp r1,r3
- bne 1b
- mov pc,lr
-
-
- memsetup:
- mov r1,#MEM_CTL_BASE
- adrl r2,mem_cfg_val
- add r3,r1,#52
- 1:
- ldr r4,[r2],#4
- str r4,[r1],#4
- cmp r1,r3
- bne 1b
- mov pc,lr
-
- .align 4
- mem_cfg_val:
- .long 0x22011110
- .long 0x00000700
- .long 0x00000700
- .long 0x00000700
- .long 0x00000700
- .long 0x00000700
- .long 0x00000700
- .long 0x00018005
- .long 0x00018005
- .long 0x008c07A3
- .long 0x000000b1
- .long 0x00000030
- .long 0x00000030
- #include"s3c2440.h"
-
- void delay()
- {
- int i;
- for(i=0;i<0xff00;i++);
- }
-
- int main()
- {
- int i;
- delay();
- GPBCON = 0x15400;
- GPBDAT = 0xf<<5;
- for(i=0;i<5;i++)
- {
- GPBDAT = 0x00;
- delay();
- GPBDAT = 0xf<<5;
- delay();
- }
- while(1)
- {
- GPBDAT = 0x00;
- delay();
- GPBDAT = 0xf<<5;
- delay();
- }
-
- }
作者: zsmctfy 发布时间: 2010-12-03
设置CPU时钟时,LOCKTIME是不要先设置下,
作者: rabbitlcat 发布时间: 2010-12-04
回复 zsmctfy
LOCKTIME 可以使用0xffffffff... 不需要设置... 保险的可以设置一下... 另外再设置MPLL之后自行加一段延时操作... 自动插入的LOCKTIME的可能会不够... 为保险再加一段延时操作...
另外再设置CLKDIVN的时候如果HDIVN不为0...则需要把先前的快速总线模式设置为异步总线模式...2440的手册上有NOTE...
LOCKTIME 可以使用0xffffffff... 不需要设置... 保险的可以设置一下... 另外再设置MPLL之后自行加一段延时操作... 自动插入的LOCKTIME的可能会不够... 为保险再加一段延时操作...
另外再设置CLKDIVN的时候如果HDIVN不为0...则需要把先前的快速总线模式设置为异步总线模式...2440的手册上有NOTE...
作者: PCliangtao 发布时间: 2010-12-04
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28