GPIF makes me mad !

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

cross mob
Anonymous
Not applicable

 Hello,

   

 

   

I'm trying to use the GPIF for a simple application : interfacing a NAND flash. I designed some state machines :

   

- writting a command 

   

- writting an address

   

- writting data

   

- receiving data

   

I created 2 DMA channels (one for transmitting data, the other to receive) agtnd attached them (through socket 0 and 1) to my state machines.

   

To produce a NAND command, i switch between stat machine to send command, address and write or read data.

   

When i need to send data, i get a buffer (DMA channel get buffer), fill it and commit it and when i have to read data, i get a buffer and discard it after processing it.

   

I'm working with DMA buffer up to 8192 bytes (a nand page). All seems work except :

   

- during the read phases, sometime the FSM is stuck in the start state, waiting for a DMA_RDY_1 condition, like the previous discard didn't work. The getbuffer call returns me a buffer with a count to 0. My current workaround is to discard these '0 count' buffer and trying to get another one.

   

- the other MAJOR issue is the commit time : in transmission, getting a buffer (8192) + memcpy it + committing it takes 2,5 milli second !!!!! I have the same thing when i'm reading data. During command and address phase, comminting a 1 or 5 bytes buffer takes 60 micro second !

   

 

   

How to fix that ?

0 Likes
1 Reply
Anonymous
Not applicable

Hi,

   

Please create a tech support case and one of our engineer will help you on this.

   

Regards,

   

sai krishna.

0 Likes