Porting firmware between ESP32 variants?
Posted: Thu Jan 21, 2021 1:21 am
Kind folks,
I am interested in porting an existing single-threaded firmware package, written in C, from the ESP32-S2 to an ESP32, initially to run in a single core (with the second core idle). What are the obstacles which need to be overcome, your estimate of their difficulty, and your advice on how to overcome them?
I anticipate difficulties in the following areas (as well as the obvious ones of pinout differences and memory sizes):
I'm hoping that based on your feedback, I can limit my detailed study to a small portion of the rather large set of documentation in the device data sheets.
Thank you in advance,
Mike
I am interested in porting an existing single-threaded firmware package, written in C, from the ESP32-S2 to an ESP32, initially to run in a single core (with the second core idle). What are the obstacles which need to be overcome, your estimate of their difficulty, and your advice on how to overcome them?
I anticipate difficulties in the following areas (as well as the obvious ones of pinout differences and memory sizes):
- MCU Core: Tensilica 7 vs. 6, differences in instruction set and timing,
- Differences in register sets and function,
- Structural differences in memory layout and function (not just simple location differences),
- Differences in interrupt and fault handling,
- Differences between like-peripheral programming and performance (i.e., only considering peripherals common to both devices)
- In devices with extra cores (e.g., the ESP32), what's the easiest and safest way to keep the extra core(s) in an idle state?
I'm hoping that based on your feedback, I can limit my detailed study to a small portion of the rather large set of documentation in the device data sheets.
Thank you in advance,
Mike