1 Reply Latest reply on Jul 23, 2012 12:23 AM by rama.sai.krishna.vakkantula

    GPIF makes me mad !

    christophe.seyler

       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 ?