compiling for ESP8266 with Arduino IDE - what about Firmware, BootLoader, SDK?

in this context (using Arduino IDE to program a ESP8266) do the following three things mean the same thing:

  1. firmware
  2. bootloader
  3. SDK

I’ve tried to research this, but its unclear. just trying to get this straight in my head.
specifically, there is an option under tools for “Esspressif FW” and the options are various "nonos-sdk"s.

so I’m ASSuming that even though the Arduino IDE compiles my code and downloads it to the chip, there is still a bootloader (aka “firmware”?) running on the chip, and it is one of the versions of the sdk?

sorry, but i’m coming into this from mostly programming PICs, where (to my knowledge) there wasnt a bootloader and your compiled program was actual machine language…
Thanks!

SDK - software development kit. This is collection of tools required to take a source program (C++, assembler code etc.) and turn it into the “object” that can run on the micro controller. That “object” is called firmware.
A bootloader is usually a small program which watches for an attempt to upload firmware on say a serial port and then stores it in, say, flash memory.

The Arduino IDE uses bits from the manufacturer’s SDK (compiler/tool chain etc.) to turn the sketch (program) into firmware which runs on the target MCU. The SDK includes all the code necessary to manage all the peripherals on the MCU so even the blink sketch, when turned into firmware for the ESP8266, is many KBytes.

but does downloading with the Arduino IDE replace "all" the firmware in the ESP8266?

for instance, if i look up instructions on flashing the the ESP8266 to the latest ESPRESSIF firmware (which would be pointless if the Arduino IDE would just overwrite it?) there are 4 separate files (see attached) including a file called boot_v1.7.bin

any thoughts? thanks!

esp files.jpg

esp files.jpg

I see what you mean. If you create an Arduino C++ sketch for an ESP8266 in the Arduino IDE and upload it to the ESP8266, the entire flash memory contents (Firmware) are erased and replaced with the Arduino sketch. You can't mix the two types of development.
To revert back to the native ESP8266 Firmware, you have to use a reflash process.
The ESP8266 is shipped with firmware including an AT command interpreter and a LUA interpreter. However, I have not used these and use exclusively the Arduino method for programming ESP8266 devices.

ok, so even if I am using some really old ESP-01 modules (from 3 or 4 years ago) as long as my Arduino IDE is able to compile and download to them, there is no need for me to update/flash them with anything new from Esspressif?

Exactly. If you are using the Arduino IDE for ESP8266 development, all you can do is ensure that you are using a reasonably new release (current is 2.7.4) of that and that should include any important new features released by Espressif.
For example, the features for getting time from an Internet server in the local time zone, with only a few lines of code, keep getting more usable.