出现多年后,再写Arduino可能毫无意义。我也是一直对朋友们说,主流开发用原厂SDK,ARM mbed,孩子们去玩Arduino。因为Arduino没有Debugger,ARM mbed有,balabala说了一大堆,忽悠了别人,骗了自己。我甚至忘记了自己移植到Freescale KL25Z上的USB OTG驱动实际上来自Arduino的一个非常底层的库。健忘啊!
Arduino不断推出新开发板,对我来说,可能有些审美疲劳。直到Azure IoT DevKit出现给了我一闷棍:为什么Azure IoT DevKit底层使用ARM mbed,而API层面依然去兼容Arduino?这使得我回头再审视Arduino的发展。
Arduino阵营扩大了
我非常惊讶地发现:如果说ARM mbed正在成为ARM内核的IoT生态,那么非ARM内核的IoT就非Arduino莫属了。包括Arduino官方和第三方推出的开发板中,包括了大多数ARM以及非ARM MCU和开发板:
- Atmel AVR,Atmel SAM/SAMD系列ARM MCU;
- STM32 NUCLEO系列;
- Nordic nRF51/nRF52 BLE系列;
- Intel i586/i686/Edison/Curie系列;
- Windows IoT;
- ADI系列;
- Azure IoT DevKit;
- ESP8266与ESP32系列;
- TI MSP430系列;
- RTL8195AM, RTL8711AM, RTL8711AF WiFi SoC;
- Microchip ChipKit PIC32,这个比较老的第三方;
- Freescale Teensy,也算比较老的第三方;
- SiliconLabs Gecko系列(ARM);
- Infineon XMC系列;
- MediaTek Linkit One;
- iCE40 FPGA......
可以这么说,Arduino几乎涵盖了大多数的MCU平台。基本上只要有GCC,都有可能加上。所以未来,出现RISC-V等新的Core,是非常可能的。
Arduino的移植
早前的Maple/ChipKit/Teesy等第三方Arduino,要么重新编译了Arduino IDE,要么用插件方式。现在Arduino开发了Board Manger以及对应的JSON Index格式。开发第三方的MCU框架更加容易了。通过Board Manager,可以把第三方的MCU直接加到Arduino IDE里去。
Arduino的调试能力
通过Microsoft Visual Studio Code调试Azure DevKit,发现Arduino这一块居然被微软补上了。而且VSC不仅仅可以支持Azure DevKit,其他开发板也可以哦。
目前测试的要是应用层代码调试,底层调试还没有测试过。如果也可以的话,那么Arduino无法用于生产环境的推论就要被推翻了。