mbed是重要的LoRa代码汇集地之一。上面有多名作者和团队在贡献代码。除了Semtech/STM/MultiTech这些元组件供应商,还有第三方个人和团队在维护自己的代码主线。虽然其代码的驱动大多来自Semtech,但是出现了一些细微的差异。
- Semtech/STM/MultiTech大多基于L073/L053/L152+SX1272/1276提供LoRa物理层、LoRaWAN设备的源码和工具,其中MultiTech提供了AT-command的固件;
- 第三方团队提供了改良版的LoRa物理层驱动、LoRaWAN设备端,和基于同样硬件的LoRaWAN单通道网关设计。
在评估过第三方的设备和单通道网关设计后,发现完整的LoRaWAN设备很可能需要采用128KB的ROM空间,因为需要支持大量的连接辅助功能如:
- LoRaMAC-crypto
- AES
- CMAC
- Sensor (I2C/ADC)
- OTA
- host interface (AT command or other RPC)
- GPS
无论是基于L152(M3)还是L073(M0+),其编译后的代码空间在66KB,已经超过了64KB。当然,如果砍去GPS/OTA/传感器,或者换用C编译器,或许可以压缩到64KB以内,但是开发很受限制。所以像LPC824此类的MCU无法用于LoRaWAN设备端开发,最多就是支持CC1101之类的。相比之下,单通道网关编译结果是80KB ROM和10KB RAM,采用普通的STM32F103RB/STM32F072RB即可。