本帖最后由 fancyop 于 2019-5-6 18:54 编辑
我把图片数据放在0x80000000-0x81000000段,emwin内存放在0x81000000-0x82000000段,内存大小是0x600000(6M)绝对是够了把,图片数据也差不多6M左右,我就裸机跑的emwin效果如下:
上面的MPU是没有进行配置,然后我在main开头添加对MPU如下配置
[mw_shl_code=c,true] SCB_DisableICache(); //关闭I Cache
SCB_DisableDCache(); //关闭D Cache
ARM_MPU_Disable(); //关闭MPU
//区域0~8配置,RBAR寄存器设置region基地址,BASR设置region的属性和大小
MPU->RBAR=ARM_MPU_RBAR(0,0XC0000000); //region 0,起始地址0XC000 0000
MPU->RASR=ARM_MPU_RASR(0,ARM_MPU_AP_FULL,2,0,0,0,0,ARM_MPU_REGION_SIZE_512MB); //可执行,全访问,设备,禁止共享,禁止cache,禁止缓存,禁止子region,512MB大小
MPU->RBAR=ARM_MPU_RBAR(1,0X80000000); //region 1,起始地址0X8000 0000,SDRAM首地址
MPU->RASR=ARM_MPU_RASR(0,ARM_MPU_AP_FULL,2,0,0,0,0,ARM_MPU_REGION_SIZE_1GB); //可执行,全访问,设备,禁止共享,禁止cache,禁止缓存,禁止子region,1GB大小
MPU->RBAR=ARM_MPU_RBAR(2,0X60000000); //region 2,起始地址0X6000 0000,FlexSPI首地址
MPU->RASR=ARM_MPU_RASR(0,ARM_MPU_AP_FULL,0,0,0,0,0,ARM_MPU_REGION_SIZE_512MB); //可执行,全访问,写回,禁止共享,允许cache,允许缓存,禁止子region,512MB大小
MPU->RBAR=ARM_MPU_RBAR(3,0X00000000); //region 3,起始地址0X0000 0000,ITCM首地址(包含ROMCP,DTCM,OCRAM)
MPU->RASR=ARM_MPU_RASR(0,ARM_MPU_AP_FULL,2,0,0,0,0,ARM_MPU_REGION_SIZE_1GB); //可执行,全访问,设备,禁止共享,禁止cache,禁止缓存,禁止子region,1GB大小
MPU->RBAR=ARM_MPU_RBAR(4,0X00000000); //region 4,起始地址0X0000 0000,ITCM首地址,相同地址段设置,region大的覆盖小的
MPU->RASR=ARM_MPU_RASR(0,ARM_MPU_AP_FULL,0,0,1,1,0,ARM_MPU_REGION_SIZE_128KB); //可执行,全访问,写回,禁止共享,允许cache,允许缓存,禁止子region,128KB大小
MPU->RBAR=ARM_MPU_RBAR(5,0X20000000); //region 5,起始地址0X2000 0000,DTCM首地址,相同地址段设置,region大的覆盖小的
MPU->RASR=ARM_MPU_RASR(0,ARM_MPU_AP_FULL,0,0,1,1,0,ARM_MPU_REGION_SIZE_128KB); //可执行,全访问,写回,禁止共享,允许cache,允许缓存,禁止子region,128KB大小
MPU->RBAR=ARM_MPU_RBAR(6,0X20200000); //region 6,起始地址0X2020 0000,OCRAM首地址,相同地址段设置,region大的覆盖小的
MPU->RASR=ARM_MPU_RASR(0,ARM_MPU_AP_FULL,0,0,1,1,0,ARM_MPU_REGION_SIZE_256KB); //可执行,全访问,写回,允许共享,允许cache,禁止缓存,禁止子region,256KB大小
MPU->RBAR=ARM_MPU_RBAR(7,0X80000000); //region 7,起始地址0X8000 0000,SDRAM首地址,相同地址段设置,region大的覆盖小的
MPU->RASR=ARM_MPU_RASR(0,ARM_MPU_AP_FULL,0,0,1,1,0,ARM_MPU_REGION_SIZE_16MB); //可执行,全访问,写回,禁止共享,允许cache,允许缓存,禁止子region,16MB大小
ARM_MPU_Enable(MPU_CTRL_PRIVDEFENA_Msk); //使能MPU,开启背景region
SCB_EnableDCache(); //使能D Cache
SCB_EnableICache(); //使能I Cache [/mw_shl_code]
然后运行结果如下,图片刷新就更慢了这是为什么?
这是什么原因,怎么才能够加快刷新速度呢?
|