AM3358: What is the maximum achievable speed of dedicated PRU GPIO toggling

Part Number: AM3358

Tool/software:

Hi,

Would like to know the maximum achievable speed of dedicated PRU GPIO toggling.

I have tried to toggle the dedicated PRU GPIOs (register r30) using PRU C code and using kernel 5.10, but I could not toggle at 24MHz. I can gpio HIGH at 42ns and gpio going low for 120ns 

I have also tried to do gpio asm, but still results are same. Any PRU compiler flags or any limitation in HW itself ?

Here is my PRU gpio toggling code 

volatile register uint32_t __R30;

#define PRU0_PIN (1<<0)   // R30 bit0

    while (1) {
        __R30 |= PRU0_PIN;   // set high
        __delay_cycles(4);  // 5ns (200MHz PRU speed) * 4 => 20ns
        __R30 &= ~PRU0_PIN;  // set low
        __delay_cycles(4);  // 5ns (200MHz PRU speed) * 4 => 20ns
    }

I have referred to below documentation, didn't help.

https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/08_02_00_24/exports/docs/common/PRU-ICSS/PRU-Hands-on-Labs.html


Can you please provide any suggestions ?