cancel
Showing results for 
Search instead for 
Did you mean: 

USB Low-Full-High Speed Peripherals

stgu_4707816
New Contributor

I have a custom board using CY7C68013A with external eeprom.  I'm trying to see how I can clone the source code in the external eeprom from the cyconsole.  I need to flash multiple units with the same code embedded in the eeprom. 

Any help would be greatly appreciated.

Thank you,

0 Likes
1 Solution
YatheeshD_36
Moderator
Moderator

Hello,

Please follow the below steps to retrieve the firmware.

1. Connect the FX2LP to the host PC so that the device is recognized in the Control Center. This is necessary for retrieving the firmware.

If EEPROM on the board is programmed with a firmware which does not detect the device in the Control center, then you need to disconnect the EEPROM and make the FX2LP enumerate as "No EEPROM Device"

pastedImage_1.png

2. Make sure that the EEPROM is connected to FX2LP.

3. Program the RAM of FX2LP with Vend_ax.hex firmware available in the FX2LP DVK package. Do not reset the device after programming the vend_ax firmware.

pastedImage_2.png

4. Open the Control End point under the connected FX2LP Device and go to Data Transfers Tab.

5. The Vend_ax firmware running on the RAM can be used to retrieve the contents on the EEPROM connected by executing the right vendor command.

The firmware size on EEPROM should be known to retrieve the entire firmware, or you can retrieve the entire contents on the EEPROM by specifying the EEPROM size.

0xa9 vendor command is used for uploading and downloading the firmware from the large EEPROM.

Populate the fields under the Data Transfers Tab as below.

Direction: In

Req Type: Vendor.

Target: Device

Req code: 0xa9

wValue: 0x0000 (start address of the EEPROM)

wIndex: 0x0000

Bytes to transfer : 10000 (size of firmware or the size of EEPROM in bytes)

Here i have used 10000 as I have loaded the Bulkloop.iic file on EEPROM which is only 3KB.

pastedImage_7.png

6. Use the Transfer File button and give a file name with .iic as the extension.

example EERPOM.iic

7. Click On Save.

8. This will save the EEPROM contents on the file.

End of firmware in the saved file can be located using the last bytes programmed to EEPROM, which is 0x80 0x01 0xE6 0x00

pastedImage_9.png

If the last bytes are present in the Saved file, the file can be used to program the EEPROM of other devices FX2LP.

The file size can also be trimmed to the last bytes on the EEPROM content.

Thanks,

Yatheesh

View solution in original post

0 Likes
7 Replies
YatheeshD_36
Moderator
Moderator

Hello,

Do you have the firmware file (.iic) ready with you to program it to an EEPROM of FX2LP or are you looking to retrieve the code from the EEPROM of an FX2LP device?

Thanks,

Yatheesh

0 Likes
stgu_4707816
New Contributor

Hello,

I'm looking to retrieve the code from the eeprom of the fx2lp device.

0 Likes
YatheeshD_36
Moderator
Moderator

Hello,

Please follow the below steps to retrieve the firmware.

1. Connect the FX2LP to the host PC so that the device is recognized in the Control Center. This is necessary for retrieving the firmware.

If EEPROM on the board is programmed with a firmware which does not detect the device in the Control center, then you need to disconnect the EEPROM and make the FX2LP enumerate as "No EEPROM Device"

pastedImage_1.png

2. Make sure that the EEPROM is connected to FX2LP.

3. Program the RAM of FX2LP with Vend_ax.hex firmware available in the FX2LP DVK package. Do not reset the device after programming the vend_ax firmware.

pastedImage_2.png

4. Open the Control End point under the connected FX2LP Device and go to Data Transfers Tab.

5. The Vend_ax firmware running on the RAM can be used to retrieve the contents on the EEPROM connected by executing the right vendor command.

The firmware size on EEPROM should be known to retrieve the entire firmware, or you can retrieve the entire contents on the EEPROM by specifying the EEPROM size.

