Oh my, thank you so very much! This is information I have been trying to find for a long time! This could really be the tipping point for me to switch over to ESP32.
Please bear with me and answer another lot of questions (sorry!) from me!
So, I am coming from ATmel microcontrollers, and I am used to having a blunt piece of hardware you'd need to completely drive yourself. I have no problem there, I have a degree in computer science, major networking / operating systems, so for me it's a very nice challenge to create the complete "operating system" here. Any "SDK" or "IDK" code that is required, is just in the way for this. Having said that, on one hand I've seen bits of source code of the ESP8266 SDK (e.g. the I2C implementation) which I wasn't quite enthusiastic about. Also the standard OTA stuff is really unusable. On the other hand, the IDK seems to be a decent piece of work and there is no sense in replicating something that's already good. Maybe if it can't exploit the hardware fully, that might be a reason to bypass the IDK. I hope that is possible.
Anyway, what's the general direction Espressif is heading to? When I decide for a certain model of the ESP32, I'd like it to be the golden standard for at least five years (so I don't need to design new PCB's every time and maintain multiple versions of the software). Is Espressif heading towards RISC-V? In that case I think it would be wise to start there anyway. I like the concept of the dual processor core of some ESP32 Xtensa versions, but it looks like Espressif is abandoning that path? Is the Xtensa arch going to be left completely at some point?
BTW I am looking for a module, the IC, 0.5 mm pitch is something I can't solder anyway
. The ESP12 has a pin pitch of 1 mm. For that pitch, SIP pin arrays and sockets are available and it works great. I don't like soldering modules to a PCB. It looks like all ESP32 modules not using standard 2.54 mm DIP (too big for me) are using a pin pitch smaller than 1 mm and I can't find sockets for them. I hardly think I can even solder them at such a small pitch. So that makes the ESP32-C3-Wroom-02 less ideal.
I generally dislike packages/modules that have built-in (internal/on the die) flash because it's too small. I need 4 mbytes for two slots of 1 mbyte images and two slots of 1 mbyte for data.
I have been reading the ESP32 hardware documentation, but that was in 2021, so I guess that has improved somewhat in the meantime.
Great to hear there is no more opaque coupling between driver and lwip, like the ESP8266, where we're stuck to a very old version of LWIP. As I understand it, the interface could be very "light", just sending a frame and receiving a frame, maybe with some options flags.
Also great to hear OTA is now supported properly and open! This sounds very good. Can I just write random flash sectors and then reboot into that? That's all I need.
I am aware of the need for some support to be using Wifi or BT. It cannot be implemented in hardware only. I am fine with calling some opaque code frequently (preferred) or to return to the base code (as in the ESP8266) frequently. I am doing this now, no problem. I don't like large chunks of code running continuously anyway, I prefer using a scheduler. My gripe with the ESP8266 SDK is that it's required to be used for all sorts of non-Wifi-related stuff and then from the linker draws in all sorts of (for me) unrelated code from the SDK, filling up icache.
Are you saying all IDF drivers are open source? I wasn't planning to implement full alternatives, but sometimes it can help when documentation is insufficient. In my opinion on the ESP8266 what's called "drivers" are either software implementations to workaround missing hardware support or a very thin layer, which is not really helpful (for me).
I understand your stance on using hardware abstraction. Normally I am a fierce promotor of that standpoint too, but in a very low-level microprocessor things are bit different I think. If only to be able to get to know the hardware.
Another question. I know some of the newer models of the ESP32 support SPI RAM. I think that is very interesting (e.g. for mp3 and jpeg decoding). So I am searching for a module that does this:
- preferably 1 mm pin pitch (but probably not available)
- dual core processor
- either Xtensa or RISC-V model (preferably the one that has the future within Espressif)
- small (no development board, more like ESP12). Bigger may be possible, maybe even 2.54 mm pitch, but then I'd need to position parts beneath the module.
- 4 Mbytes of flash
- SPI RAM
- USB optional, not required. Normally I do the first programming in a separate programmer (so that's why I don't like to solder the modules to the PCB). Very rarely I screw up OTA and then the module needs to be reprogrammed. But if I can't work out a removable module option, this may be required.
- cheap... I need quite a few (but not industrial amounts).
- I do not need JTAG or any other debugging tools. Have come by without them for quite some time now.
Sorry for the amount of text.
Thanks!