This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ARM335x, GPMC and FIFO inside FPGA

Dear all,

I already saw several posts on GPMC bus and FPGA, but I need "overconfidence ".

I have some data produced in the FPGA and I want to send them to the ARM335x.

In particular, I will put my data in a FIFO (with the write clock set by my FPGA) and I'll use the GPMC bus to read them. My feeling is that the "GPMC to 16-Bit Non-multiplexed Memory" is the best approach.

The "read side" of the FIFO needs a "read enable" signal and a "read clock" signal.

It looks to me that I do not need most of the signals of the GPMC bus (I have only to take care of the FPGA side: I do not care about how to set all signals on the ARM side). For example, the signals related to the addressing (nADV and also the address value) could be neglected because the read side of the FIFO do not require an address. I only need the "nOE" signal to enable a "read_enable" in the FIFO with the right timing ( I know, too many enable in the same sentence). In principle,  it means that I could also leave those pins un-connected (even if it is better to have them accessible: you never can tell...).

Is that right?


Thanks a lot.

Alberto

  • Hi Alberto,
     
    Please refer to the AM335X Technical Reference Manual, Rev.I, section 7.1.3.3.10.3 Asynchronous and Synchronous Accesses in Nonmultiplexed Mode. You will definitely need the data lines, chip select, OE and possibly WAIT signals. For synchronous operation you will also need the GPMC clock.
  • Hi,                                                                                                                                                              thanks a lot for your answer (and sorry for the delay): that was the document I used to set communication on the FPGA side. Now, I have to set the AM3x side to manage the reading phase from that FIFO and I almost lost. I saw several posts which starts as: "I have to use GPMC bus and I do not know how to do it.", and several posts asking too detailed informations. So, I'll try to be in the midway.

    I usually write firmware (vhdl), so I am not that expert in software, kernel and driver (frankly speaking, I am not an exper at all). I spent the last two days reading manuals, guides, codes around and what I have understood so far can be summarized in a few steps (by supposing to work with the 3.8 linux kernel):

    1) create a .dts file (whit chip-select, output-enable, write enable... settings)

    2) compile and install it in /lib/firmware

    3) enable it ( in the slot field)

    4) Now that you have sort of drivers for GPMC communication, it is possible to write C code to work with it.

    Something is missing? is that right?

    And then, is there a .dts template for gpmc that one can just modify to set communication? Is there also some already-tested file for C coding? ( I saw something here http://lxr.free-electrons.com/source/arch/arm/mach-omap2/gpmc.h?a=arm and here http://lxr.free-electrons.com/source/arch/arm/mach-omap2/gpmc.c?a=arm but I am not pretty sure if it is what I need and if I have to set the .dts by using them or it is already done...).

    Thanks a lot for your help.

    Alberto

  • Hi Alberto,
     
    I'm sorry but I cannot help with software. Besides you should know that the TI SDK uses the Arago build with kernel v.3,2. Kernel v3.8 is supported by the Angstrom build over on the http://www.beagleboard.org/Community/Forums.
  • Hi,

    thanks for your reply. I'll try to ask them how to fix it.

    Thanks again for all your effort.

    Alberto