Strictly necessary cookies are on by default and cannot be turned off. Functional, Performance and Tracking/targeting/sharing cookies can be turned on below based on your preferences (this banner will remain available for you to accept cookies). You may change your cookie settings by deleting cookies from your browser. Then this banner will appear again. You can learn more details about cookies HERE.
Strictly necessary (always on)
Functional, Performance and Tracking/targeting/sharing (default off)
Ok, so to answer myself... very bad come back from cypress here.
Normally, and from the example project, the main app project contains a bootloadable component which considers from it's configuration, the .hex of a bootloader project (a project containing the bootloader component in its topdesign.) Through some black magic (tcl code in the component source dir), the bootloadable component analyzes this .hex to figure out if it is expected to be loaded by a dual or single app bootloader. As such, it will either generate a single linker script, or two linker scripts which places the first and second apps and metadata tables at the appropriates locations in flash.
The example projects contain a "noboot.cydsn" and "i2c_boot.cydsn" sub-projects. The key is to:
open up the i2c_boot project and configure the bootloader component as "single application".
Then generate the .hex there
come back to the main app project
edit it's bootloadable component and in the second tab, point to the newly generated bootloader .hex file.
rename cm0g_1.ld at the project root directory to cm0gcc.ld
edit the number of APPS at the top of the files (this part may be optional)
I am now able to program this single firmware using the dual-app bootloader.