0xa9 vendor command is used for uploading and downloading the firmware from the large EEPROM.

Populate the fields under the Data Transfers Tab as below.

Direction: In

Req Type: Vendor.

Target: Device

Req code: 0xa9

wValue: 0x0000 (start address of the EEPROM)

wIndex: 0x0000

Bytes to transfer : 10000 (size of firmware or the size of EEPROM in bytes)

Here i have used 10000 as I have loaded the Bulkloop.iic file on EEPROM which is only 3KB.

pastedImage_7.png

6. Use the Transfer File button and give a file name with .iic as the extension.

example EERPOM.iic

7. Click On Save.

8. This will save the EEPROM contents on the file.

End of firmware in the saved file can be located using the last bytes programmed to EEPROM, which is 0x80 0x01 0xE6 0x00

pastedImage_9.png

If the last bytes are present in the Saved file, the file can be used to program the EEPROM of other devices FX2LP.

The file size can also be trimmed to the last bytes on the EEPROM content.

Thanks,

Yatheesh

View solution in original post

0 Likes
stgu_4707816
New Contributor

Hello Yatheesh,

Thank this is really useful information. If I want to upload this downloaded iic file, would I need to use the exact eeprom or would a bigger eeprom with a different page buffer would as well?

Thank you again,

0 Likes
YatheeshD_36
Moderator
Moderator

Hello,

You can use EEPROM as large as 64KB in size, double byte.

Please refer to section 2.2 on page 4 in the FX2LP Boot Options application note.

Regards,

Yatheesh

0 Likes
stgu_4707816
New Contributor

Hello this was very useful information thank you.

One more issue I'm having is after I clone the eeprom and upload to new eeprom, the device is not functioning properly.  I used a USB analyzer and received the following USBD status below:

10 0x00000000 0 $print instruction Direction "Up" 18.06.2020 09:42:32

10 0x00000000 136 URB urb {…} 18.06.2020 09:42:32

10 0x00000000 24 URB_HEADER UrbHeader {…} 18.06.2020 09:42:32

10 0x00000000 2 unsigned short Length 136 18.06.2020 09:42:32

10 0x00000002 2 URB_FUNCTION   Function URB_FUNCTION_CONTROL_TRANSFER (8) 18.06.2020 09:42:32

10 0x00000004 4 USBD_STATUS     Status { Status=STALL_PID (3221225476) } 18.06.2020 09:42:32

10 0x00000004 4 StatusCode     Status STALL_PID (3221225476) 18.06.2020 09:42:32

The working unit has the following message below:

10 0x00000000 0 $print instruction Direction "Up" 18.06.2020 09:46:39

10 0x00000000 136 URB urb {…} 18.06.2020 09:46:39

10 0x00000000 24 URB_HEADER UrbHeader {…} 18.06.2020 09:46:39

10 0x00000000 2 unsigned short Length 136 18.06.2020 09:46:39

10 0x00000002 2 URB_FUNCTION   Function URB_FUNCTION_CONTROL_TRANSFER (8) 18.06.2020 09:46:39

10 0x00000004 4 USBD_STATUS     Status { Status=SUCCESS (0); Type="Success" } 18.06.2020 09:46:39

10 0x00000004 4 StatusCode     Status SUCCESS (0) 18.06.2020 09:46:39

10 0x00000008 0 $print instruction     Type "Success" 18.06.2020 09:46:39

Any help would be greatly appreciated.

Thank you,

0 Likes
YatheeshD_36
Moderator
Moderator

Hello,

Can you please verify if the first byte in the saved file containing the EEPROM data is "0xC2" and the last bytes of the firmware i.e 0x80 0x01 0xE6 0x00 is also present in the saved file?

You can view the contents using any of the hex editors.

If these two conditions are met, the EEPROM data saved is correct.

Please make sure that you are accessing the proper device when doing a data transfer through the control endpoint.

You can also share the file with me and the vendor command you are using so that I can reproduce the issue.

Thanks,

Yatheesh

0 Likes