使用LinkItOne板子遇到的问题

来源:互联网 发布:紧急域名升级通知 编辑:程序博客网 时间:2024/05/21 19:33

LinkItOne是个集成度很高的开发板,我很想用他来做我的项目
但是我遇到了一些我无法解决的事情,希望官方能指导/解决:

  1. WiFi相关问题:
    1) LWiFi.connectWPA(wifiName, wifiPassword); 正确情况下,连接阻塞2秒(正常),当连接不上时(密码错误或wifi名拼错或找不到)线程会阻塞约31秒,此时板子就失去响应31秒了。
    2) 在WiFi信号丢失的时候(例如关路由器), LWiFi.status()返回的是LWIFI_STATUS_CONNECTED ,不能用于判断WiFi是否已断开,3) 在WiFi信号丢失的时候(即网络连接不上时),LWiFiClient.connect(host,port)调用会导致板子长时间阻塞,然后不管等多久都无返回,于是板子进入死机状态。我有先判断LWiFi.status()的,只不过没效。

  2. GPRS相关问题
    1)LGPRSClient.connect(host,port)在内存占用高时,会无限阻塞或崩溃死机。详情请看附件GPRSWebClientTest.zip,此例子输入任意内容后开始跑。 所以,要使用这个函数的话,当前内存至少要剩余多少才可以安全使用呢?

  3. GSM相关问题
    1)在开机一天后左右,短信能接收,但发送不出去,发送失败.

  4. 内存使用问题
    1)如附件overflowTest.zip 所示,该例子是连接串口输入任意内容后开始跑,可以看到四行打印结果,然后在跑loop()的时候就崩溃了(Rx/Tx灯在交替闪烁)。实际我遇到的问题是我不知道最大能分配多少空间,设置大了有一定机率会碰到崩溃,设置太小了,我的数据又接收不完。所以只能不停地试探上限,要是有个查看当前可用内存API(或最大可连续分配内存),我就知道这个位置最大能设置多少了。
    2)文档中写的:可执行程序大小RAM(Code+RO+RW+ZI+Heap)为2M,当库导入太多的时候,可用是远远没有2M了。。厄。然后不知道实际可用是多少,容易遇到崩溃。

解决办法探讨:

1)所有可能阻塞的接口都需要增加timeout机制,最好timeout时长可自定义,单位为毫秒。特别特别是IO相关接口!特别特别是LWiFiClient.connect()/LGPRSClient.connect()接口!(其实就是LTcpClient的。。)
2)函数的调用要保证能尽快返回,如果不能做到,请做成非阻塞用法,例如LWiFiClient.available()的使用就是一种很好的非阻塞用法,有数据,有相应状态时才进行下一步操作。
3)加入死机重启功能,如果阻塞时间过长了,建议板子应该要自动重启恢复服务。其实就是watchDog…
4)板子已死机了,RX/TX的灯已经在不停的交替闪烁,最好能触发自定义函数进行处理,或某段时间后自动重启
5)修复WIFI掉线时LWiFi.status()返回的是LWIFI_STATUS_CONNECTED 的BUG。
2.
主线程的时间很宝贵,不能阻塞太久,像android的UI线程一样,如果阻塞时间长了会导致界面卡死,失去响应,然后程序就像崩溃了。

为了能把LinkItOne板子最大化的使用,作为开发者,必须要知道这个板子的极限在哪里,只有在开发的时候,把所有可能遇到的问题提前做出处理,才可能使得在生产环境下不会碰到突发的异常而导致系统崩溃。
于是,我还希望官方SDK能提供以下API:
1)重启板子API
2)查看当前内存剩余API
3)查看LFlash储存空间剩余API
4)查看SD卡的储存空间剩余API
5)系统崩溃处理API,提前注册好处理事件及处理函数,当系统崩溃(例如遇到空指针),能调起处理,自动恢复服务。
6)更好的调试环境,例如崩溃堆栈信息输出。


以上问题是向矽递科技咨询过的了…矽递科技说他们主要负责硬件设计部分…于是软件方面的问题我只好来这里求助了.

希望大大们能指导一下我遇到但我又无法解决的问题. 同时期待新SDK早日发布.谢谢!

来源:http://webcache.googleusercontent.com/search?q=cache:rvRmMkg8lXEJ:forum-legacy.labs.mediatek.io/jforum/posts/list/329.page&num=1&newwindow=1&hl=zh-CN&gl=cn&strip=1&vwsrc=0

原创粉丝点击