6 Replies Latest reply on May 17, 2019 1:01 AM by YangyangC_06

    U3V CyFxU3VUpdateSerialNum updated wrong address data

    yiwa_4244806

      Hi there,

      When I was reviewing source code for FX3 U3V device, I found a question as below:

       

      the function source code is:

      ===

      uint32_t *uniqueIDreg = (uint32_t *)0xE0055010;

       

      void CyFxU3VUpdateSerialNum(void)

      {

      uint8_t j=0;

      uniqueIDL = *(uniqueIDreg);

      uniqueIDH = *(uniqueIDreg+32);

       

       

      for(j=0; j<4; j++)

      {

      CyU3VABRM[260+j] = ((uniqueIDL>>(j*8))&0x000000FF);

      CyU3VABRM[264+j] = ((uniqueIDH>>(j*8))&0x000000FF);

      }

      }

      ===

      It is to update the unique ID serial number from register whose address is 0xE0055010.

       

      But!

      uint8_t CyU3VABRM[528] =

      {

      0x00, 0x00, 0x01, 0x00, // GenCP Version: Minor version (16bits) = 0x0000 , Major version (16bits) = 0x0001

      U3V_MANUFACTURER_NAME, // Manufacturer Name String in ASCII, 64 bytes

      U3V_MODEL_NAME, // Model Name String in ASCII, 64 bytes

      U3V_FAMILY_NAME, // Family Name string in ASCII, 64 bytes

      U3V_DEVICE_VERSION, // Device Version String in ASCII, 64 bytes

      NULL_64, // Manufacturer info string, 64 bytes, NULL            <-----------------Wrong! CyU3VABRM[260+0] begins here!!!

      NULL_64, // Serial Number string, 64 bytes, to be filled during runtime by CyFxU3VUpdateSerialNum()

       

      How this happens?

      BTW, could anyone tell me a fake 8-byte unique ID serial number to test? The host seems stall after the 8-byte data received.

      Or could help provide the dump data of these sequence?

       

      Tks so much!!!