4702|6

87

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

vxWorks寄存器读写问题 [复制链接]

 我现在写不了某些寄存器(就I2C寄存器写不进去,其他都可以)
有遇见这种问题的么?

我是关了MMU的啊~

情况如下:
我在shell中输入

查看内存0x55000000位置的寄存器。
d 0x55000000
55000000:  0100 0000 0000 0000 0000 0000 0000 0000   *................*
55000010:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000020:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000030:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000040:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000050:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000060:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000070:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000080:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000090:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000a0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000b0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000c0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000d0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000e0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000f0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
value = 0 = 0x0
-> (*0x55000000)=0xffff    (寄存器写入)
0x55000000: value = 256 = 0x100
-> d 0x55000000            (没有反应,写不进去啊)
55000000:  0100 0000 0000 0000 0000 0000 0000 0000   *................*
55000010:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000020:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000030:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000040:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000050:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000060:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000070:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000080:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
55000090:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000a0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000b0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000c0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000d0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000e0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
550000f0:  0000 0000 0000 0000 0000 0000 0000 0000   *................*
value = 0 = 0x0
->

但是换成别的寄存器就可以的~真是郁闷啊~

最新回复

除了大家说的以外,注意一下是不是因为数据宽度引起的问题,比如现在你默认访问的是以16位方式进行的,而有些寄存器是需要32位方式访问的,也有些可能是要8位的方式进行访问的。 可以自己写一下程序进行读写。d命令也是可以指定数据访问宽度的,默认是16位,具体查帮助  详情 回复 发表于 2009-2-26 23:04
点赞 关注
 

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
有没有在其他单板上测过?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
试过,换了块板子,问题一样。
我现在又把读写那部分内存的代码放在了romInit.s里,还是不行
代码如下

#if 1
/*test iic*/
        ldr        r0,=0x54000004
        ldr r1,=0x1
        str        r1,[r0]
        nop
        nop
        ldr        r2,[r0]
        cmp r1,r2
        bleq        Blink
#endif

就是在地址0x54000004先写入1,读取,比较是否相等。
如果相等,闪烁led
但是测试结果是不会闪烁led就直接启动系统了。

我唯一只把地址改为0x53000000,则会闪烁led。

不解啊,我在这段代码之前就只是关了watchDog,设置cpu频率和时钟,设置Memory参数,设置堆栈
为什么会出现这个问题呢?
会不会是编译环境的问题啊
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
我感觉你有些误解:
1.不是所有寄存器都是可读可写的。可读的寄存器不一定可写,这好理解;但可写的寄存器也不一定可读。
2.就是可读可写的寄存器,也不一定是你写进去什么读出来就是什么。所以你通过写完后去读这个地址的值来确定是不是写成功了,这方法不一定对的。
3.你的给信息太少,不知道你是什么环境,也不知道你要写那个寄存器。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
楼主提问题的方法太差,记得提问时尽量把问题说清楚。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

6
 
给某一段地址写数值,需要考虑硬件的配置。
具体说来,如果这一段地址是分配给了某块flash,
那么就必须安装相应的驱动,调用相应的接口函数才能够进行写操作。

当然,我在应用中也出现过这样的情况:
上层的调用是正确的,但是底层驱动在计算地址时有BUG,
造成某些地址段不可写。

请楼主根据自己的情况详查。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(中级)

7
 
除了大家说的以外,注意一下是不是因为数据宽度引起的问题,比如现在你默认访问的是以16位方式进行的,而有些寄存器是需要32位方式访问的,也有些可能是要8位的方式进行访问的。
可以自己写一下程序进行读写。d命令也是可以指定数据访问宽度的,默认是16位,具体查帮助
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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