打印

simpliciTI协议栈中点对点对等网络实验遇到的问题

[复制链接]
5891|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天拿来TI的例程simple_Peer_to_Peer.做点对点对等网络实验,将LinkTo.c和LinkListen.c程序分别下载给两个ED后。
talker上电后,红绿LED同时点亮,按下按键s1\s2中任意一个,红绿LED同时闪烁,进入发送link广播帧
状态;
listener上电后,红绿LED同时点亮,按下按键s1\s2中任意一个,绿色LED熄灭,红色LED仍然点亮,进入侦听link信息状态;
但很遗憾的时,当两个ED靠近时,连接始终建立不起来,无法进行通信。
talker一直停在while (SMPL_SUCCESS != SMPL_Link(&sLinkID1))这里,也就是说,该ED一直在发送link广播帧等待应答;
而listener则一直停在if (SMPL_SUCCESS == SMPL_LinkListen(&sLinkID2)),这里,也就是说,该ED一直在侦听来自talker的link信息。
但不论两个ED距离远近,始终建立不起连接。
一开始我以为是因为两个ED的物理地址可能设置成一样了,但是我后来又重新给它们分别下载程序,确定talker的地址为{0x79, 0x56, 0x34, 0x12};
listener的地址为{0x79, 0x56, 0x34, 0x13},确实给它们设置了不同的物理地址。
但还是建立不起连接,不知为何?
所采用的源程序是simpliciTI-IAR-1.2.0的simple_Peer_to_Peer。

看到论坛里有朋友也遇到过类似的问题,不知道最终是如何解决的。
希望能够交流一下,先谢过

相关帖子

沙发
dirtwillfly| | 2014-4-16 16:54 | 只看该作者
楼主用的什么芯片?

使用特权

评论回复
板凳
dirtwillfly| | 2014-4-16 16:55 | 只看该作者
AP和ED设置没问题吧?

使用特权

评论回复
地板
Mobile1991|  楼主 | 2014-4-16 18:27 | 只看该作者
dirtwillfly 发表于 2014-4-16 16:54
楼主用的什么芯片?

TI的CC1110

使用特权

评论回复
5
Mobile1991|  楼主 | 2014-4-16 18:29 | 只看该作者
dirtwillfly 发表于 2014-4-16 16:55
AP和ED设置没问题吧?

用的是simpliciTI协议栈中的例程,simpliciTI-IAR-1.2.0中的simple_Peer_to_Peer.在这个例程中,只有两个ED,一个是talker(发送link信息),一个是listener(侦听link信息)。

使用特权

评论回复
6
Mobile1991|  楼主 | 2014-4-16 19:24 | 只看该作者
例程本身应该没有问题,我只是修改了相应的LED和Button配置来与我使用的硬件一致。
今天发现一个新问题:
我用的IAR是7.60配合simpliciTI  1.2.0。
昨天下载程序没有问题,但是今天,却出现问题了。所以,我在想,是不是昨天我的程序其实并没有成功下载到两个ED设备当中。
昨天在下载程序之前,是这样对工程进行设置的(这大多是默认的配置,我只是将XDATA从0x3FF换成了0x1FF):
General option>target>CC1110.i51;
General option>Stack/Heap>IDATA=0xD0; PDATA=0x80; XDATA=0x1FF
linker>configuration>lnk51ew_CC1110.xcl


这样设置之后,rebulid all并将相应程序下载给这两个ED,然后就出现了一直建立不起连接的结果。

但是后来我发现,在IAR7.60的config中是没有CC1110.i51的,它有CC1110F32.i51。
所以我不知道,为什么默认的设置是CC1110。可能是因为我最开始用旧版本IAR7.20 rebulid all过,所以就记住了。(我最开始用的IAR ED是IAR7.20H,但是后来需要用到simpliciTI协议栈,所以我下了协议栈simpliciTI 1.1.1,但因为IAR7.2.0是旧版本,所以打不开simpliciTI  1.1.1中的例程,所以我下载了IAR7.51A。有兴趣的坛友可以看一下simpliciTI的change log(更新笔记)就可以知道。IAR版本和simpliciTI版本的对应关系大致是这样的:IAR7.51A---simpliciTI 1.1.1;  IAR7.60---simpliciTI 1.2.0)
我用的芯片刚好是CC1110F32,所以我就重新更改了设置
target>CC1110F32.i51
linker>configuretion>lnk51ew_CC1110F32.xcl
重新rebulid all时,出现了很大的问题:
Error[e16]: Segment IDATA_Z (size: 0x126 align: 0) is too long for segment definition. At least 0xa2 more bytes needed. The problem occurred while processing the  segment placement command "-Z(IDATA)IDATA_I,IDATA_Z,IDATA_N=08-_IDATA0_END", where at the moment of placement the available memory ranges were  "IDATA:7c-ff"
   IDATA:8-1f           IDATA_I
   IDATA:21-ff          IDATA_I

   BIT:0-7              BREG

   BIT:90-97            SFR_AN

   BIT:a8-af            SFR_AN

   BIT:d8-df            SFR_AN
出错了,大概是讲IDATA的有效的地址区间是:7c-ff,只有ff-7c=0x83这个长度,但是我的IDATA_Z就占有0x126,显然不够。

