bigbaicai

芯方式是以半导体人、电子工程师等电子行业相关领域从业人员为核心的知识经验学习、分享、交流社群。 凭借开放、合作、共赢的运营理念,聚集了来自国内外知名院校和顶尖科技公司的半导体人、电子工程师。 我们致力于营造专业、认真、有温度的分享交流环境,将高质量的内容和方案成规模地生产和分享,帮助个人和团队在芯方式找到有价值的Key。 http://www.icfans.com/

ARM9系列的平台(35/38)上 ,layer(层)创建时ASSERT

0
阅读(877)

[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。

ICfans