1 Reply Latest reply on Jul 23, 2012 12:23 AM by userc_39074

    GPIF makes me mad !





      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 ?