Why would anyone want to change a bootloader?

I tried to learn on my own, the purpose of a boot-loader. What I can understand - it's the code that interfaces with the bios, to load the firmware. Why the BOOTLOADER can't just BE the firmware - I need another program to tell the program to go look somewhere else for another program to load? I do not know.

So when I do these projects like "OPENTX" (for example) that makes me burn the "OPENTX" bootloader, just so I can use the same USB on my MEGA2560 to re-upload the firmware ANYWAY... I am totally confused.

Can anyone tell me WHY anyone would want to use a different bootloader? The one that comes on these Arduino boards right through the usb/serial port FLAWLESSLY each and every time. What ELSE would a bootloader need to do (or NOT DO) ?

You can program chips without using a bootloader, then your program is indeed THE FIRMWARE. Need extra hardware for that operation.

jremington:
You can program chips without using a bootloader, then your program is indeed THE FIRMWARE. Need extra hardware for that operation.

Ok, so the BOOTLOADER resides on an external chip, and I'm just putting an interface to translate USB/SERIAL data -TO- ISCP interface data.

I actually had to wait 2 weeks for a "USBASP" device to deliver, just to find that I had to update the firmware ON THAT DEVICE, in order to update the bootloader - on the Mega2560. I'm using a desktop computer with over 3ghz, 16 cores and 32gb of memory, how/why this machine can not interpret the data itself and why different BOOTLOADING firmware is needed to update other bootloading firmware, on a board - that comes with it's own bootloader to update it's own firmware.

Flashing procedures for openTX on Arduino Mega2560

On the above link, there is a PICTURE of the mega2560 board (that comes with a bootloader which already uploads firmware without needing anything else). The procedures explain 1) "prepare board - USBASP & connect to M2560 ICSP", write FUSES and UPLOAD BOOTLOADER. If this board is already accepting and receiving firmware AS NEW when it was delivered to me - I do not understand why the documents would explain to update the firmware using some other device to buy. This is why I ask this here, because I can't understand what the stock bootloader would not do - that needs me to update, to do something else.

so the BOOTLOADER resides on an external chip

No. It resides in the upper part of flash memory in the Arduino. The bootloader reads and translates serial port commands and data, in order to store the compiled/linked machine code (from your C/C++ program) in lower flash memory.

Ok - brings back to my original question. Why would anyone want to change that bootloader - what could it do differently for better or worse, than the one that it comes with ?

First, you have to understand what the bootloader does. Second, you have to know what you want it to do.

If those don't match, then one option is to change the bootloader.

Why would anyone want to change that bootloader - what could it do differently for better or worse, than the one that it comes with ?

The bootloader loads sketches into the ATmega over some communications link. Serial in the case of the Uno, USB in the case of Leonardo, etc. The most common reason to replace the bootloader is to enable some OTHER communications link. Wireless is a common example; you might think you could just plug a wireless serial module into the Uno serial pins and use the existing bootloader, but it turns out that that's not the case.
People also replace the bootloader to get more sketch space (using a smaller bootloader), get additional features (reading and writing EEPROM, or "secure bootloading"), or to fix bugs so that their sketch can use additional features (fast-start, watchdog issues.)

Oh, I think I am starting to understand now. I can change that space and use it for storing flash ram memory.

I have actually tried to attach esp8266 to Arduino for wireless upload sketch with absolutely no success and many frustrating and confusing nights of failed attempts. I agree with you 100%, and do not know why the deceptive TUTORIALS explain how easy it is to attach and get started.

Wireless upload sketch is one of the most difficult tasks I have attempted to do. Updating bootloader firmware, the firmware on the ESP8266 has me absolutely confused in every way. It took me about 2 weeks to actually get the firmware upload to esp8266 to work correctly. Then after about 100+ google searches, I could only find that the part where the RESET-PIN needed to be toggled by the 8266 to engauge the firmware uploading operation, I just gave up and could not work that procedure.

The 8266 has a lot more "firmware" built into it (in rom, and in flash) than the typical Arduino, so updating it can be more complicated. On an Arduino Uno, the "bootloader" is 512byte of code, and ALL it does is move code from the serial port (in a particular format) to flash. 8266 firmware has wireless radio stuff, networking code, and probably an operating system.

DocStein99:
Can anyone tell me WHY anyone would want to use a different bootloader?

Because I want to use CANBUS instead of serial.

Because I want uploading to go as fast as possible so I use a bootloader configured for 1M serial.

Because I want to be able to upload EEPROM images.

Because I want the bootloader to be as small as possible so I have the maximum possible space for my application.

Because my device monitors a beating heart the upload has to be performed with a two-phase commit.

Because my device monitors a beating heart the upload has to be digitally signed.

Because my application cannot tolerate a blinking LED on pin 13.

Because I am a corporate jerk and I do not want my customers to have access to their device I use a bootloader based on a weird custom protocol.

Because I need to be able to upload wireless I use a bootloader with a full serial handshake.

DocStein99:
Ok - brings back to my original question. Why would anyone want to change that bootloader - what could it do differently for better or worse, than the one that it comes with ?

The default bootloader allows you to load and reload sketches into an arduino using the IDE, which is what you need to do when you are developing software.

If you are going to install a microcontroller into some device permanently, you don't need that facility. Removing the bootloader may free up some pins, cycles, and a bit of memory.

Ok, thank you for the replies. This is all new information for me, I could find some of it useful. Fortunately, I won't be going to work for Apple any time soon - so designing a bootloader to defeat end-users development on their own hardware that they purchase is not in my game plan.