Introduction
This datasheet provides the performance numbers of various device drivers in MCU PLUS SDK for AM62AX
Generic Setup details
SOC Details | Values |
Core | R5F |
Core Operating Speed | 800 MHz |
Cache Status | Enabled |
Optimization Details | Values |
Build Profile | Release |
R5F Compiler flags | -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 -Wall -Werror -g -mthumb -Wno-gnu-variable-sized-type-not-at-end -Wno-unused-function |
R5F Linker flags | -Wl,–diag_suppress=10063 -Wl,–ram_model -Wl,–reread_libs |
Code Placement | HSM RAM (For SBL Stage1), DDR (SBL Stage2 and others) |
Data Placement | HSM RAM (For SBL Stage1), DDR (SBL Stage2 and others) |
Performance Numbers
SBL OSPI NAND performance (HS-FS)
- Software/Application used : sbl_ospi_nand_linux_multistage, ipc_rpmsg_echo_linux, linux and HSM App Images
- Cores booted by stage1 SBL : mcu-r5f0-0 r5f0-0
- Cores booted by stage2 SBL : hsm-m4f0-0 r5f0-0 a530-0 c75ss0
- Size of images loaded by stage1 : 185 KB
- Size of images loaded by stage2 : 1110 KB
- Boot Media Clock : 166.667 MHz
- Mode : PHY enabled, DMA enabled
- Protocol : 1S-8S-8S
SBL Stage1 boot time breakdown | Time (ms) |
SBL Stage1: System_init | 38.429 |
SBL Stage1: Board_init | 0.000 |
SBL Stage1: Drivers_open | 0.189 |
SBL Stage1: Board_driversOpen | 11.368 |
SBL Stage1: Sciclient Get Version | 10.170 |
SBL Stage1: App_waitForMcuPbist | 0.004 |
SBL Stage1: App_loadImages | 3.384 |
SBL Stage1: App_loadSelfcoreImage | 6.482 |
-------------------------------------— | -----------— |
SBL Stage2: Total time taken | 70.030 |
SBL Stage2 boot time breakdown | Time (ms) |
SBL Stage2: System_init | 1.794 |
SBL Stage2: Board_init | 0.000 |
SBL Stage2: Drivers_open | 0.222 |
SBL Stage2: Board_driversOpen | 50.031 |
SBL Stage2: Sciclient Get Version | 10.219 |
SBL Stage2: App_loadImages | 2.070 |
SBL Stage2: App_loadSelfcoreImage | 7.063 |
SBL Stage2: App_loadLinuxImages | 29.450 |
SBL Stage2: App_loadDSPImage | 13.163 |
-------------------------------------— | -----------— |
SBL Stage2: Total time taken | 114.015 |
- Here the CPU load or section copy takes place from the OSPI memory to DDR, this would be slower that mem to mem copy.
- The time taken for Sciclient Get Version can be avoided if the version check is disabled
- MCU PBIST is started before the DDR init/ It is done in HW in parallel while the DDR init is completed. Due to this MCU PBIST wait time is low.
- Out of the ~39 ms taken for System Init is mostly attributed to DDR initialization.
SBL OSPI NAND performance (HS)
- Software/Application used : sbl_ospi_nand_linux_multistage, ipc_rpmsg_echo_linux, linux and HSM App Images
- Cores booted by stage1 SBL : mcu-r5f0-0 r5f0-0
- Cores booted by stage2 SBL : hsm-m4f0-0 r5f0-0 a530-0 c75ss0
- Size of images loaded by stage1 : 185 KB
- Size of images loaded by stage2 : 1110 KB
- Boot Media Clock : 166.667 MHz
- Mode : PHY enabled, DMA enabled
- Protocol : 1S-8S-8S
SBL Stage1 boot time breakdown | Time (ms) |
SBL Stage1: System_init | 37.747 |
SBL Stage1: Board_init | 0.000 |
SBL Stage1: Drivers_open | 0.190 |
SBL Stage1: Board_driversOpen | 11.042 |
SBL Stage1: Sciclient Get Version | 10.169 |
SBL Stage1: App_waitForMcuPbist | 0.005 |
SBL Stage1: App_loadImages | 3.467 |
SBL Stage1: App_loadSelfcoreImage | 6.548 |
-------------------------------------— | -----------— |
SBL Stage2: Total time taken | 69.171 |
SBL Stage2 boot time breakdown | Time (ms) |
SBL Stage2: System_init | 1.784 |
SBL Stage2: Board_init | 0.000 |
SBL Stage2: Drivers_open | 0.218 |
SBL Stage2: Board_driversOpen | 49.851 |
SBL Stage2: Sciclient Get Version | 10.219 |
SBL Stage2: App_loadImages | 2.119 |
SBL Stage2: App_loadSelfcoreImage | 6.898 |
SBL Stage2: App_loadLinuxImages | 27.990 |
SBL Stage2: App_loadDSPImage | 13.096 |
-------------------------------------— | -----------— |
SBL Stage2: Total time taken | 112.179 |
- Here the CPU load or section copy takes place from the OSPI memory to DDR, this would be slower that mem to mem copy.
- The time taken for Sciclient Get Version can be avoided if the version check is disabled
- MCU PBIST is started before the DDR init/ It is done in HW in parallel while the DDR init is completed. Due to this MCU PBIST wait time is low.
- Out of the ~39 ms taken for System Init is mostly attributed to DDR initialization.
SBL EMMC performance (HS-FS)
- Software/Application used : sbl_emmc_linux_multistage, ipc_rpmsg_echo_linux, linux and HSM App Images
- Cores booted by stage1 SBL : mcu-r5f0-0 r5f0-0
- Cores booted by stage2 SBL : hsm-m4f0-0 r5f0-0 a530-0 c75ss0
- Size of images loaded by stage1 : 161 KB
- Size of images loaded by stage2 : 1110 KB
- Boot Media Clock : 200.000 MHz
- Mode : HS200
SBL Stage1 boot time breakdown | Time (ms) |
SBL Stage1: System_init | 38.593 |
SBL Stage1: Board_init | 0.000 |
SBL Stage1: Drivers_open | 19.575 |
SBL Stage1: Board_driversOpen | 0.000 |
SBL Stage1: Sciclient Get Version | 10.183 |
SBL Stage1: App_loadImages | 6.909 |
SBL Stage1: App_loadSelfcoreImage | 7.428 |
-------------------------------------— | -----------— |
SBL Stage1: Total time taken | 82.691 |
SBL Stage2 boot time breakdown | Time (ms) |
SBL Stage2: System_init | 1.711 |
SBL Stage2: Board_init | 0.000 |
SBL Stage2: Drivers_open | 19.505 |
SBL Stage2: Board_driversOpen | 0.000 |
SBL Stage2: Sciclient Get Version | 10.241 |
SBL Stage2: App_loadImages | 5.988 |
SBL Stage2: App_loadSelfcoreImage | 7.819 |
SBL Stage2: App_loadLinuxImages | 20.100 |
SBL Stage2: App_loadDSPImage | 14.289 |
-------------------------------------— | -----------— |
SBL Stage2: Total time taken | 79.658 |
- The emmc driver initialization is done as part of Drivers_open.
- The time taken for Sciclient Get Version can be avoided if the version check is disabled
- Out of the ~39 ms taken for System Init is mostly attributed to DDR initialization.
SBL EMMC performance (HS)
- Software/Application used : sbl_emmc_linux_multistage, ipc_rpmsg_echo_linux, linux and HSM App Images
- Cores booted by stage1 SBL : mcu-r5f0-0 r5f0-0
- Cores booted by stage2 SBL : hsm-m4f0-0 r5f0-0 a530-0 c75ss0
- Size of images loaded by stage1 : 161 KB
- Size of images loaded by stage2 : 1110 KB
- Boot Media Clock : 200.000 MHz
- Mode : HS200
SBL Stage1 boot time breakdown | Time (ms) |
SBL Stage1: System_init | 37.629 |
SBL Stage1: Board_init | 0.000 |
SBL Stage1: Drivers_open | 19.573 |
SBL Stage1: Board_driversOpen | 0.000 |
SBL Stage1: Sciclient Get Version | 10.169 |
SBL Stage1: App_loadImages | 6.965 |
SBL Stage1: App_loadSelfcoreImage | 8.228 |
-------------------------------------— | -----------— |
SBL Stage1: Total time taken | 82.566 |
SBL Stage2 boot time breakdown | Time (ms) |
SBL Stage2: System_init | 1.696 |
SBL Stage2: Board_init | 0.000 |
SBL Stage2: Drivers_open | 19.505 |
SBL Stage2: Board_driversOpen | 0.000 |
SBL Stage2: Sciclient Get Version | 10.220 |
SBL Stage2: App_loadImages | 5.360 |
SBL Stage2: App_loadSelfcoreImage | 7.911 |
SBL Stage2: App_loadLinuxImages | 20.097 |
SBL Stage2: App_loadDSPImage | 14.992 |
-------------------------------------— | -----------— |
SBL Stage2: Total time taken | 79.787 |
- The emmc driver initialization is done as part of Drivers_open.
- The time taken for Sciclient Get Version can be avoided if the version check is disabled
- Out of the ~39 ms taken for System Init is mostly attributed to DDR initialization.
IPC performance
IPC NOTIFY
- 10000 messages are sent and average one way message latency is measured
Local Core | Remote Core | Average Message Latency (us) |
r5f0-0 | mcu-r5f0-0 | 1.12 |
r5f0-0 | a530-0 | 6.79 |
r5f0-0 | c75ss0 | 18.01 |
IPC RPMSG
- 1000 messages are sent and average one way message latency is measured
Local Core | Remote Core | Message Size | Average Message Latency (us) | Max Latency (us) |
r5f0-0 | a530-0 | 32 | 9.619 | 12 |
r5f0-0 | a530-0 | 64 | 12.584 | 17 |
r5f0-0 | a530-0 | 112 | 17.308 | 22 |
r5f0-0 | mcu-r5f0-0 | 32 | 14.215 | 17 |
r5f0-0 | mcu-r5f0-0 | 64 | 20.734 | 27 |
r5f0-0 | mcu-r5f0-0 | 112 | 30.550 | 38 |
r5f0-0 | c75ss0 | 32 | 76.941 | 103 |
r5f0-0 | c75ss0 | 64 | 86.202 | 104 |
r5f0-0 | c75ss0 | 112 | 93.336 | 112 |
EMMC Performance
Mode | Data size(MiB) | Write speed(MiBps) | Read speed(MiBps) |
SDR50 | 1 | 35.20 | 45.00 |
SDR50 | 4 | 41.55 | 45.54 |
SDR50 | 6 | 41.63 | 44.24 |
DDR50 | 1 | 54.16 | 81.77 |
DDR50 | 4 | 54.87 | 83.65 |
DDR50 | 6 | 61.99 | 79.33 |
HS200 | 1 | 73.72 | 157.99 |
HS200 | 4 | 109.78 | 169.31 |
HS200 | 6 | 109.95 | 152.03 |
OSPI NAND Performance
- Flash protocol: FLASH_CFG_PROTO_1S_8S_8S
- PHY : enabled
- DMA : enabled
Data size(MiB) | Write speed(MiBps) | Read speed(MiBps) |
1 | 2.35 | 50.39 |
5 | 2.36 | 50.38 |
10 | 2.36 | 50.38 |
GPIO latency
GPIO latency is measured by connecting 2 GPIOs externaly and configuring one GPIO as input and the other as output. Then 1 is written to GPIO output and measure the time between writing 1 to GPIO output to rececving the interrupt at GPIO input.
Core | GPIO In | GPIO Out | Latency (us) |
mcu-r5f | MCU_GPIO0_15 | MCU_GPIO0_16 | 2 |