I've been programming assembly too, for years, but at the time I started with the ATmels, there was a pretty good toolkit (avr-gcc), so I didn't need to use assembly. Although I like some good assembly at times. Preferably 68000 assembly then, I still think it's almost as versatile as C itself.
I like optimizing to an extreme level, so you can use a simple/cheap/low power device in place of a more advanced model. I have seen many references to the ESP8266 not being able to do this or that, but until now it can do almost everything I want, it's just a bit more effort and I like that
![Wink ;)](./images/smilies/icon_e_wink.gif)
On the other hand, I like me a interesting new thing every now and then
![Wink ;)](./images/smilies/icon_e_wink.gif)
I'd like to be ahead of the troops, but it seems there is no suitable RISC-V version for me yet. The "mini" boards that I like (2.54 mm pitch pins but still very small) are all with S2 orc S3. So I guess that will be for a future project. I don't think the P4 will be very cheap (as an end-user-product), but thanks for the information!
Talking about models. Can I build an image that can run on either S2 or S3 version and what happens when I address hardware that's not available on the S2 model? Will it crash, report error (preferred) or rise an exception? Can the image inquire what model it's running on? I prefer to build one single image for all chips.
Regarding Wifi/BT -> scheduler. I am aware. I don't mind having an NMI interrupting my code, nor do I mind having to create a timer that calls some opaque code at strict intervals. I understand that it would pose a problem for most users though, I've seen many questions and complaints about the watchdog timer kicking in because they don't understand an event driven environment.
Can you say something about the use BT for OTA recovery, would that be possible, in one way or another? As I have quite a few in water resistant enclosures that are a real pain to access and then re-seal after the fix. Of course we're doing "fail safe" OTA (restart into new slot temporarily and only activate the slot permanently if the reboot completes). But still then accidents can occur.
The ESP8266 NON-OS-SDK has been using flash partitioning from version 3 onward, so no difference there. You can only access partitions you've declared in the partition table. I had to tweak it a bit though, as the SDK doesn't understand 4 Mbyte flash chips where each OTA slot is 1 Mbyte. It would be nice if Espressif would fix that omission, but it's clearly heavily based on their own OTA system.
I already have a few ESP32 (no extension) modules lying around, I've ordered an S2 and an S3 version too, so I can go ahead and get familiar with them. So I am very curious and excited it will be able to do everything I want and what I'm already doing with the ESP8266.
Is there still the situation that data read from flash can only be read in aligned 32 bit words? So on the ESP8266 this has been worked around by copying all data sections to RAM on boot, which fills up RAM pretty quickly and you really need to make sure that doesn't happen + take care for this situations. Can the ESP32 access data from flash on byte boundaries? Maybe via some data cache just like icache for code? That would make some things pretty easier. I tend to have a lot of data in flash and of course I'd like to keep it there without clobbering all DRAM.
Thanks!
Erik.