Having worked for many years in a commercial manufacturing environment , i have always used fully licensed commercial development environments first incarnations of the Keil compiler for the 8051 micros or IAR for Atmels AVR and both Keil and IAR for the ARM micros when they started to arrive on the scene so using GNU tool-set was new for me and i must say i was impressed out how much opensource firmware there was for this tool-set. The main difference that i could see was that the code size wasn't quite as compact as the commercial offerings but as it £1500 cheaper then you can put up with it, the other big difference is that the tool-chain is command line driven no IDE. Having had a good look around in particularly the ESP32 Forum and also ESP.net website which details the various boards , operating system and compiler choices if you haven't visit them take a look it will save you hours of searching the web.
The main tool-chain contenders seem to be.
- Extensa Gnu tools offered on Espressif's Site. write your code in a text editor then in the mingw32 environment also available on their site run make and away you go. I do like the little menu configuration that Espressifs comes with the tools. The draw back is that there is no code completion or hints using this method so you probably want to use a slightly smarter editor like sublime text 3 (says it needs a license costing $80 for prolonged use) ,notepad++ or eclipse the latter being my particular choice.
- PlatformIO which is a sort Swiss army knife of tool-sets for all sorts of micros and will allow you to write code using the IDF or Arduino platform it also is supposed to work with many different Editors which it sort of does but i had major problems when i installed it in the Atom IDE which is painfully slow at times. I then uninstalled it and installed it Microsoft's VSC that's when i had some major problems as the atom uninstall seems to leave pretty much most of its self behind all over your registry and disk and the version in VSC kept complaining that a different version was installed.However once i managed clear out all remnants of the Atom install it worked really well the only problem that stopped me using it was that the ESP-IDF version couldn't be updated so your have to wait until the platformio core is updated.
- Arduino works but has some limitations not all of the IDF is available so your limited to the functionality which has been ported, also a lot of existing Arduino code tends not to be compatible with the ESP32 ,had the same problem when tinkering with the Intel Edison and Linkit one boards mainly seems to orientate around timers and interrupts which are hard coded in AVR code. The other problem for me is the Editor is very basic it has some nice bits such as the comms window but not much of an IDE. Visualmicro have a solution that allows you to use Visual studio to write compile and sort of debug your Arduino programs with most of its functionality free or for a small license fee you get all the features which i did and found it really good tool-set you can read my article on it Here which has a bit more detail about using it in visual studio community .
- VisualGDB is another Visual studio based offering which this time at the ESP-IDF iv'e starting looking it using the 30 Day free trial first impressions weren't that good download and installed without to much hassle then restart visual studio and after a longer than normal delay it opens with a warning that visualGDB is adding 180 seconds to my start up time do you want to disable it? answered no as it is probably just finishing the install. Now when i go to start a new project the option is there for visualgdb 4 options as the trial installs the full version. this problem number 2 it seems to of set its self to be the default project type not windows C# any more and the only way of found of stopping this was to uninstall it so it doesn't play well with others. Reinstalled and chose embedded project chose esp32 wait while it goes off and installs it own version of the tools wen it finished select esp32 with flash the it wants you to select the debugger. The main reason for looking at this paid project was the advertised debugging options so i select ocd and choose my jlink from the list this is where my serious problems start it insists on changing my segger drivers to lib usb fine if you only want to uses Vgdb as after saying yes even seggers own apps wont talk to it so reloaded seggers drivers and plugged my rover again wanted to the drivers but now seemed ok it detected it and let move on with me thinking all is well with the world , next i chose one the default apps hello world and clicked ok now at this point its a good idea to stick the kettle on and have a look at the getting started as it takes an age to load the project. now you notice i said and read the getting started page as the default apps wont run straight out of the box you have to go into the projects properties and change the c++ optimisation you'd have thought during the time it was creating the project it could of read its getting started guide. So finally have project that build and uploads with the debugger so break point the first line of code pressed run and discovered that windows no longer has a blue screen of death its now green with sad face a this point i abandoned ship there's only so much fun you can have in one day so this one not looking good
- Mongoose OS is a web based solution which allows you to do webby things easily seems to primarily at IOT solutions and some kind of usage licensing start for free but pay if you use it a lot.
- Other offerings for LUA and Micropython are also available but as i'm a c c++ and c# user, i haven't looked into them in depth.
so my final choice was Eclipse and Visual micro for the ardiuno quick test stuff. in my next article i'll walk through how i got my setup to work which will not be the only way as there are many tutorials on setting up the ESP32 in eclipse many which also didn't seem to work as well as it does seem to environment dependant and even eclipse version dependant. I will also have an article on platformio in VSC at later date.