Some HALs may just assume that clocks and such are in a default state when configuring, which may not be true for chain loading. I recently solved this by having the bootloader: * set a flag in uninit memory * doing a soft reset back to itself * checking the flag, and jumping to app before setting up the clocks (credit to dirbaio for reminding me of this a day or three ago)