| Overview |
| ======== |
| The Multicore RPMsg-Lite string echo project is a simple demonstration program that uses the |
| MCUXpresso SDK software and the RPMsg-Lite library and shows how to implement the inter-core |
| communicaton between cores of the multicore system. |
| |
| It works with Linux RPMsg master peer to transfer string content back and forth. The name service |
| handshake is performed first to create the communication channels. Next, Linux OS waits for user |
| input to the RPMsg virtual tty. Anything which is received is sent to M4. M4 displays what is |
| received, and echoes back the same message as an acknowledgement. The tty reader on the Linux side |
| can get the message, and start another transaction. The demo demonstrates RPMsg’s ability to send |
| arbitrary content back and forth. Note: The maximum message length supported by RPMsg is now 496 |
| bytes. String longer than 496 will be divided by virtual tty into several messages. |
| |
| Shared memory usage |
| This multicore example uses the shared memory for data exchange. The shared memory region is |
| defined and the size can be adjustable in the linker file. The shared memory region start address |
| and the size have to be defined in linker file for each core equally. The shared memory start |
| address is then exported from the linker to the application. |
| |
| Toolchain supported |
| =================== |
| - GCC ARM Embedded 9.2.1 |
| - IAR embedded Workbench 8.50.1 |
| |
| Hardware requirements |
| ===================== |
| - Micro USB cable |
| - MIMX8MQ6-EVK board |
| - J-Link Debug Probe |
| - 12V power supply |
| - Personal Computer |
| |
| Board settings |
| ============== |
| No special is needed. |
| |
| |
| |
| Prepare the Demo |
| ================ |
| 1. Connect 12V power supply and J-Link Debug Probe to the board, switch SW701 to power on the board |
| 2. Connect a USB cable between the host PC and the J1701 USB port on the target board. |
| 3. Open two serial terminals for A53 core and M4 core with the following settings: |
| - 115200 baud rate |
| - 8 data bits |
| - No parity |
| - One stop bit |
| - No flow control |
| 4. Using U-Boot command to run the demo.bin file. For details, please refer to Getting Started with MCUXpresso SDK i.MX 8M Quad.pdf |
| 5. After running the demo.bin, using the "boot" command to boot the kernel on the A core terminal; |
| 6. After the kernel is boot, using "root" to login. |
| 7. After login, make sure imx_rpmsg_tty kernel module is inserted (lsmod) or insert it (modprobe imx_rpmsg_tty). |
| |
| Running the demo |
| ================ |
| After the boot process succeeds, the ARM Cortex-M4 terminal displays the following information: |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| RPMSG String Echo FreeRTOS RTOS API Demo... |
| |
| Nameservice sent, ready for incoming messages... |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| After the Linux RPMsg tty module was installed, the ARM Cortex-M4 terminal displays the following |
| information: |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| Get Messgae From Master Side : "hello world!" [len : 12] |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| The user can then input an arbitrary string to the virtual RPMsg tty using the following echo command on |
| Cortex-A terminal: |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| echo test > /dev/ttyRPMSG30 log below shows the output of the RPMsg-Lite str echo demo in the terminal window: |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| On the M4 terminal, the received string content and its length is output, as shown in the log. |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| Get Message From Master Side : "test" [len : 4] |
| Get New Line From Master Side |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| Customization options |
| ===================== |