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

    U3V CyFxU3VUpdateSerialNum updated wrong address data


      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.



      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!!!