- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have FX3 connected to a main application processor via the asynchronous SRAM interface with 8 address and 16 data bits. I am trying to access the FX3 internal MMIO space from the application processor(AP).
I am able to access the P-port registers from the AP by reading and validating the PP_IDENTIFY register value(0x81). Now the next step is to access the internal MMIO registers(specifically the S-port register to configure and use the SDIO peripheral).
Seeing the registers, it seems easy. I can access the PP_MMIO_* register to program but I'm unable to do so. This is my sequence to access the SDCMD0 register.
WRITE32(PP_MMIO_ADDR, register_address_of_sdcmd0); // Write the address of the MMIO register to be accessed to the PP_MMIO_ADDR register.
WRITE16(PP_MMIO, PP_RD); // Write to the MMIO Control register to the enable the read from the address programmed in PP_MMIO_ADDR register.
WAIT(); // Wait until the read operation has been completed.
I can write to the PP_MMIO_ADDR register and have verified it by reading it back. However, I'm unable to program the PP_MMIO register. It reads back 0 every
time.
My register value for PIB_CONFIG is 0xC8000000.
My register value for GPIF_CONFIG is 0xC0000A12.
Both these values indicate that the Read operation should succeed, but it isn't and I'm not sure why. Can anyone help me here quickly ? Am I on the right path or do I need to do something else here ? Any help would be appreciated.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The problem was neither with the P-Port or with the Write16() function. The main application SOC was big-endian and my commands to the ARM core were interpreted as little-endian. Once I changed the P-Port to operate on big endian, the problem fixed.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Can you please check if this issue is specific only with the PP_MIMO register or with the Write16 () function itself? Can you please try this function on any other register and see if you are able to write?
Regards,
- Madhu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The problem was neither with the P-Port or with the Write16() function. The main application SOC was big-endian and my commands to the ARM core were interpreted as little-endian. Once I changed the P-Port to operate on big endian, the problem fixed.