6099|10

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

AXD环境下,对2442的寄存器设置无效怎么回事? [复制链接]

如题,在AXD环境下对2442的寄存器进行设置没有用,不知道怎么回事?具体情况如下:
想把2440的bootloader移植到2442上,从汇编到进入Main函数一直很顺利,但在Main函数中问题出来了,一直读不到NandFlash的ID,在这块折腾了很久。最终不得不把机子(公司一个以2442为核心的产品)拆了,用万用表量NFCE脚的状态,才发现这个问题。紧接着做了实验,原机子上GPC8,GPC9上连接有LED(硬件电路肯定没问题,使用中),就进行点灯实验,具体代码如下(在Main函数刚进入后):
        rGPCCON = (rGPCCON & ~(0x1111<<16)) | (0x0101<<16);
        rGPCDAT |= (0x11<<8);
        rGPCDAT &= ~(0x11<<8);       
        //mdelay(500);
        rGPCDAT |= (0x11<<8);
        //mdelay(500);
        rGPCDAT &= ~(0x11<<8);
        //mdelay(500);
        rGPCDAT |= (0x11<<8);
        //mdelay(500);
        rGPCDAT &= ~(0x11<<8);
        //mdelay(500);
        rGPCDAT |= (0x11<<8);
        //mdelay(500);
        rGPCDAT &= ~(0x11<<8);       
AXD单步调试发现跟本没反应,然后又返回汇编(2442init.s):在“When EINT0 is pressed,  Clear SDRAM ”后添加
;led test

        ldr r0,=GPCCON
        ldr r1,=0x55555555     ;all I/O output
        str r1,[r0]
        ldr        r0,=GPCDN
        ldr        r1,=0xffff
        str        r1,[r0]
       
        ldr r0,=GPCDAT
        ldr r1,=0x0000;
        str r1,[r0]
       
        ldr r0,=GPCDAT
        ldr r1,=0xffff;
        str r1,[r0]
       
        ldr r0,=GPCDAT
        ldr r1,=0x0000;
        str r1,[r0]
       
        ldr r0,=GPCDAT
        ldr r1,=0xffff;
        str r1,[r0]
       
        ldr r0,=GPCDAT
        ldr r1,=0x0000;
        str r1,[r0]
在AXD下单步调试依然没效果,现在真不知道该怎么办了?请帮忙!

最新回复

哦,原来是这样啊!~ 感谢感谢,嘿嘿  详情 回复 发表于 2009-11-25 18:50
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
补充:在AXD环境下,对所有寄存器操作都无效,即打开memory一单步执行就提示:“A memery access failed,Some of the data displayed my be invalid”,不知道哪里设置的不对?
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
内存初始化正常否?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 gooogleman 的回复:
内存初始化正常否?


是的,你的RAM初始化了吗?没初始化或者初始化错误的话那些代码和空代码是没什么区别的。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
没用过axd,帮顶了
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
最郁闷的是这种情况下,程序还可以一口"run"到Main函数里面,不带飞的。
我对内存初始化不很明白,等弄清楚了一定好好结这个帖子。
goodluck for me today!
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 6 楼 haiou_arm 的回复:
最郁闷的是这种情况下,程序还可以一口"run"到Main函数里面,不带飞的。
我对内存初始化不很明白,等弄清楚了一定好好结这个帖子。
goodluck for me today!


估计就是你没有内存初始化。

关于这个我前几天写了一篇Jlink+ADS 使用文档,楼主参考一下。

http://www.armce.com/bbs/thread-661-1-2.html
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

8
 
正如大家所说:没有进行内存初始化!~
用的是H-JTAG调试代理,在“Init script”一栏后面没有勾“Enable Auto Init”选项。
开始的时候是勾的,但一下载就“RDI Warning 00005:Data abort!”,再看看"2442init.s"中有“SMRDATA DATA”,是专门进行内存初始化的,就又把勾去掉了。——都是不理解惹得祸!~现内存初始脚本是:
Setmem+32-Bit+0x53000000+0x00000000
Setmem+32-Bit+0x4A000008+0xFFFFFFFF
Setmem+32-Bit+0x4A00001C+0x000007FF
Setmem+32-Bit+0x4C000000+0x00FFFFFF
Setmem+32-Bit+0x4C000004+0x0003E021
Setmem+32-Bit+0x56000070+0x00280000
Setmem+32-Bit+0x56000078+0x00000000
Setmem+32-Bit+0x48000000+0x22111110
Setmem+32-Bit+0x48000004+0x00007000
Setmem+32-Bit+0x4800001C+0x00018005
Setmem+32-Bit+0x48000020+0x00018005
Setmem+32-Bit+0x48000024+0x009604F5
Setmem+32-Bit+0x48000028+0x00000031
Setmem+32-Bit+0x4800002C+0x00000030
Setmem+32-Bit+0x48000030+0x00000030

还有两个问题想再问:
1、既然已经有脚本进行内存初始化,为什么在"2442init.s"中有“SMRDATA DATA”还要进行一遍内存初始化?
2、为什么“Bank 6 and 7 must have the same memory size”?现在2442内部有64Mb的RAM,我用的是bank6,我内存初始化是对BANKSIZE设置为0x32或0x31都可以,又是为什么?
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

9
 
1、既然已经有脚本进行内存初始化,为什么在"2442init.s"中有“SMRDATA DATA”还要进行一遍内存初始化?

因为你不使用仿真器的时候,是不需要首先运行内存的啊。

使用仿真器才要首先让内存跑起来了。

嘿嘿。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

10
 
H-JTAG进行初始化的目的是当FLASH没有初始化RAM代码的时候进行必要的初始化使程序能够正确下载到RAM并执行。
FLASH初始化的目的是在正式应用阶段(不用H-JTAG进行调试的时候),为了正确使用RAM而进行配置。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

11
 
哦,原来是这样啊!~
感谢感谢,嘿嘿
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表