Dual app bootload + golden image

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hi,

   

I am trying to use the dual application bootload option together with the golden image support. But I am having problems getting this to work, and would like to hear if anyone has some experience with it.

   

My main problem is that when my custom bootloader interface is done programming, both App#1 and #2 gives error if I check with Bootloader_ValidateBootloadable. I find this strange, because I thought that when "Golden image" was enabled, App#1 should be write protected. It it the same problem if I flash "*1.cyacd" or "*2.cyacd". (I assume it should always be number 2 in my config, but a number 1 should not corrupt anything, just fail.)

   

Is there something I forget that I should take care of manually? As I understand it, the flash memory is split in half and when I program normally, both App#1 and App#2 is flashed with the same content. Now when an updated image arrive, my app enters the bootloader and it should try to update only App#2 and always have App#1 as a fall back option.

   

Any support will be appreciated, I find the documentation for multiapp and golden image a little lacking.

0 Likes
4 Replies
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Dennis, can you please post your complete project, so that we all can have a look at all of your settings. To do so, use
Creator->File->Create Workspace Bundle (minimal)
and attach the resulting file. Are you using a Cypress Kit? Which one?? Are there any messages when yusing bootloader host program?

   

 

   

Bob

0 Likes
Anonymous
Not applicable

Hi Bob,

   

There is nothing special about the project, it just uses that standard bootloader components with a slightly modified bootloader interface. This interface read read from a file, and the lines are passed to CyBtldr_ParseRowData.

   

If I change the bootloader to standard settings (no dual boot), it works fine with small programs. If I try with my main app where the size is 70KB, it flashes with no errors, but when restarting mcu, the bootloader cant find any valid image.

   

I use the array and row index that CyBtldr_ParseRowData return, is that not correct? or should I do this manual ?

   

Thanks

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

I would suggest to test your "slightly modified bootloader interface" with two smaller bootloadable projects.

   

 

   

Bob

0 Likes
Anonymous
Not applicable

Hi Bob,

   

Thanks for your reply, finally looked more into this, and it turns out I was a little naive thinking that CyBtldr_ParseRowData did a checksum validation...It did not, and after adding that, it proved that the communication link sometimes corrupted the data. (therefor the small app succeeded, and the large one had bigger risk of failure)

   

Still confused about the "Golder image" option, since it was possible to destroy app#1, and I would believe it should be protected. This can be done in flash security of cause.

   

I was also hoping to use the emulated eeprom with an absolute address, but this is also not possible while the dual app mode is active. ('cyelftool.exe' fails with error 1). You think there could be some workaround for this? It is ok for both app#1 and app#2 to share this dedicated area.

0 Likes