I've been playing around with the Bootloader and I found something that could be called a bug, or a possible weird feature.
When you turn Relible Update on, the idea is basically to program your application in a backup address (BL_BACKUP_APP_START, let's call it B) and then the bootloader will check if it is correct and moves it to the application address (BL_APP_VECTOR_TABLE_ADDRESS, let's call it A). The application only runs from the address A. If the application in B is not right (CRC not valid), then the bootloader does nothing and you'll still have your application in address A.
This is very nice, but it means you should program your application in B. If you program it in any other location, the bootloader won't find it, thus won't update the application in A.
But what if I try to program my application directly in A? Shouldn't the bootloader protect this area?
Right now, if you program your application directly in A, no Reliable Update will be performed, thus if the the program is somehow corrupted during the transfer, it might disable your board.