Issue with the I2C Bootloader v2.40 and Its Workaround – KBA88259

Version: **


Question: Is there a problem with the I2C bootloader v2.40? If so, is there a workaround?



The application stops working properly at times. Several variables in the BootldrI2C User Module (UM) are used both by the application and the bootloader application. The problem arises because these variables do not have a fixed location. As a result, the linker can place the variables into different RAM locations in different projects. To solve the problem, lock the bootloader variables that are used by both the bootloader and the application in a fixed place at the end of the RAM page 0.

Here is the workaround:

Locate the file Slavebootloader.asm from the location “C:\Program Files (x86)\Cypress\PSoC

  1.   Replace the text  
    •     AREA BootloaderRAM (RAM, REL, CON)

       with the following

    •     AREA BootldrRAM (RAM, ABS, OVR)
    •     bDummyByte: blk 1
  2.   Add the following string to the end of the custom.lkp file of your PSoC® Designer™ 5.3 project and make it read-only:  
    •     -rwh:BootldrRAM:0x00EF.0x00F6

After you apply the workaround, build the project and generate the .dld file. The bootloading will work properly. However, if you areusing PSoC Designer 5.4, you do not need to follow this procedure because the issue has been fixed. You will not encounter any issues with the new user module (v3.00).