Hi all, let me start by apologizing for the rant but I have expended all my patience with this development platform. Hopefully someone here can point me in the right direction.
I have developing embedded firmware (c, asm, c++) for 10+ years now, and have worked with a variety of products with varied complexity. I have however, never encountered a platform that in my first day has among other things:
- Blue screened my PC 4 times from attempting to open a serial port
- Stopped responding numerous times requiring unplugging the power source entirely and reconnecting it upwards of 5 times in some cases to restore functionality.
- Required hours of reading to sort out how to simply blink an LED
IDE
Sorting out how to use this IDE is a nightmare. I started with the online version since that seems to be recommended, however I quickly discovered I can’t do anything here without registering a device which requires a credit card. All I want to do at this point is blink an LED and bring up some peripherals. I switched to the desktop version (which appears to just be Atom with some plugins) and was able to select my platform. I press build, but for some reason only the first project builds. After removing all but the one project I am finally able to generate a .bin file with no idea how to flash it. Note: The quickstart guide provides this instruction:
“Go ahead and save this application, then flash it to your device. You should be able to see that LED blinking away!”
CLI
After digging through 3rd party tutorials I find reference to using the CLI to flash my device instead however the CLI tool is fraught with issues as well. Nothing seems to work out of the box for me. Long story short there was apparently a dependency issue introduced that I had to fix by doing a “particle update”. After about 4 hours I am finally able to flash my basic blink an LED image.
Libraries
It takes me another hour to find out that I need to go into manual mode or my application won’t even be run at all and finally I have my LED blinking. Now, I try adding a serial output for debug. The prints in the loop are printing, but I can’t catch anything from setup since resetting the board also kills the serial port. I try adding a delay so that I can catch the setup logs and now opening a serial terminal causes my PC to BSOD. Undeterred, I figure I’d attach a button so that the application can wait on a button push before running through the rest of the setup function, however attaching a button to B0 causes the CLI tool to start hanging. Removing it, it goes back to normal. According to the hardware docs B0 is a user GPIO, however I can’t be sure because the schematics are incomplete.
Now I’m in a state where I can no longer flash the device using CLI or open a serial connection to it (COM port access denied), the board breathes cyan for a while before seemingly randomly entering listen mode, or searching for internet mode. So far I’ve attempted to bring up an LED and a serial port. I can’t even fathom writing a SPI driver or similar especially with the apparent lack of any debugging options.
Am I fundamentally misunderstanding something? Why has this experience been fraught with so many roadblocks.