I think AVR benefited immensely from tools. The core was sane enough for a GCC port, which caught on because it supported decent C/C++ standards (see Arduino). The core was also quite capable. Then there were tools like avrdude which made programming chips super easy. I remember integrating an ATTINY85 into an industrial computer terminal (as an afterthought - we picked a SBC which didn't had a beeper). The chip was programmed with the onboard serial port using a small avrdude script, which was also used to send commands to the chip..
However, pricing for AVRs has stayed obscene. I remember 10 years ago looking at ATMEGA2560 and PIC32MX440/STM32F103. The choice was very clear which one to pick (32-bit). Who is going to pay 10+ euro for a 8K RAM MCU, even in 2010?
I also think there was the XMEGA series, which seemed like an interesting chip, however it had the new awkward PDI programming interface. I think avrdude supported it, but it required original AVR tools like the AVRdragon, instead of the very popular DIY or "entry-level" programmers.
I do wonder - since the ESP32 C3 has built in UART and is USB compatible AFAIK, why do they need to include a Silicon Labs USB to UART chip on the dev board?
Maybe to also cover bugs or other possible issues ?
It sounds like 'USB' a dedicated block, I wonder what BAUD rates it supports or does it skip a 'baud' idea if the connections are fully internal ?
I'd expect some firmware needed for this to function ? Does the ROM have enough ?
3.4.9 USB Serial/JTAG Controller
ESP32-C3 integrates a USB Serial/JTAG controller. This controller has the following features:
• USB 2.0 full speed compliant, capable of up to 12 Mbit/s transfer speed (Note that this controller does not
support the faster 480 Mbit/s high-speed transfer mode)
• CDC-ACM virtual serial port and JTAG adapter functionality
• programming embedded/external flash
• CPU debugging with compact JTAG instructions
• a full-speed USB PHY integrated in the chip
There is notion of baudrate at USB CDC level. USB bits are transferred at 12Mbit/s, 480MBit/s, etc. (depending on USB spec/standard). Serial baudrate is for when the bits are put again on an UART/RS232 line and need to be transmitted at the correct speed.
Ofcourse the software will have a throughput limitation. But even for mid-end PIC24 microcontrollers it is able to transfer hundreds of kB/s, with a max of usually around 900-1000kB/s on USB2.0 12Mbits.
I imagine they need the Silabs serial converter because the bootloader is only capable of serial communications. It is possible to write a bootloader with over USB (e.g. Mbed had the USB drive firmware update figured out 10 years ago)... or STM32 has a DFU tool.. don't know why this is not a thing on ESP32s..
Onece you know 1 µC pretty well and understand the principles, it is usually not that complicated to learn to use a different one. It is still convenient to still limit to a few types, not to have too many IDEs on the computer.
ARM finally ended this era. Not only the same tools (such as compilers) work for all ARM controllers, there is a certain "culture" in how the peripherals are organized. Even the CPU cores and tools standardized, this is already quite an improvement even when the peripherals are different.
Sadly, many people opt to continue the mess of "one tool for each manufacturer", or even worse, "one tool for each manufacturer per each 3-4 years" for no reason other than wrong impressions, bad documentation or lack of good tutorials.
Standarisation of your tools is key indeed. IMHO Eclipse (on which many of the ARM IDEs are based) or Visual Studio code are good choices nowadays with support for many languages so they also work far beyond the embedded microcontroller world (think VHDL, Verilog, Python, C / C++, Java, Lua, etc).
VCode is indeed a nice text editor for many languages. I write some quick python or small C programs in it, or browse through 3rd party code.
A "dumb" text editor is really old fashioned. I remember writing thousands of lines of code in Notepad for PHP websites 20 years ago, and I don't want to ever endure that much pain again. Even for those days it was not the best way to do it (but well.. what do you know when you're 10).
I nowaday use CLion. Sure you need to bare CMake, but once setup I can easily switch compilers (x86, ESP32, ARM, AVR, GCC PICs), run my unit tests with coverage, project-wide code refactoring tools, etc. If I need to do serious Python work (e.g. when I use nmigen) I use Pycharm.
Ofcourse CLion is not free, and I'm lucky to still have access to an academic license, but I would seriously consider buying a personal license (I also pay 10eur/month for Spotify, and that doesn't compile my projects)