ARM9系列的平台(35/38)上 ,layer(层)创建时ASSERT
0赞
发表于 12/6/2018 9:58:21 AM
阅读(1034)
[DESCRIPTION]
ARM9系列的平台(35/38)上,layer的创建失败
[SOLUTION]
在ARM9系列的平台上,layer创建经常会在gdi_layer_create_internal()中ASSERT下面这行:
GDI_ASSERT(!INT_QueryIsCachedRAM((kal_uint32)layer->buf_ptr, layer->layer_size));
ARM9系列的平台,其layer使用的buffer必须是non-cacheable的。
方法一:直接从自己定义的数组中申请buffer,方式如下:
#if defined(__ARM9_MMU__)
#pragma arm section rwdata = "DYNAMICCACHEABLERW_NC", zidata = "DYNAMICCACHEABLEZI_NC"
__align(4) U16 buffer0[((320*GDI_MAINLCD_BIT_PER_PIXEL)>>3)*480];
#pragma arm section rwdata , zidata
#else
#pragma arm section zidata = "LARGEPOOL_ZI"
__align(4) U16 buffer0[((320*GDI_MAINLCD_BIT_PER_PIXEL)>>3)*480];
#pragma arm section zidata
#endif
方法二:调用分配non-cacheable buffer的接口申请buffer,比如mmi_frm_scrmem_alloc_framebuffer。