打印

用keil在SDRAM里面调试2440求助

[复制链接]
2800|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
new1988|  楼主 | 2011-3-27 13:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的板子上TQ2440,在SDRAM里面调试DM9000,往D9000里面写数据总是出错,但是能读出DM9000的ID号,没错误。我调试串口程序都没出问题,说明CPU的时钟正确。把相同的DM9000的程序下载到Norflash里面能正确运行。大家有遇到过这种情况没,知道什么问题吗?

相关帖子

沙发
new1988|  楼主 | 2011-3-27 20:14 | 只看该作者
来个人帮帮我啊!!
没人知道吗?

使用特权

评论回复
板凳
river_huang| | 2011-4-21 11:53 | 只看该作者
更改/cpu/arm920t/start.S这是bootloader的stage1负责初始化硬件环境并把uboot从flash加载到RAM中,然后跳转到C语言中去。之所以后缀名为大写是因为start.S中有很多预处理,而GNU as是不能做宏处理和文件包含处理的,要处理这些宏只有交给CPP预处理器来做,查看GCC帮助可以看出要用大写的S才能。【来源于天行者博客vivi源码分析】,注意在这个文件中包含了config.h,而config.h是由mkconfig生成的,其中只有一句话"#include <configs/$1.h>",所以注意再更改完start.S及相关的启动文件后还要更改configs/$1.h中有关板子的配置。
第一阶段流程:
· 异常向量表
· 置处理器为管理模式
· 关闭看门狗(加入对S3C2440的支持:defined(CONFIG_S3C2440))
· 关闭所有中断(S3C2440的INTSUBMSK寄存器有15位可用,加入对S3C2440的支持的代码)
· 设置LOCKTIME寄存器
· 设置摄像头时钟分频寄存器
· 设置时钟分频(S3C2440的时钟高达400M,设置分频为1:4:8)
· 设置写处理器P15给快时钟一个缓冲
· 写UPLLCON寄存器,使USB的PLL时钟生效
· 等待USB的PLL时钟生效
· 写MPLLCON寄存器,使主PLL生效,产生FCLK时钟
· CPU初始化
关闭CACHE和MMU
底层硬件初始化(这里跟开发板密切相关,需要更改,主要更改lowlevel_init.S文件)
将UBOOT自己拷贝到RAM中(这里加上从NAND启动,因为S3C2440的NAND的前4K为自启动区,所以只要在4K范围内完成前面的工作及其自身的拷贝就可以了。这里加上的代码为对NAND的初始化,以及将UBOOT从NAND搬移到RAM的功能)
跳到C语言中完成第二阶段
分析start.S可知,在uboot中为了做到通用性,将跟特定SOC或开发板有关的初始化都放到板级目录下的lowlevel_init.S中去了。所以uboot的第一阶段初始化其实涉及到两个文件start.S和板级目录下的lowlevel_init.S

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

470

帖子

0

粉丝