def func_app2_swRel_read(self): try: objConn = ModFmptIhuCon.ClassConnProc() res = {} res['res'] = 1 callRes = objConn.FuncReadRegister( ModFmptCom.GL_FMPT_BOOT_CFG_ENG_ADDR['bootLoad2RelId'][0], ModFmptCom.GL_FMPT_BOOT_CFG_ENG_ADDR['bootLoad2RelId'][1], ModFmptCom.GL_FMPT_bootcfg_bootLoad2RelId) if (callRes['res'] < 0): res['string'] = 'Exec err - func_app2_swRel_read failure in low layer.' res['res'] = callRes['res'] else: res['res'] = 1 res['value'] = callRes['value'] res['string'] = 'Exec Res - func_app2_swRel_read' except Exception as err: print("Exec Err: func_app2_swRel_read!" + str(err)) return ("Exec Err: func_app2_swRel_read!" + str(err)) finally: return res
def func_fac_chk_chk(self): objConn = ModFmptIhuCon.ClassConnProc() res = {} res['res'] = 1 oldChecksum = 0 newChecksum = 0 swLen = 0 #Firstly read old checksum callRes = objConn.FuncReadRegister( ModFmptCom.GL_FMPT_BOOT_CFG_ENG_ADDR['facLoadCheckSum'][0], ModFmptCom.GL_FMPT_BOOT_CFG_ENG_ADDR['facLoadCheckSum'][1], ModFmptCom.GL_FMPT_bootcfg_facLoadCheckSum) if (callRes['res'] < 0): res['string'] = 'Exec err - func_fac_chk_chk failure in low layer.' res['res'] = callRes['res'] return res else: oldChecksum = callRes['value'] #Secondly read SW len callRes = objConn.FuncReadRegister( ModFmptCom.GL_FMPT_BOOT_CFG_ENG_ADDR['facLoadLen'][0], ModFmptCom.GL_FMPT_BOOT_CFG_ENG_ADDR['facLoadLen'][1], ModFmptCom.GL_FMPT_bootcfg_facLoadLen) if (callRes['res'] < 0): res['string'] = 'Exec err - func_fac_chk_chk failure in low layer.' res['res'] = callRes['res'] return res else: swLen = callRes['value'] #Thirdly read sw-body and caculate current checksum newCheckSum = 0 segLen = ModFmptCom.GL_FMPT_MAX_LEN_FLASH_RAW_COMMAND_DATA segTotal = math.ceil(swLen / segLen) for segIndex in range(0, segTotal): outputData = {} if (segIndex == (segTotal - 1)): dataLen = swLen - segIndex * segLen else: dataLen = segLen segBase = segIndex * segLen callRes = objConn.FuncReadRegister( ModFmptCom.GL_FMPT_FLASH_ADDRESS_FACTORY_LOAD + segBase, dataLen, ModFmptCom.GL_FMPT_bootcfg_appImage) if (callRes['res'] < 0): res['string'] = 'Exec err - func_fac_chk_chk failure in low layer.' res['res'] = callRes['res'] return res else: outputData = callRes['value'] for i in range(0, dataLen): newChecksum = (newChecksum + int(outputData[i], base=16)) & 0xFFFF #Forthly write back try: if (newCheckSum != oldChecksum): callRes = objConn.FuncWriteRegister( ModFmptCom.GL_FMPT_BOOT_CFG_ENG_ADDR['facLoadCheckSum'][0], ModFmptCom.GL_FMPT_BOOT_CFG_ENG_ADDR['facLoadCheckSum'][1], newCheckSum, ModFmptCom.GL_FMPT_bootcfg_facLoadCheckSum) if (callRes['res'] < 0): res['string'] = 'Exec err - func_fac_chk_chk failure in low layer.' res['res'] = callRes['res'] else: res['res'] = 1 res['value'] = callRes['value'] res['string'] = 'Exec Res - func_fac_chk_chk, new checksum rewrite!' else: res['res'] = 1 res['value'] = newCheckSum res['string'] = 'Exec Res - func_fac_chk_chk, same checksum!' except Exception as err: print("Exec Err: func_fac_chk_chk!" + str(err)) return ("Exec Err: func_fac_chk_chk!" + str(err)) finally: return res