The multi-App Bootloader allows users to place two images in the flash.The typical reason for having this option is that if a bootload operation fails for one Bootloadable project, or that Bootloadable project becomes corrupted for some other reason, then the other Bootloadable project can still be executed. This ensures that there is always a valid application image residing in flash. With this feature, you can place two images of the same project or place two different applications altogether.
With the "dual mode" option the second Bootloadable project shall occupy flash starting at the row that is halfway between the start of the first Bootloadable project and the end of flash. This limits the flash size of multi-app Bootlodable to half of that of a normal Bootloadable project.
Whenever a Bootloadable project having a dependency to a Multi-app Bootloader project is built, two CYACD files are created with suffixes *_1.cyacd and *_2.cyacd. The former will always occupy the initial half of the Bootloadable flash area and the later the remaining half.
Steps to switch between applications
Let us assume that there are two Bootloadable projects: 1) Project_A and 2) Project_B
When these are built with a dependency to a MABL, two cyacd files are generated for each project:
Project_A_1.cyacd and Project_A_2.cyacd
Project_B_1.cyacd and Project_B_2.cyacd
The *_1.cyacd file will always occupy first half of the flash and *_2.cyacd will occupy second half. An application set as active and running cannot be overwritten. The following demonstrates the commands used in (BCP) to switch application.
Switching from application_1 to application_2
w 08 01 36 01 00 01 c7 ff 17
r 08 x x x x x x x
Switching from application_2 to application_1
w 08 01 36 01 00 00 c8 ff 17
r 08 x x x x x x x
08 – Bootloader I2C slave address
01 - Bootloader packet start
36 – Set active application command
01 00 – Number of bytes to follow (Lower byte first)
00 – Set image #1 as active
C8FF – Basic Summation checksum (FFFF-(01+36+01+00+00)+01)
17 – Packet End
The other details can be found in the Bootloader datasheet. Let me know if you need more info on this.
MABL.JPG 16.0 K
Is there a way to switch between two bootloadable programs without using a debugger/programmer?
I'm trying to load two different programs in flash and select between them by changing a DIP switch position using multi-app bootloader.
The reason for avoiding the use of MiniProg3 or the like is to enable "post-PCB reconfiguration" at a flip of a switch.
Thanks and regards,
There is no option for that from the PSoC Programmer. You can design your bootloader in such a way that the Active Application in the metadata is written by the bootloader based on the DIP switch status.
How do you get both apps loaded into flash? I have the bootloader logic written to look to see which app is active but I cannot get both apps to be loaded at the same time in the different memory locations. I would expect to see 2 metadata rows also which I do not.
Please help! Thanks, Jeff
If you program the bootloadabale.hex you will get the same copy of application copied to both App1 memory and App2 memory. There is no direct way to program different applications to App1 and App2 memory region. You will have to perform Bootloading.