Custom Bootloader for Embedded


I am new to platformIO thanks for this wonderful alternative to Arduino IDE. I am trying to use platformIO as an alternative to Arduino IDE as I am more of a commandline person and prefer to use simple text editors as I operate in multi environments spanning linux, windows and osx.

Anyway, I would like to ask when I perform platformIo run -t upload, does it compile my code with a bootloader and if so, where does the software get the bootloader code from. The reason I am asking is that whenever i upload using platformio to my embedded system, the bootloader will be gone. Meaning that after my successful upload, i can never upload again, but I have to either use an ISP programmer to upload the firmware again or to burn the bootloader and then I can upload using platformio core again.

If the firmware that platformio uploads to the embedded system should contain the bootloader, then where is this bootloader code located and how do I specify the location of my custom bootloader?