2782|7

72

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

CC2530 常量计算出问题 [复制链接]

大家好:



最近在做CC2530裸机开发,没有涉及协议栈,只是当做普通的射频芯片来用,但是配置文件(xcl后缀的文件)用的是TI 的配置文件,这些配置文件主要是一些Flash空间的分配,另外工程的配置和TI的TI_MAC协议栈配置是一样的,现在发现一个很诡异的问题:



比如:

void a(uint32 x)

{

uint32 b = 1;

b += x*(uint32)3000;

}


当调用这个函数 a(1)的时候,计算值正确的情况应该是3001,但是CC2530计算的却是一个很大的数,明显的是计算溢出……这种情况怎么会溢出呢?



但是在TI的官方协议栈里面却又是正常的…… 详细对比了两个工程的配置,没什么区别……



希望遇到这样问题的朋友能给个解决方法!



但是如果修改下图黄色区域中的配置后(把ROM mapped as data 选项改成RAM memory),就又能计算正确……(TI的配置是ROM mapped as data)



捕获.JPG (51.11 KB, 下载次数: 0)

捕获.JPG
此帖出自无线连接论坛

最新回复

两个工程的差异仅仅是那个常量位置的选项吗,这个你又不能肯定,怎么说呢 不好继续讨论了 很明显,我已经告诉你测试方法了,定义一个变量自然不会出现你说的错误了,因为避开了常量, 如果你想搞清楚为什么这样,只好再找两个工程的差异了 我手边上没有这种环境,仅仅是理论分析,需要提供一些信息才好  详情 回复 发表于 2015-8-6 17:15
点赞 关注
 

回复
举报

2144

帖子

3

TA的资源

五彩晶圆(中级)

沙发
 
上面选项的含义是常量和什么的位置,两种选择仅仅是一个在ROM另外一个在RAM中
8051 core的东西总是这么麻烦

你尝试写一个测试程序看看吧

uint32 MUL_CONST = 3000;

void a(uint32 x)

{

uint32 b = 1;

b += x*(uint32)MUL_CONST;

}


此帖出自无线连接论坛

点评

用变量操作可以正确,用我那种方法不能正常计算……  详情 回复 发表于 2015-8-5 18:17
个人签名电工
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
lyzhangxiang 发表于 2015-8-5 17:51
上面选项的含义是常量和什么的位置,两种选择仅仅是一个在ROM另外一个在RAM中
8051 core的东西总是这么麻 ...

用变量操作可以正确,用我那种方法不能正常计算……
此帖出自无线连接论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

4
 
lyzhangxiang 发表于 2015-8-5 17:51
上面选项的含义是常量和什么的位置,两种选择仅仅是一个在ROM另外一个在RAM中
8051 core的东西总是这么麻 ...

用变量操作可以正确,用我那种方法不能正常计算……
此帖出自无线连接论坛

点评

那个选项啊, 上面选项的含义是常量和什么的位置,两种选择仅仅是一个在ROM另外一个在RAM中 不要纠结别人的project怎么样 慢慢来,是什么原理就是什么原理,问题能定位,知道原因就好了 官方的project很有学问  详情 回复 发表于 2015-8-6 08:50
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

5
 
seanwaye 发表于 2015-8-5 18:17
用变量操作可以正确,用我那种方法不能正常计算……

那个选项啊,
上面选项的含义是常量和什么的位置,两种选择仅仅是一个在ROM另外一个在RAM中

不要纠结别人的project怎么样
慢慢来,是什么原理就是什么原理,问题能定位,知道原因就好了
官方的project很有学问,得慢慢来,当然8051 core也蛮特别的,如果你之前玩别的core的话
此帖出自无线连接论坛

点评

总感觉哪里不对劲,还不知道后面等工程功能扩增了还会遇到什么莫名其妙的问题,都不敢再继续了……很想知道为什么会这样啊!因为我看TI 用的rom空间是flash映射过去的,如果我现在把变量和常量都存在ram里面,不知道  详情 回复 发表于 2015-8-6 17:07
个人签名电工
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

6
 
lyzhangxiang 发表于 2015-8-6 08:50
那个选项啊,
上面选项的含义是常量和什么的位置,两种选择仅仅是一个在ROM另外一个在RAM中

不要纠结 ...

总感觉哪里不对劲,还不知道后面等工程功能扩增了还会遇到什么莫名其妙的问题,都不敢再继续了……很想知道为什么会这样啊!因为我看TI 用的rom空间是flash映射过去的,如果我现在把变量和常量都存在ram里面,不知道我以后做串口升级或者程序数据处理多了会不会影响我的程序稳定性。
此帖出自无线连接论坛
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

7
 
两个工程的差异仅仅是那个常量位置的选项吗,这个你又不能肯定,怎么说呢
不好继续讨论了

很明显,我已经告诉你测试方法了,定义一个变量自然不会出现你说的错误了,因为避开了常量,
如果你想搞清楚为什么这样,只好再找两个工程的差异了
我手边上没有这种环境,仅仅是理论分析,需要提供一些信息才好
此帖出自无线连接论坛

点评

有空把我的工程完全拷到官方里面试试,看看效果会如何  详情 回复 发表于 2015-8-6 18:31
个人签名电工
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

8
 
lyzhangxiang 发表于 2015-8-6 17:15
两个工程的差异仅仅是那个常量位置的选项吗,这个你又不能肯定,怎么说呢
不好继续讨论了

很明显,我已 ...

有空把我的工程完全拷到官方里面试试,看看效果会如何
此帖出自无线连接论坛
 
 
 

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

查找数据手册?

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
快速回复 返回顶部 返回列表