|
1、SDRAM作为emWin的显存和动态内存,要配置为WT模式
- MPU_InitStruct.Enable = MPU_REGION_ENABLE;
- MPU_InitStruct.BaseAddress = 0xC0000000;
- MPU_InitStruct.Size = MPU_REGION_SIZE_32MB;
- MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
- MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
- MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
- MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
- MPU_InitStruct.Number = MPU_REGION_NUMBER2;
- MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
- MPU_InitStruct.SubRegionDisable = 0x00;
- MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
- HAL_MPU_ConfigRegion(&MPU_InitStruct);
复制代码
2、对于WT模式,读Cache是开启着的,所以这里最好设置为NOTRANSE。
注,下面这么操作,主要是为了方便验证问题。
hMem = GUI_ALLOC_AllocZero(685496UL + 1);
/* 将申请到内存的句柄转换成指针类型 */
_acBuffer = GUI_ALLOC_h2p(hMem);
memcpy(_acBuffer, _acbmp1, 685496+1);
hMemBMP1 = GUI_MEMDEV_CreateEx(0, 0, 476, 480, GUI_MEMDEV_NOTRANS);
GUI_MEMDEV_Select(hMemBMP1);
GUI_BMP_Draw(_acBuffer, 0, 0); // 从NANDFLASH 读取得图片数据
GUI_MEMDEV_Select(0);
GUI_MEMDEV_WriteAt(hMemBMP, 0, 0);
|
|