Other Parts Discussed in Thread: SYSCONFIG, SYSBIOS, AM6442, AM3359
器件型号: AM6442
Thread 中讨论的其他器件: AM3359、SysConfig、SYSBIOS
大家好、E2E 专家:
我们将相对复杂的应用程序(包括 LwIP、USB、GPMC 等)从旧的 AM3359 COR8 硬件移植到 AM6442。 使用具有 800MHz 的相同 ARM v7 内核 (AM 6442 上的 R5FSS0-0)、我们使用新器件实现了类似的性能。 但是、我们发现新硬件/软件的速度大约是旧硬件/软件的一半(相同任务分别需要大约两倍的 CPU 负载)。
可以得出:
ARM v7 架构相同的器件
与 DDR3 相比、DDR4 的性能更高
TI SYS/BIOS 替换为 FreeRTOS
EDMA 传输到 GPMC、替换为 IPC/共享存储器通信到执行 GPMC 传输的第 2 个 R5F 内核(CPU 之间的总线冲突不是瓶颈、如果第 2 个 CPU 几乎什么都不做,也不会发生变化)
更新和更好 (?) 编译器、优化(2 级/3 级)
两种器件中的浮点硬件
AM3359 应用从 DDR 运行、AM6442 同时使用 DDR 和 MSRAM(尤其是两个内核之间共享的非可缓存 MSRAM 区域)、我们尝试使用 TCM 时几乎没有改进。
性能差的原因是什么?
在 AM6442:Cortex R5F 性能 — 处理器论坛-处理器 — TI E2E 支持论坛中、您可引用 https://www.ti.com/lit/an/spracv1b/spracv1b.pdf?、ts = 1707324024385&ref_url=https://www.253A%252F%252Fwww.bing.com%252F
有一个表格表明 MSRAM 比 DDR 快得多。 不过、我们发现 AM3359 DDR 速度快于 AM6442 MSRAM + DDR。
我假设 MMU / MPU 设置存在问题、请在下面找到 SysConfig。
任何其他提示?
mpu_armv71.$name =“CONFIG_MPU_REGION0";“;
mpu_armv71.size = 31;
mpu_armv71.attributes =“Device";“;
MPU_armv71.accessPermissions =“Supervisor RD+WR、User RD“;
mpu_armv71.allowExecute = false;
mpu_armv72.$name =“CONFIG_MPU_REGION1";“;
mpu_armv72.size =15;
MPU_armv72.accessPermissions =“Supervisor RD+WR、User RD“;
mpu_armv73.$name =“CONFIG_MPU_Region2";“;
mpu_armv73.baseAddr = 0x41010000;
mpu_armv73.size =15;
MPU_armv73.accessPermissions =“Supervisor RD+WR、User RD“;
mpu_armv74.$name =“CONFIG_MPU_REGION_GPMC2FPGA";“;
mpu_armv74.baseAddr = 0x50000000;
mpu_armv74.allowExecute = false;
mpu_armv74.isCacheable = false;
mpu_armv74.size = 25;
mpu_armv74.isBufferable = false;
mpu_armv74.tex = 0;
mpu_armv74.attributes =“Device";“;
mpu_armv75.$name =“CONFIG_MPU_Region3";“;
MPU_armv75.accessPermissions =“Supervisor RD+WR、User RD“;
mpu_armv75.baseAddr = 0x70000000;
mpu_armv75.size = 21;
MPU_armv76.$name =“CONFIG_MPU_REGION4";“;
mpu_armv76.baseAddr = 0x70060000;
mpu_armv76.attributes =“NonCached";“;
mpu_armv76.allowExecute = false;
mpu_armv76.size =15;
mpu_armv77.$name =“CONFIG_MPU_REGION5";“;
mpu_armv77.baseAddr = 0x701D0000;
mpu_armv77.size =16;
mpu_armv77.attributes =“NonCached";“;
mpu_armv77.allowExecute = false;
mpu_armv78.$name =“CONFIG_MPU_REGION6";“;
mpu_armv78.baseAddr = 0x80000000;
mpu_armv78.size = 31;


