eddy0317 发表于 2018-5-17 17:51:16

NOR XIP 真心不行啊……

本帖最后由 eddy0317 于 2018-5-17 18:11 编辑

一直致力于玩普通的NOR FLASH,不玩hyperflash,今天终于弄了个iperf程序测试,速度如下:
XIP:
429.0-432.0 sec22.8 KBytes62.3 Kbits/sec
432.0-435.0 sec21.2 KBytes57.8 Kbits/sec
435.0-438.0 sec20.0 KBytes54.5 Kbits/sec
438.0-441.0 sec20.2 KBytes55.0 Kbits/sec

non-XIP:
303.0-306.0 sec12.3 MBytes34.5 Mbits/sec
306.0-309.0 sec12.1 MBytes33.9 Mbits/sec
309.0-312.0 sec12.4 MBytes34.7 Mbits/sec
312.0-315.0 sec12.4 MBytes34.7 Mbits/sec


程序完全一样,只是link文件不一样,一个连接成XIP,一个为non-XIP(加载到ITCM上运行),速度也差太远了吧,之前还有人跟我说NOR XIP的速度不会太差。

最新情况:看了一下总感觉很奇怪,因为iperf也就反复调用那么几个地方的代码,不应该有那么大差别,看了一下,也是因为自己大意,因为用了官方的MPU配置文件,如下:
    /* Region 2 setting */
#if defined(XIP_EXTERNAL_FLASH)   
    MPU->RBAR = ARM_MPU_RBAR(2, 0x60000000U);
    MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_512MB);
#else
    MPU->RBAR = ARM_MPU_RBAR(2, 0x60000000U);
    MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 2, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_512MB);
#endif

XIP不记得添加XIP_EXTERNAL_FLASH宏定义了,导致NOR 没有使能cache。重新编译,再试了一下:

4278.0-4281.0 sec11.1 MBytes31.0 Mbits/sec
4281.0-4284.0 sec11.0 MBytes30.8 Mbits/sec
4284.0-4287.0 sec11.0 MBytes30.7 Mbits/sec
4287.0-4290.0 sec11.1 MBytes31.0 Mbits/sec
4290.0-4293.0 sec10.8 MBytes30.3 Mbits/sec

虽然性能有降低,但是不算太夸张。

alexyzhov 发表于 2018-5-17 17:53:43

也看程序设计的,程序越紧凑Cache作用越大,否则接口速度的问题就会暴露出来
页: [1]
查看完整版本: NOR XIP 真心不行啊……