Bootloader_Start() transfer control to one of the applications based on active and valid characteristics of each apps. The Switching Logic Table is available in Bootloader datasheet.
Please change Bootloader_Start() to Bootloader_Exit(Bootloader_EXIT_TO_BTLDB_1), if you are programming Bootloadable_1.hex or vice versa to test this behavior. It will validate and load single application right away.
When I call the Bootloader_Exit() API it works as I would have expected.
App_1.hex will boot when Bootloader_EXIT_TO_BTLDB_1 is used, and not boot when Bootloader_EXIT_TO_BTLDB_2 is used.
App_2.hex will boot when Bootloader_EXIT_TO_BTLDB_2 is used, and not boot when Bootloader_EXIT_TO_BTLDB_1 is used.
So, it appears that the bootloader switching logic is not able to handle the single app bootloadable hex packages in a dual app boot configuration.
From what I can see when cyelftool -B app_1.elf is called the generated hex file is complete.
Is the elf merge step (cyelftool -M) necessary for creating a valid dual app hex file?
Yes. Both applications needs to be valid and present in the bootloadable.hex file.