Detect EEPROm with vend_ax Firmware in FX2LP

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hello,

   

I wrote a tool for programming the large EEPROM connected to FX2LP via WinUSB. It works fine but I cannot correctly detect the EEPROM size using the 0xA5 vendor request.
I stop the CPU by writing 0x01 to 0xE600 via the 0xA0 request. After this I download the complete vend_ax in one block to the ram starting at 0x0000. After sending 0x00 to the 0xE600 the vend_ax is running and responding on the vendor requests. I can program and read the connected EEPROM. But the I2C Type request 0xA5 always reflect the EEPROM state at power-up. For firmware Update, we disable the 24C64 EEPROM by pulling down the A0 line to ground. Even if I remove the jumper before or after downloading and starting the vend_ax firmware, the A5 request always gives me 0x00. If the jumper is removed at power-up, the A5 gives me the correct 0x01. If I remove the EEPROM detection all works great, buts we want to go the safe way...
What are we doing wrong? I used the FXEeprom and fxload-libusb code together with the vend_ax application note for understanding the 2nd stage bootloader function. I use the vend_ax.hex from the fxload-libusb project. With the extracted vend_ax.hex from the source of FXEeprom Example the behavior is the same (but the programming itself is much slower...).

0 Likes
1 Reply
Anonymous
Not applicable

The EEPROM size detection is not dynamic as you think. During boot-up FX2LP checks for EEPROM and sets the bit for EEPROM type. Rather than sending the bit, Modify 0xA5 vendor command in vend_ax to check the EEPROM address and send data accordingly. This should get things working.

   

Regards,

   

Anand

0 Likes