/*验证irmbbpmem空间*/ void irmbbp_memrepair_test(void) { int iret = 0; u32 addr = 0xe1c10000; u32 value= 0; u32 len = 0x8000; /*bbp irm memory*/ /*先检测是否有坏点*/ iret = bad_mem_check(addr,value,len); if(!iret) { mr_print_error("bbp irm memory have no bad mem.\n"); } else { /*执行memrepair*/ iret = bsp_modem_memrepair(MODEM_MEMREPAIR_IRM); if(iret) { mr_print_error("repair error!\n"); } /*重新检测坏点*/ iret = bad_mem_check(addr,value,len); if(iret) { mr_print_error("repair failed!\n"); } else { mr_print_error("repair ok!\n"); } } }
/***************************************************************************** * 函 数 : module_memrepair_test * 功 能 : 坏块检测 * 输 入 : void * 输 出 : void * 返 回 : * 说 明 : *****************************************************************************/ void module_memrepair_test(modem_memrepair_ip module,u32 addr, u32 value, u32 len) { int iret = 0; /*先检测是否有坏点*/ iret = bad_mem_check(addr,value,len); if(!iret) { mr_print_dbg("bbp irm memory have no bad mem.\n"); } else { /*执行memrepair*/ iret = bsp_modem_memrepair(module); if(iret) { mr_print_dbg("repair error!\n"); } /*重新检测坏点*/ iret = bad_mem_check(addr,value,len); if(iret) { mr_print_dbg("repair failed,mem still bad!\n"); } else { mr_print_dbg("repair ok!\n"); } } }
/*验证bbemem空间*/ void bbe_memrepair_test(void) { int iret = 0; u32 value= 0x0; u32 addr1 = 0xe2840000; u32 addr2 = 0xe2740000; u32 len1 = 0xc0000; u32 len2 = 0xc0000; /*bbp irm memory*/ /*先检测是否有坏点*/ iret = bad_mem_check(addr1,value,len1); iret |= bad_mem_check(addr2,value,len2); if(!iret) { mr_print_error("bbe memory have no bad mem.\n"); } else { /*执行memrepair*/ iret = bsp_modem_memrepair(MODEM_MEMREPAIR_DSP); if(iret) { mr_print_error("repair error!\n"); } /*重新检测坏点*/ iret = bad_mem_check(addr1,value,len1); iret |= bad_mem_check(addr2,value,len2); if(iret) { mr_print_error("repair failed!\n"); } else { mr_print_error("repair ok!\n"); } } }