Application and bootloader written in different tools can not be compatible?
You're right &mdash; in principle, the bootloader shouldn't care what tools are used to create the application code. As far as it is concerned, the application is just "a bag of bits".

However, the presence of the bootloader puts constraints on the application:


The application cannot clobber the part of the instruction space that the bootloader occupies.
The application must be startable at an address known to the bootloader.
If the application needs to be able to invoke the bootloader, then it needs to know how to do that.
If the application needs to use any I/O resources that are also used by the bootloader, then any conflicts need to be resolved through "rules of engagement".


It's possible that not all application development environments are completely compatible with the specific requirements of your bootloader.