Unable to access the FX3 internal MMIO space via the P-Port PP_MMIO_* register

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

cross mob
Anonymous
Not applicable

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. 

0 Likes
1 Solution
Anonymous
Not applicable

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.

View solution in original post

0 Likes
2 Replies
Anonymous
Not applicable

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

0 Likes
Anonymous
Not applicable

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.

0 Likes