TI专家好。
我下载安装的cc3100的sdk,里面有两套程序,一套是station的,一套是ap的,请问:
1、这两个编译好后,都需要下载到板子上吗? 如果是,难道是板子既是station又是ap吗 ?
2、比如cc3100外连的是MSP430FR5739,sdk中的 station 和 AP 这两套程序是在MSP430FR5739上运行,还是在cc3100上运行?
3、所说的nwp的firmware在什么地方下载 ?
4、nwp的firmware是不是运行在cc3100上?
5、sdk的station程序中启动了监听服务器,请问,对于我的应用来说,我是不是只要在此过滤过来的网络报文,是我这个station的IP的报文,就收下,否则过滤掉,对不对?
刚刚接触新片子,请专家多多指点
Yonghua Pan:
1、这两个编译好后,都需要下载到板子上吗? 如果是,难道是板子既是station又是ap吗 ?
> 有API去修改工作模式
2、比如cc3100外连的是MSP430FR5739,sdk中的 station 和 AP 这两套程序是在MSP430FR5739上运行,还是在cc3100上运行?
> 在5739中运行
3、所说的nwp的firmware在什么地方下载 ?
> http://processors.wiki.ti.com/index.php/CC31xx_%26_CC32xx_SimpleLink_Tools中的uniflash
4、nwp的firmware是不是运行在cc3100上?
>是
5、sdk的station程序中启动了监听服务器,请问,对于我的应用来说,我是不是只要在此过滤过来的网络报文,是我这个station的IP的报文,就收下,否则过滤掉,对不对?
>NWP里面的tcp/ip协议栈会做这件事,你不需要过滤。你可以理解成你的应用就是网络的应用层.
shiping du:
回复 Yonghua Pan:
专家好,感谢您的回答。从你的回答和之前的回答能看出你的精湛的水平。让人敬佩。
1、我的板子(成品)上用一块cc3100,它就是叶子节点了(一台无线路由器的多个设备,设备是叶子),当我运行sdk的AP时,是否意味着,如果我修改了main函数的如下语句:
sl_WlanSetMode(ROLE_AP);
为
sl_WlanSetMode(ROLE_STA);
这样就简单的让cc3100从AP状态切换到station状态了 ? 还是说,如果运行在AP状态,切换到station状态需要其它的修改 ?
2、因为sdk的AP工程里面有比如配置IP,SSID等内容,而sdk中的station工程没有这些内容。
问题 : 如上的这种通过API的参数修改实现从AP状态到station状态的转变,如果想这么做,他相对于sdk中的直接的station这个工程之间有什么优势,或者在某些使用场合的长处 ? 或者这样做根本就不对 ?
3、将来我们自己的应用程序,是不是可以在sdk中做修改就可以,或者我们的程序代替sdk,就可以,对不对 ?
谢谢。
Yonghua Pan:
回复 shiping du:
1、我的板子(成品)上用一块cc3100,它就是叶子节点了(一台无线路由器的多个设备,设备是叶子),当我运行sdk的AP时,是否意味着,如果我修改了main函数的如下语句:
sl_WlanSetMode(ROLE_AP);
为
sl_WlanSetMode(ROLE_STA);
这样就简单的让cc3100从AP状态切换到station状态了 ? 还是说,如果运行在AP状态,切换到station状态需要其它的修改 ?
[YH]: 需要reset一下,就是调用sl_stop然后再调用sl_start
2、因为sdk的AP工程里面有比如配置IP,SSID等内容,而sdk中的station工程没有这些内容。
问题 : 如上的这种通过API的参数修改实现从AP状态到station状态的转变,如果想这么做,他相对于sdk中的直接的station这个工程之间有什么优势,或者在某些使用场合的长处 ? 或者这样做根本就不对 ?
[YH]: 主要是针对配置的应用场景,默认启动是AP,然后手机或电脑连上这个AP,配置好SSID和密码之后,板子重启,转换到STA, 连上家里的路由器。
3、将来我们自己的应用程序,是不是可以在sdk中做修改就可以,或者我们的程序代替sdk,就可以,对不对 ?
[YH]: 是的,在SDK中修改就好,用你们的程序代替SDK也行。
shiping du:
回复 Yonghua Pan:
Hi,
感谢您的回复。如下是我的几个问题:
1、SDK中的AP中的代码,就是在配置完SSID后调用了start和stop接口,就是说TI官网的SDK代码中的AP,它已经实现了自动由AP转换成station了,是吧 ?
2、SDK的代码中,关于socket的部分的代码,比如listen,accept等接口都是通过发送opcode给cc3100实现相关的指定动作的,那么,在我自己的系统里面,现在我要实现让cc3100等待从我的手机发出的相关数据串,比如含有SSID的数据串,实现手机配置cc3100的SSID,要怎么控制才可以 或者需要发个什么指令,以让cc3100进入这种等待配置的状态?
3、SDK里面的操作,为什么那么多地方要用到类似锁的机制,请问,在我们的一个430MCU上是多个进程在处理吗 ? 为什么代码里面并没有多线程的概念,为什么要有这么多的锁机制实现类似的原子操作呢 ?
4、SDK的AP代码里面的g_pCB这个结构体,每次sl_sart调用,在其pool中都分配了10个索引的资源,参考如下代码(见SDK中的AP的文件 driver.c 函数void _SlDrvDriverCBInit(void) 里的一段 ):
for (Idx = 0; Idx < MAX_CONCURRENT_ACTIONS; Idx++) { OSI_RET_OK_CHECK( sl_SyncObjCreate(&g_pCB->ObjPool[Idx].SyncObj, "SyncObj") ); // 11 sl_SyncObjClear(&g_pCB->ObjPool[Idx].SyncObj); // 11 }
而在后面,又对这些资源做可用和不可用的查询 ,参考代码如下:
/* Get free object */ if (MAX_CONCURRENT_ACTIONS > g_pCB->FreePoolIdx) { /* save the current obj index */ CurrObjIndex = g_pCB->FreePoolIdx; /* set the new free index */ if (MAX_CONCURRENT_ACTIONS > g_pCB->ObjPool[CurrObjIndex].NextIndex) { g_pCB->FreePoolIdx = g_pCB->ObjPool[CurrObjIndex].NextIndex; } else { /* No further free actions available */ g_pCB->FreePoolIdx = MAX_CONCURRENT_ACTIONS; } }
我的问题是,对于一个单进程的系统,每次启动起来,或者一个任务到来,就他malloc的一个g_pCB的空间而言,他只需要一份资源够任务本身就ok了,而实际上,代码为他们分配这么多的资源,且对他们初始化,做成了一个貌似是个多进程或者多线程的系统的情形,这是为什么呢 ?
谢谢。
Yonghua Pan:
回复 shiping du:
1、是的,请确定设置AP或STA 模式的API有被调用
2、这个协议你可以自己定义,TCP/UDP socket连接都是标准的,你可以在TCP/UDP之上定义一个协议来做这件事。
3、CC3100的host driver是可以支持多线程的,主要的定义在user.h里面
4、同#3