cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Observer
Observer
4,634 Views
Registered: ‎06-21-2010

ML402 USB firmware download issue (CY7C67300)

Jump to solution

Hi,

 

I've been struggling with the CY7C67300 for several weeks now and have tried many things to get a firmware application running on the chip.

 

As seen in a different post:
http://forums.xilinx.com/t5/Xilinx-Boards-and-Kits/Using-the-EZ-HOST-CY7C67300-on-a-ML605-board/m-p/67277

 

These methods do not work for me. It seems that the __asm("call 0xe7c6") call to get the HPI interface enabled does not work. Successfully downloading the firmware to the EEPROM via qtui2c, giving it plenty of reset and boot time (>1sec) and polling the HPI Status Port as well as trying a COMM_RESET does not give any results. The HPI interface is unresponsive.

 

We used the source code that worked for the Original Poster of the thread linked above and our HPI was still unresponsive.

 

We switched to Co-processor boot mode by tying pull-down resistors to the BIOS boot pins 39 and 40 i think and successfully got the HPI interface running, but now are not able to successfully install a firmware application through downloading and executing of firmware via HPI.

 

We have used the Cypress de2_app.c and the scanwrap header behavior as a model for downloading and executing firmware. We are trying to do this via FPGA and not the Microblaze processor, so re-implementing the de2_app.c code is not an option.

 

If anyone has seen success in using the Cypress USB chip on the ML402 please post. Particularly if the __asm("call 0xe7c6") call has been successfully implemented or a firmware application has successfully run after being downloaded over HPI.

 

 

1 Solution

Accepted Solutions
Highlighted
Observer
Observer
5,680 Views
Registered: ‎06-21-2010

I figured it out.

 

place the assembly call in the beginning of the app_pre_init function:

 

void app_pre_init(void)
{
__asm( "call 0xE7C6" : : );

 

void app_pre_init(void)

{

__asm( "call 0xE7C6" : : );

...

 

 

then make sure you use the scanwrap command in the bash shell. details are provided in the cypress bios user manual. make sure to match the base address to the one listed in the linker script file.

View solution in original post

0 Kudos
3 Replies
Highlighted
Observer
Observer
5,681 Views
Registered: ‎06-21-2010

I figured it out.

 

place the assembly call in the beginning of the app_pre_init function:

 

void app_pre_init(void)
{
__asm( "call 0xE7C6" : : );

 

void app_pre_init(void)

{

__asm( "call 0xE7C6" : : );

...

 

 

then make sure you use the scanwrap command in the bash shell. details are provided in the cypress bios user manual. make sure to match the base address to the one listed in the linker script file.

View solution in original post

0 Kudos
Highlighted
Participant
Participant
3,957 Views
Registered: ‎10-12-2009

Hi,

I am also trying to bring up HPI. I placed the assembly call in the beginning of the app_pre_init. But I can’t even reset the chip over HPI. I am using standalone mode.

 

What was the problem for successfully installing a firmware application through downloading and executing of firmware via HPI?

 

Can you clarify: "We used the source code that worked for the Original Poster of the thread linked above and our HPI was still unresponsive?" Which source code?

 

Best Regards,

Dragan

0 Kudos
Highlighted
3,760 Views
Registered: ‎06-11-2012

Hi,

   I am starting to modify the de2 demo project, while it's not working although i add the __asm(call " ') to enable HPI.  I wonder can anybody give a hint how to modify. Thanks. I appreciate it. by the way, i try to let the cy7c67300 work on ML605 board.

 

 

Best Regards,

ethan

0 Kudos