Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

RTOS/PROCESSOR-SDK-AM437X: PRU-ICSS functions and peripherals

$
0
0

Part Number:PROCESSOR-SDK-AM437X

Tool/software:TI-RTOS

Dear support and users.

I'm trying to make some example applications related to ARM and PRU core working together 
I'm using:  
- idkAM437 dev. borad
- processor_sdk_rtos_am437x_4_00_00_04

Final idea is running HSR or PRP on first PRU-ICSS and on second PRU-ICSS custom firmware which handle McSPI comunication.
Soo... I think that first need understand:
- How ARM-to-PRU and PRU-to-ARM interrupts work 
- How can exchange data between ARM and PRU (IPC is to huge...need just locate some memory for exchange data with interrupt latching)

I start with  "pru-software-support-package" where i found examples for PRU. I make some example for interrupting PRU0 to PRU1.
Q1.) There is code for PRU-ICSS core: ARM-PRU and PRU-ARM interrupts. Is there any code for ARM core which handle interrupts from PRU or make iterrupts to PRU??

Q2.) How should be data exchange implemented? Any example? Shared memory it seems to be used by HSR/PRP PRU code. Is possible to access with ARM directly in PRU ram (for ICSS0)?.. Is better to use DDR?  What is the fastest access to memory for exchanging data? 

I also check how is done "PRU work" in example "NIMU_ICSS_BasicExample_idkAM437x_wSoCLib_armExampleproject". Then I try to make my own example.

Q3.) I dont understand what arguments of function "PRUICSS_registerIrqHandler".

What is :
-pruEvtoutNum (is this HOST interrupt of PRU? Figure 30-24 in Technical Reference Manual)
-intrNum ??
-eventNum ??
Where I can found values in Technical Reference Manual?

PRUSS example don't exist for AM437x, but I check source main.c in "pdk_am437x_1_0_7\packages\ti\drv\pruss\test\src"

PRUICSS_registerIrqHandler2 it seems similar to PRUICSS_registerIrqHandler function just that it take array of settings.
I can't found where come from this magic numbers -> intrCfg.intNum = 134+32; , intrCfg.pruEvtoutNum = 2;

Also I have problem with understanding PRUICSS_IntcInitData_s parameters.

Can you please point me on this informations?.

Q4.)

    ret  = PRUICSS_socGetInitCfg(&pruIcssCfg);
    if (ret  != PRUICSS_RETURN_SUCCESS)
    {
        while(1);
    }
     pruIcssHandle = PRUICSS_create((PRUICSS_Config*) pruIcssCfg,PRUICCSS_INSTANCE_TWO);

Debugging stop on function do_AngelSWI() executed by _kill(int)() function (inside PRUICSS_create on line 95 -> "object->pruicss_version = HWREG(temp_addr) & 0x7ffU;").
Then I force PRU address (0x54400000) section as NON cacheable in .cfg file and program don't crash. So it seems that there are some needs to know how setup MMU... It seems that periphery registers don't like to be read?? . I'm new in using  MMU... can you explain me details what was going one? Where I can found information and guides about this issue?




Thanks!
Best Regards
Mare


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>