2 Replies Latest reply on Jul 1, 2020 10:58 PM by GaneshD_41

    Excluding EEPROM memory area from cyacd2 updates

    MuNa_4652896

      Hello

      I have a workspace that consists of 2 projects App0(Bootloader) and App1(Bootloadable).

       

      I am working with 10 kits. For the first time, I flash every kit with the same firmware but with different BLE Advertising names.

      Later on, when I want to deliver an update/firmware changes/fixing bugs, any updates will be delivered  through OTA, however, a problem came up that I have to create a different *.cyacd2 file for each kit matching its name. This is very time-consuming.

       

      My approach was to store the BLE Name into the eeprom, so the after an upgrade, regardless of the BLE name associated with that upgrade, the first-time flashed BLE name is retrieved from eeprom and is applied using CY_BLE_SetLocalName(). I followed these instructions PSoc 6 Bootloadable extra line to exclude the cycad2 from altering the eeprom section, however this seems not to be working. I have made these changes to 4 different linker files cy8c6xx7-xxx (App0-CM0/CM4 & App1-CM0/CM4)

       

      /* Emulated EEPROM Flash area */

          .cy_em_eeprom (NOLOAD) :

          {

              KEEP(*(.cy_em_eeprom))

          } > em_eeprom

       

      I did the check that by printing the value of the EEPROM each time App1 - CM4 is executed. After the OTA update, the EEPROM has no name (All zeroes).

      How can I fix this issue?

       

      Another question, What is the data related to the BLE stored in the EEPROM? I know that the bonding list is stored there. Any other data is stored there?

       

      Thank you!