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.

Linux/AM5728: PRU firmware load error

Part Number: AM5728

Tool/software: Linux

Hello, I have a problem when loading a c++ program to PRU,syslog is as below.

Background:have to mention that I have using the c program(using rpmsg)on Pru for nearly two years.Now I am rewriting the program with c++,I suppose this problem is related to stack size issue,but I can  not comfirm it

I want to know why this happened,and more importantly , I want to know how to debug this problem more efficiently( I have tried to modify my problem to debug the problem,but every time when it occured ,I have to reboot the whole develop board,which is quite inconvenient and annoying  )

[   58.174487] ------------[ cut here ]------------
[   58.174504] WARNING: CPU: 1 PID: 28 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x254/0x370
[   58.174513] 44000000.ocp:L3 Custom Error: MASTER PRUSS1 PRU1 TARGET DMM_P1 (Read): Data Access in User mode during Functional access
[   58.174517] Modules linked in:
[   58.174531] CPU: 1 PID: 28 Comm: irq/23-l3-app-i Not tainted 4.9.69-02540-g704c9b6 #20
[   58.174534] Hardware name: Generic DRA74X (Flattened Device Tree)
[   58.174537] Backtrace: 
[   58.174557] [<c020b1f0>] (dump_backtrace) from [<c020b4cc>] (show_stack+0x18/0x1c)
[   58.174563]  r7:00000009 r6:600c0113 r5:00000000 r4:c1024bd8
[   58.174572] [<c020b4b4>] (show_stack) from [<c04d34dc>] (dump_stack+0x90/0xa4)
[   58.174579] [<c04d344c>] (dump_stack) from [<c022d584>] (__warn+0xec/0x104)
[   58.174585]  r7:00000009 r6:c0bc49d8 r5:00000000 r4:ee667e20
[   58.174591] [<c022d498>] (__warn) from [<c022d5dc>] (warn_slowpath_fmt+0x40/0x48)
[   58.174597]  r9:00000001 r8:ee650050 r7:c0bc4d38 r6:00000002 r5:c0bc4904 r4:c0bc49a8
[   58.174605] [<c022d5a0>] (warn_slowpath_fmt) from [<c05032cc>] (l3_interrupt_handler+0x254/0x370)
[   58.174608]  r3:ee649e00 r2:c0bc49a8
[   58.174611]  r4:80080003
[   58.174619] [<c0503078>] (l3_interrupt_handler) from [<c0281e80>] (irq_forced_thread_fn+0x28/0x7c)
[   58.174624]  r10:c0281e58 r9:ee6503c0 r8:ee64f000 r7:00000001 r6:00000000 r5:ee64f000
[   58.174626]  r4:ee6503c0
[   58.174633] [<c0281e58>] (irq_forced_thread_fn) from [<c0282268>] (irq_thread+0x130/0x208)
[   58.174637]  r7:00000001 r6:00000000 r5:ffffe000 r4:ee6503e4
[   58.174645] [<c0282138>] (irq_thread) from [<c024ace8>] (kthread+0x110/0x118)
[   58.174651]  r10:00000000 r9:00000000 r8:c0282138 r7:ee6503c0 r6:ee666000 r5:ee650400
[   58.174653]  r4:00000000
[   58.174662] [<c024abd8>] (kthread) from [<c0207ba8>] (ret_from_fork+0x14/0x2c)
[   58.174666]  r8:00000000 r7:00000000 r6:00000000 r5:c024abd8 r4:ee650400
[   58.174669] ---[ end trace 0000000000000002 ]---

  • Hello Philos,

    1) What version of Linux are you using?

    2) Please give us more information about the issue. E.g., does it happen when you are loading the PRU, during code execution, etc?

    3) Please reference the PRU Optimizing C/C++ Compiler User's Guide for limitations on C++ support.

    Regards,

    Nick

  • Hello , Nick

    1)Linux version is 4.9.69-02540-g704c9b6, according to the Linux log I posted up.

    2)The err occurred when I execute "echo 'start' > /sys/class/remoteproc/remoteproc4/state", I mean during code execution. while my program is doing the init() procedure.

    3)I have been reading on that document

  • Hello Philos,

    Ok, I think you are telling me the issue happens when your code is executing (in an init() procedure that you wrote in your firmware rather than when RemoteProc is loading and initializing your code). Let me know if my understanding is wrong.

    It would be helpful to know exactly what line of code is causing the issue. Please find a summary of debug resources in my reply to PRU debug under Linux

    I will be out of office for the rest of the week, but I will be able to respond next week.

    Regards,

    Nick