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.

AM572x GPIO ARM and DSP control

Other Parts Discussed in Thread: AM5728

AM5728, PDK 1.0.2, Compiler V8.1.0, BIOS 6.45.1.29, XDC 3.32.0.06

Using the AM5728 on a custom board.  A15 running Linux, DSP core running SYS/BIOS. 

The desire is for the ARM to access GPIO banks 3,4,5 and DSP to access banks 6,8.  The idea was the ARM and DSP would not ever access the same GPIO banks.  The ARM would configure and use its banks and likewise for the DSP.  However, we noticed that the DSP could not control its GPIO outputs unless we configured the pin for output in the Linux like this:

echo 235 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio235/direction

If I don't do that the DSP can't control the pin.  If I do that then it works as expected.

BTW, the DSP is setting up the GPIO_v1_configDsp structure and calling GPIO_Init(); and setting up interrupt call backs which seem to work, so I'm baffled as to why those additional steps are required in Linux.

  • The RTOS team have been notified. They will respond here.
  • Chris,

    The ARM is the system master in your application so all of the SOC pinmuxing and initialization that is required by your custom board needs to be done from the ARM side. On the DSP side, when you use standalone examples the BOARD_init API call does the pinmuxing not the GPIO_init. However when you are using ARM Linux, the pin muxing and clocking is done from the ARM and on the DSP side, you merely connect the interrupts and send/receive data. This may be why you are needing to set the GPIO pins on the Linux side to be able to control the pin from the DSP.

    Instead of configuring the pin dynamically, you may want to set the pins as output directly in the DTS file where the pinmuxing is done.

    Regards,
    Rahul