2 Replies Latest reply on May 14, 2012 3:30 PM by paul.abbott

    ISSP programmer preserve EEPROM?

    paul.abbott

      First, how do you search the forum?  ( I tried to find the answer myself, but can't even figure out how to search within a forum)

         

      Anyway, I need to reflash a lot of devices in the field, but preserve the EEPROM which contains calibration data.

         

      It would save a lot of time (=$) if we don't have to repeat the calibration routine.

         

      Is this possible with the ISSP programmer?

         

      Thanks

        • 1. Re: ISSP programmer preserve EEPROM?
          user_1377889

          Hi,

             

          at the right hand upper corner you find a "Keyword Search". The number of found articles are not only restricted to this community, so you'll have to read a bit to find what you're looking for.

             

           

             

          The hex-file-format from which a PSoC1 is programmed allows for gaps (not programmed areas). When all other fails, you'll have to edit the file manually and delete the area where your EEProm-area lies.

             

           

             

          Bob

          • 2. Re: ISSP programmer preserve EEPROM?
            paul.abbott

            Thanks for the suggestion, but it didn't seem to work.

               

            Here's what I did:

               

            I identified the EEPROM section of flash from E2PROM_1.h

               

            #define  E2PROM_1_START_ADDR      (0xff * 64)                        // absolute address of E2PROM_1 EEPROM device
            which is 0x3fc0.

               

            In the .hex file, I deleted the following line.

               

            :403fc00030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030c1

               

            Then tried to load the hex file in the ISSP programmer, but it complained that the checksum was invalid.

               

            So, I initialized the area to zeros in the C code with the following in main.c:

               

            // clear the EEPROM space
            #pragma abs_address 0x3fc0 //E2PROM_1_START_ADDR
                const char InitialValues[64] = {0x00};
            #pragma end_abs_address
             

               

            Now, the EEPROM area is all zeros, and I can delete the line without the ISSP programmer complaining.

               

            :403fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1

               

            But alas the EEPROM memory was still wiped when flashing.

               

            Now that I think about it- I guess the chip has to do a full erase in order to be reflashed since it is secured.  Seems like there may be no solution to preserving the calibration data...