ram空间超的解析

错误:Error: L6221E: Execution region DYNAMIC_CACHEABLE_EXTSRAM_DEFAULT_CACHEABLE overlaps with Execution region CACHED_DUMMY_END.

意思是DYNAMIC_CACHEABLE_EXTSRAM_DEFAULT_CACHEABLE区域超到CACHED_DUMMY_END区域的空间了。

根据*.lis文件中的数据,显示如下:

0xf036a0e8   0x00000af0   Zero   RW        60811    SXMOBI_MP4_TCM_ZI   apple_os_api.obj(mmi_app.lib)


Execution Region DYNAMIC_CACHEABLE_EXTSRAM_DEFAULT_CACHEABLE (Base: 0xf036cbd8, Size: 0x00092e9c, Max: 0xffffffff, ABSOLUTE)

Base Addr    Size         Type   Attr      Idx    E Section Name        Object

0xf036cbd8   0x0000f6fc   Zero   RW        15050    DYNAMICCACHEABLEZI_C custom_flc_config.obj(custom.lib)
0xf037c2d4   0x0004b240   Zero   RW        33295    DYNAMICCACHEABLEZI_C scrmemmgr.obj(mmi_framework.lib)
0xf03c7514   0x00038560   Zero   RW        42092    DYNAMICCACHEABLEZI_C  app_mem.obj(applib.lib)


Execution Region CACHED_DUMMY_END (Base: 0xf03fc000, Size: 0x00000004, Max: 0xffffffff, ABSOLUTE)

Base Addr    Size         Type   Attr      Idx    E Section Name        Object

0xf03fc000   0x00000004   Data   RW            4    DUMMY_POOL          bootarm.obj(init.lib)

分析:
DYNAMIC_CACHEABLE_EXTSRAM_DEFAULT_CACHEABLE区域
0xf03c7514 + 0x00038560 = 0xf03ffa74

CACHED_DUMMY_END区域
Base: 0xf03fc000

比较:0xf03ffa74 - 0xf03fc000 = 3a74
大概 超了 14.6KB空间大小

 

 

===========================================================================================

 

 Execution region DYNAMIC_CACHEABLE_EXTSRAM_DEFAULT_CACHEABLE overlaps with Execution region CACHED_DUMMY_END

 

修改如下:

Med_mem.h

#define MED_EXT_MEM_SIZE sizeof(med_ext_mem_union)

改为:

#define MED_EXT_MEM_SIZE (sizeof(med_ext_mem_union)-1024*500)

 

=========================================================================

关于MTK几个MEM文件

1.Med_MEM.h

 

media内存大小文件,修改med_ext_mem_union可以增加media内存大小。

例:

把media内存加到1000K

typedef union

{

  U8 testsize[1000*1024];

}med_ext_mem_union;

 

2.ScrMemMgr.h

 

例:

把media内存加到500K

typedef union

{

  U8 testsize[500*1024];

}screen_asm_pool_union;

 

Screen 内存大小文件,修改screen_asm_pool_union可以增加screen内存大小。

 

===================================================================

mtk 中,一次申请太大的内存,然后从文件中读这么大块的数据到内存中出现异常  

buff_len = file_length;

 do 
 {
  zkp_malloc((char **)&pBuff,(unsigned int)buff_len);
  if (pBuff == NULL)
   buff_len = buff_len/2;
 }while(pBuff == NULL);

 

 ret = FS_Seek(fh,offset, FS_FILE_BEGIN);

 for(;total_written<len;)
 {
  left_size = len - total_written;

  if (left_size < buff_len)
   buff_len = left_size;
 
  read_ret = FS_Read(fh,pBuff,buff_len,(U32*)&readed);
  
  write_ret = FS_Write(out_fh, pBuff, buff_len, (U32*)&writeed);

 
  LOG(_Info, "SplitDataFromFile  buff_len:%d total_written:%d readed:%d writeed:%d  read_ret:%d ", buff_len,total_written,readed,writeed, read_ret,);

  
  total_written+=buff_len;
 }

先尝试是否能申请到整个文件大小那么大的空间,如果可以,就一次性从文件中读这么大的数据到申请的空间中,再一次性写入新文件。

碰到了异常的现象,就是虽然那么大的内存(100多K的,500多K的)能申请到,但读出,写入共计5个文件整个耗时很长,差不多10多秒钟,而且写入文件的数据有问题,100多 K的文件,只有前面64K是真实的数据,后面都是0,500多K的文件,只有200多K是正确 的,后面是0.

 

改为一次申请50K,分多次读文件,写文件后,耗时变为3秒。文件数据正常。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值