Hi all,
最近用CC254X开发,各方面都挺好,但是有一点不得不吐槽一下 —— 处理器性能太低了
1、CPU主频低
由于是soc方案,蓝牙协议栈与应用层代码都在同一个CPU里跑,导致相互之间制约。
由于蓝牙协议要求每隔一段时间需要响应另一端的心跳包,若应用层代码在某一段耗时间较多,没有及时跑到协议栈的响应部分,就会造成超时。
而且这种制约是存在在整个代码里的,也就是说,任何一个地方的代码都不能耗时过多,否则就会引起掉线。
所以我现在比较理解为什么看到许多方案里采用独立的单片机芯片 + CC254x 的方案了,这样CC254x只跑协议栈,应用代码不会受到太多制约。
2、内存小
8k的内存很吃紧啊,用一个稍微大一点的全局数组就编译报错了。
更重要的是,如果是由于函数内部的局部数组空间太大导致的问题,编译器貌似是检查不出来的,此时会造成程序卡在某个地方或者不断重启。。。
总结:
1、在实际开发中一定要注意优化代码,不要采用太大的数组或者是太多层的循环,以及尽可能减少IO操作。
2、对于真的很耗时的操作,可以考虑放在2次消息循环来做(即将一个任务分在两次ProcessEvent调用完成)。
3、本质的解决办法,就是 TI 能不能出一款性能好一些的BLE芯片啊啊啊啊,哪怕把内存提高到16K也好啊(NRF51822就有16k呢。。。)
4、题外话:单片机程序开发其实挺锻炼程序员的,对程序的时间和空间效率要求都很严格,希望广大JAVA程序员过来锻炼一下,改掉铺张浪费的坏习惯 ^_^
以上是我在实践中的推断,希望 TI 的工程师们来确认一下是否是这样,多谢 ^_^
Yan:
cai,
感谢你的吐槽。
CC254x 是很老的一颗BLE芯片了,N年前的东西了,是业界第一颗BLE芯片,当时的BLE应用远没有今天这么复杂和火热。 但是除了一些需要复杂算法的应用外,CC254x还是能满足目前市面上大多数的BLE应用的。
从另外一个角度讲,由于推出时间长,TI 的这颗芯片,是目前市面上应用最广,成熟度和稳定度最高的芯片,毕竟在市面上混了这么久:)
TI 当然有下一代的BLE芯片会推出,今年下半年大家就会看到,将会采用更强大的MCU,当然也有更多的资源,功耗也会更低。
敬请期待!