Understanding Asymmetric Multi-Processing in Linux and RTOS

“Asymmetric AMP” Dual System

AMP (Asymmetric Multi-Processing) refers to an asymmetric multi-processing architecture. The “Asymmetric AMP” dual system means that multiple cores operate relatively independently, running different operating systems or bare-metal applications, such as Linux + RTOS/bare-metal, but require one main core to control the entire system and other slave cores. Each processor core is isolated, has its own memory, can independently run different tasks, and can communicate between multiple cores.

Understanding Asymmetric Multi-Processing in Linux and RTOS

Figure 1: RK3562J AMP Heterogeneous Multi-Core Framework Diagram

What Does “Asymmetric AMP” Mean for Industry

Stronger “System Real-Time Performance”

The asymmetric AMP architecture has stronger system real-time performance, allowing the use of fixed cores for real-time task processing. In the field of industrial automation control, the asymmetric AMP architecture can balance complex functions with real-time requirements. The AMP architecture improves system real-time performance, execution efficiency, computing power, and response speed.

Higher “System Stability”

The asymmetric AMP architecture offers higher system stability; cores operate independently and do not require frequent data interaction. Each processor core has its own memory, and cores do not interfere with each other. Developers can flexibly allocate tasks or designate communication between cores to enhance system stability, reduce crash risks, and ensure data integrity.

Lower “System Hardware Costs”

The asymmetric AMP architecture optimizes internal communication, allowing complex functions to be achieved with just one set of hardware circuits, significantly reducing system hardware costs. Each core can run different operating systems and process multiple tasks in parallel without additional hardware support, making it efficient and economical.

Understanding Asymmetric Multi-Processing in Linux and RTOS

Figure 2

Application Areas of the “Asymmetric AMP” Dual System

As the demands for embedded systems continue to rise, the asymmetric AMP architecture has become a new choice, primarily applied in industrial fields such as industrial PLCs, motion controllers, robotic controllers, relay protection devices, and small current selection devices.

Understanding Asymmetric Multi-Processing in Linux and RTOS

Figure 3

RK3562J Asymmetric AMP Development Case

This article mainly introduces the asymmetric AMP development case based on RK3562J, suitable for the following development environments.

Windows Development Environment: Windows 7 64bit, Windows 10 64bit

Linux Development Environment: VMware 16.2.5, Ubuntu 20.04.6 64bit

U-Boot: U-Boot-2017.09

Kernel: Linux-5.10.198

Linux SDK: LinuxSDK-[version] (based on RK3562_LINUX_SDK_RELEASE_V1.1.0_20231220)

Hardware Platform: Chuanglong Technology RK3562J Industrial Evaluation Board (TL3562-EVM)

(Click the video to unlock the highlights of the RK3562J fully domestically produced industrial core board in 1 minute!)

For simplification, this article only extracts part of the scheme function descriptions and test results; detailed product information can be downloaded by scanning the QR code at the end of the article.

Case Description

Case Functions:

(1) Cortex-A53 (CPU0, CPU1, CPU2, CPU3) cores run the Linux system and rpmsg_echo application; the Cortex-M0 (MCU) core runs the RT-Thread or Baremetal program to achieve the receiving and sending of rpmsg data from the Linux side.

(2) Cortex-A53 (CPU0, CPU1, CPU2) cores run the Linux system and rpmsg_echo application; the Cortex-A53 (CPU3) core runs the RT-Thread or Baremetal program to achieve the receiving and sending of rpmsg data from the Linux side.

The case program flowchart is shown below:

Understanding Asymmetric Multi-Processing in Linux and RTOS

Figure 4

Case Demonstration

The following demonstrates the Cortex-A53 (CPU0, CPU1, CPU2, CPU3) core running the Linux system and rpmsg_echo application, while the Cortex-M0 (MCU) core runs the Baremetal program.

Referring to product information, flash the amp.img image of the solidified case to the evaluation board and replace the kernel image of the evaluation board system. After U-Boot starts, it will load and run the amp.img image, and the serial terminal of the Baremetal program will print the program running information.

Understanding Asymmetric Multi-Processing in Linux and RTOS

Figure 5

Execute the following command to run the Linux application rpmsg_echo, sending 8 rpmsg data packets to the Cortex-M0 core running the Baremetal program. Each time the Cortex-M0 core receives an rpmsg data packet, it will send the data packet back to the Linux side. The content of the rpmsg data packet is “hello there x!” (where x is the rpmsg data packet number, incremented by 1 each time sent).

Target# ./rpmsg_echo -n 8

Understanding Asymmetric Multi-Processing in Linux and RTOS

Figure 6

For more RK3562J-related case demonstrations, engineers can scan the QR code below to download and give it a try!

Understanding Asymmetric Multi-Processing in Linux and RTOS

Understanding Asymmetric Multi-Processing in Linux and RTOS

Understanding Asymmetric Multi-Processing in Linux and RTOS

Leave a Comment

×