How to start linux after enabeling RPMsg in Devicetree

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to start linux after enabeling RPMsg in Devicetree

Jump to solution
5,124 Views
erikfriedel
Contributor III

Hi there

I have got an iMX7s on custom board with 512MB Ram. I successfully run the hello_world example and now I am trying to get the pingpong example to work. On the M4 side there are no problems. I can boot and it shows:

   RPMSG PingPong FreeRTOS RTOS API Demo...
   RPMSG Init as Remot

But on the Linux side there are a few problems:

If I don't enable rpmsg in the devicetree I can boot and load the pingpong module using modprobe imx_rpmsg_pingpong. Additionaly rpmsg is shown in /sys/bus and /sys/module/ . But nothing else happens.

If I set rpmsg in the devicetree to "okay" I just see this:

   Starting kernel ...

   Uncompressing Linux... done, booting the kernel.

Things that I've changed so far:

   - obviously modifying the DT

         - set rpmsg to "ok"

         - set usable memory

         / {

          memory {
          linux,usable-memory = <0x80000000 0x1ff00000>;

          }

          }

   - changing the vring in the Linux kernel in imx_rpmsg.c  from BFFF0000 --> 9FFF0000 (and BFFF8000 --> 9FFF8000)

   - changing the vring in FreeRTOS in platform_info.c the same way

   - RPMsg and Pingpong are enabled in the Kernel

Please help :smileyhappy:

Erik

Labels (1)
0 Kudos
1 Solution
3,700 Views
BiyongSUN
NXP Employee
NXP Employee

i.MX Development Miscellanea(i.MX 开发杂记)
https://community.nxp.com/docs/DOC-335198

i.MX6SX_M4_MPU_Settings_For_RPMSG_04132018.pdf

View solution in original post

0 Kudos
8 Replies
3,700 Views
nikhil3karale
Contributor I

Hi Erik Friedel,

Could you please tell what changes you did in device tree and in M4 side to run pingpong example. I am also struggling with the same, running pingpong example on custom board with 512 MB RAM .‌

0 Kudos
3,700 Views
erikfriedel
Contributor III

Thank you for your answers.

@D. RY where do I have to put my vring then? In the RPMsg patches from igor are the same values I have.

I am now able to boot into Linux thanks to a colleague and when I run "modprobe imx_rpmsg_pingpong", the following message appears:

init pingpong

init pingpong: 0

So it doesn't start to count.

Kmod list shows:

Module                                Size   Used by

imx_rpmsg_pingpong         2038  0
virtio_rpmsg_bus              11468  1 imx_rpmsg_pingpong
virtio                                    7481  1 virtio_rpmsg_bus
virtio_ring                          11266  1 virtio_rpmsg_bus

changes done:

- patches provided by igor

-FreeRTOS set to 9FFF000...

Erik

0 Kudos
3,700 Views
dry
Senior Contributor I

Hey Erik

Sorry late replying.

I looked at Biyong 's document he added, and it looked to contain all the details. Have you seen it?

I'm on slightly different SoC and may be BSP not same, I woudn't want to lead you in error.

If both - Linux & FreeRTOS - have now updated address of the vrings, they should find each other.

I'm also not using patches Igor referred to thus wouldn't be able to help straight away.

0 Kudos
3,700 Views
erikfriedel
Contributor III

Hi

I was able to solve this problem by changing the devicetree a bit and using a clean kernel. After changing the vrings in the kernel and in FreeRTOS it worked.

Thanks for your help.

0 Kudos
3,701 Views
BiyongSUN
NXP Employee
NXP Employee

i.MX Development Miscellanea(i.MX 开发杂记)
https://community.nxp.com/docs/DOC-335198

i.MX6SX_M4_MPU_Settings_For_RPMSG_04132018.pdf

0 Kudos
3,700 Views
BiyongSUN
NXP Employee
NXP Employee

What's your CMA size? 

0 Kudos
3,700 Views
igorpadykov
NXP Employee
NXP Employee

Hi Erik

please check Warp7 (i.MX7S@512MB LPDDR3) RPMsg patches

Multicore communication on WaRP7 using Remote Processor Messaging bus (RPMsg) - i.MXDev Blog 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
3,700 Views
dry
Senior Contributor I

If you only have 512MB RAM and you placing rpmsg at the end of it  - in the last 1MB somewhere - then your vring placing is way off, as you can see. 

0 Kudos