我查资料的时候,很多朋友都是XDATA出了问题,而且有比较好的解决办法.
XDATA是64K的片外存储器,地址从0x0000-0xFFFF,可以通过进行扩展。而IDATA只有256KB,是改变不了的。所以现在程序一直无法通过rebulid all.
根据上面的情况,我猜想之所以两个ED下载程序之后无法建立起通信,可能是因为程序根本没有正确下载入ED。
版主,您有什么解决方法么?




使用特权

评论回复
7
dirtwillfly| | 2014-4-16 20:36 | 只看该作者
本帖最后由 dirtwillfly 于 2014-4-16 20:41 编辑

对IDATA、XDATA等的配置使用默认值不够用?

使用特权

评论回复
8
dirtwillfly| | 2014-4-16 20:43 | 只看该作者
自己配置idata时要注意查看数据手册啊

使用特权

评论回复
9
Mobile1991|  楼主 | 2014-4-16 22:21 | 只看该作者
dirtwillfly 发表于 2014-4-16 20:36
对IDATA、XDATA等的配置使用默认值不够用?

恩~当我编写一个简单的闪烁灯实验时,就不会出现IDATA不够的情况,就能很顺利地编译和下载;
可能是因为程序确实比较大吧

使用特权

评论回复
10
Mobile1991|  楼主 | 2014-4-16 22:22 | 只看该作者
dirtwillfly 发表于 2014-4-16 20:43
自己配置idata时要注意查看数据手册啊

恩~我明天再试试   已经做好挨骂的准备了:'(

使用特权

评论回复
11
Mobile1991|  楼主 | 2014-4-18 14:16 | 只看该作者
很奇怪,在师姐那下了一个一样的程序,也只是改了一点点,就连接成功互相通信了,怎么我的就不行呢?

使用特权

评论回复
12
Mobile1991|  楼主 | 2014-4-21 22:39 | 只看该作者
dirtwillfly 发表于 2014-4-16 20:43
自己配置idata时要注意查看数据手册啊

版主,后来发现好像是版本原因.相对于simpliciTI1.2.0,IAR EW 8.10是newer version,而IAR EW 7.60编译就可以通过了。

使用特权

评论回复
13
Mobile1991|  楼主 | 2014-4-21 22:43 | 只看该作者
dirtwillfly 发表于 2014-4-16 20:43
自己配置idata时要注意查看数据手册啊

而且,我将师姐发给我的源程序(师姐的源程序也是simpliciTI1.2.0中的simple_Peer_to_Peer)编译下载之后,连接建立起来了。但是我将我的源程序,也是simpliciTI1.2.0中的simple_Peer_to_Peer,在此之前我并没有进行修改,编译下载之后,连接建立失败。现在已经排除个人计算机可能的影响,两个ED的物理地址的确不同,到底是哪个细节出了问题,目前尚无答案

使用特权

评论回复
14
dirtwillfly| | 2014-4-22 07:57 | 只看该作者
Mobile1991 发表于 2014-4-21 22:43
而且,我将师姐发给我的源程序(师姐的源程序也是simpliciTI1.2.0中的simple_Peer_to_Peer)编译下载之后 ...

对比下源代码,看有啥区别

使用特权

评论回复
15
Mobile1991|  楼主 | 2014-4-22 13:40 | 只看该作者
dirtwillfly 发表于 2014-4-22 07:57
对比下源代码,看有啥区别

仔细对比过后,暂时没有发现细节差别。

使用特权

评论回复
16
Mobile1991|  楼主 | 2014-4-22 18:30 | 只看该作者
Mobile1991 发表于 2014-4-22 13:40
仔细对比过后,暂时没有发现细节差别。

有朋友提醒我,对比一下编译环境,其实这个工作我已经做过了。那只能再试一下。谢谢版主耐心指导

使用特权

评论回复
17
firstblood| | 2014-4-22 19:01 | 只看该作者
我还没做过这方面的研究设计的,借荐学习下的

使用特权

评论回复
18
Mobile1991|  楼主 | 2014-4-22 19:47 | 只看该作者
dirtwillfly 发表于 2014-4-22 07:57
对比下源代码,看有啥区别

版主,刚刚不小心把两个ED的天线靠得很近很近,大概不到1厘米的样子,连接竟然建立起来了!!!但是师姐的程序下载之后,如果两个ED靠得太近,连接是建立不起来的。我试过很多次,一般之后10厘米之外,才能建立起连接,而且通信距离可以达到十几米。
在下载过我自己的源程序后,我两个ED挨着并排放,连接都是建立不起来的,于是我就把它们分开,而且是越远越好。但没有想到,意外地靠这么近,连接竟然建立起来的。
真是奇怪啊!
不过,总算是优点进展了,呵呵。。

使用特权

评论回复
19
dirtwillfly| | 2014-4-22 20:15 | 只看该作者
Mobile1991 发表于 2014-4-22 19:47
版主,刚刚不小心把两个ED的天线靠得很近很近,大概不到1厘米的样子,连接竟然建立起来了!!!但是师姐 ...

恭喜

使用特权

评论回复
20
Mobile1991|  楼主 | 2014-4-22 21:47 | 只看该作者
dirtwillfly 发表于 2014-4-22 20:15
恭喜

谢谢版主。再说明一下,至于是远一点好还是近一点好,是频段的问题,433和915的区别。师姐真好!
再次向版主和论坛表示感谢!结贴

使用特权

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

本版积分规则

11

主题

45

帖子

1

粉丝