def dut_initial(self,instance_sequence = 0): "in:\ instance_sequence:unsigned int" params = {} params["instance_sequence"] = instance_sequence params["hearst_dut"] = 0 response = self.rpc_client_node.call("DutExit",**params) # pring(response) if response["state"] < 0: return dfu_common.get_error_return_state(response) response = self.rpc_client_node.call("DutInitial",**params) # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) #halt the system params["address"] = 0xE000EDF0 params["value"] = 0xA05F0003 response2 = self.rpc_client_node.call("RegWrite",**params) if response2["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response2) logger.warning(response2["return"]) #read system state response2 = self.rpc_client_node.call("RegRead",**params) if response2["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response2) logger.warning(response2["return"]) return dfu_common.get_correct_return_state(response)
def dut_exit(self,instance_sequence = 0): "in:\ instance_sequence:unsigned int" params = {} params["instance_sequence"] = instance_sequence # response = self.rpc_client_node.call("DutExit",**params) # # pring(response) # if response["state"] < 0: # return dfu_common.get_error_return_state(response) #soft reset the cortexm system params["address"] = 0xE000EDF0 params["value"] = 0xA05F0000 response2 = self.rpc_client_node.call("RegWrite",**params) if response2["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response2) params["address"] = 0xE000ED0C params["value"] = 0x05FA0004 response2 = self.rpc_client_node.call("RegWrite",**params) if response2["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response2) # response = self.rpc_client_node.call("DutExit",**params) # # pring(response) # if response["state"] < 0: # return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response2)
def instance_initial(self, freqency_hz, instance_sequence=0): "in:\ frequency_hz:unsigned int\ instance_sequence:unsigned int\ " params = {} params["frequency_hz"] = freqency_hz params["instance_sequence"] = instance_sequence response = self.rpc_client_node.call("DriverInitial", **params) # # pring(response) if response["state"] < 0: return dfu_common.get_error_return_state(response) response = self.rpc_client_node.call("SetFrequencyHz", **params) # # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) #configure switch sequence sequence_arr = [0xff for i in range(8)] sequence_arr += [ hearst_sequence1 & 0xFF, (hearst_sequence1 >> 8) & 0xFF ] sequence_arr += [0xff for i in range(8)] sequence_arr += [ hearst_sequence2 & 0xFF, (hearst_sequence2 >> 8) & 0xFF ] sequence_arr += [0xff for i in range(8)] sequence_arr += [0x00 for i in range(2)] #configure switch sequence logger.warning("configuring the switch sequence") params["write_array"] = sequence_arr params["length"] = len(sequence_arr) response = self.rpc_client_node.call("ConfigureSwitchSequence", **params) logger.warning(str(params["write_array"])) # # print(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) #configure start csw register logger.warning("configuring the CSW data") params["value"] = 0x23000002 response = self.rpc_client_node.call("ConfigureCswData", **params) if response["state"] < 0: return dfu_common.get_error_return_state(response) #configure reset params["pluse_delay_us"] = -1 response = self.rpc_client_node.call("ConfigureResetDelay", **params) if response["state"] < 0: return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def create_instance(self, dev_path, what_chip): "in : \ dev_path:string" protocol_type = dfu_common.get_protocol_type_support( self.rpc_client_node)["swd"] arch_type = dfu_common.get_chip_arch_type_support( self.rpc_client_node)["cortexm"] chip_type = 255 logger.info(dfu_common.get_protocol_type_support(self.rpc_client_node)) logger.info(dfu_common.get_chip_arch_type_support( self.rpc_client_node)) logger.info(dfu_common.get_chip_arch_type_support( self.rpc_client_node)) params = {} params["driver_name"] = dev_path params["protocol_type"] = protocol_type params["chip_arch_type"] = arch_type params["chip_type"] = chip_type response = self.rpc_client_node.call("DfuProgInstanceCreate", **params) logger.info(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def instance_initial(self,freqency_hz,instance_sequence = 0): "in:\ frequency_hz:unsigned int\ instance_sequence:unsigned int" params = {} params["frequency_hz"] = freqency_hz params["instance_sequence"] = instance_sequence response = self.rpc_client_node.call("DriverInitial",**params) # # pring(response) if response["state"] < 0: return dfu_common.get_error_return_state(response) response = self.rpc_client_node.call("SetFrequencyHz",**params) # # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def dut_exit(self,instance_sequence = 0): "in:\ instance_sequence:unsigned int" params = {} params["instance_sequence"] = instance_sequence response = self.rpc_client_node.call("DutExit",**params) # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def destroy_instance(self,instance_sequence = 0): "in:\ instance_sequence:unsigned int" params = {} params["instance_sequence"] = instance_sequence response = self.rpc_client_node.call("DfuProgInstanceDestroy",**params) # # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response)#response["state_description"],response["state"] return dfu_common.get_correct_return_state(response)#response["return"]
def flash_exit_32_bit_mode(self): "in:\ instance_sequence:unsigned int\ " params = {} params["instance_sequence"] = instance_sequence response = self.rpc_client_node.call("Exit32BitAddressMode",**params) # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def dut_reset(self,pluse_delay_us = 10000,instance_sequence = 0): "in:\ pluse_delay_us:unsigned int ,read target address\ instance_sequence:unsigned int\ " params = {} params["pluse_delay_us"] = pluse_delay_us params["instance_sequence"] = instance_sequence response = self.rpc_client_node.call("Reset",**params) # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def dut_reg_read(self,address,instance_sequence = 0): "in:\ address:unsigned int ,read target address\ instance_sequence:unsigned int\ " params = {} params["address"] =address params["instance_sequence"] =instance_sequence response = self.rpc_client_node.call("RegRead",**params) # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def dut_storage_erase(self,instance_sequence,target_address= None,size= None): "in:\ instance_sequence:unsigned int\ " params = {} params["instance_sequence"] =instance_sequence if target_address != None and size != None: params["target_address"] =target_address params["size"] =size response = self.rpc_client_node.call("DutStorageErase",**params) # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def dut_storage_reading(self,target_file_name,target_address,size,instance_sequence = 0): "in:\ target_file_name:str,the file path\ target_address: unsigned int,the DUT target checkout address\ size:unsigned int,program size\ instance_sequence:unsigned int\ " params = {} params["target_file_name"] =arget_file_name params["target_address"] =target_address params["size"] =size params["instance_sequence"] =instance_sequence response = self.rpc_client_node.call("DutStorageReading",**params) # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def dut_storage_infusing(self,target_file_name,target_address,file_offset,size,instance_sequence = 0): "in:\ target_file_name:str,the file path\ target_address: unsigned int,the DUT target infusing address\ file_offset:unsigned int,loading the firmware file start address\ size:unsigned int,program size\ instance_sequence:unsigned int\ " params = {} params["target_file_name"] = target_file_name params["target_address"] = target_address params["file_offset"] = file_offset params["size"] = size params["instance_sequence"] = instance_sequence response = self.rpc_client_node.call("DutStorageInfusing",**params) # pring(response) if response["state"] < 0: logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def flash_interactive(self,cmd,address,dummy_data_num,write_array,length,instance_sequence = 0): "in:\ cmd:unsigned int ,spi flash command\ address:unsigned int\ dummy_data_num:unsigned int\ write_array:array\ length:unsigned int ,array length not more than 512\ instance_sequence:unsigned int\ " params = {} params["cmd"] = cmd, params["address"] = address, params["dummy_data_num"] = dummy_data_num, params["write_array"] = write_array, params["length"] = length, params["instance_sequence"] = instance_sequence response = self.rpc_client_node.call("FlashInteractive",**params) # pring(response) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)
def dut_storage_checkout(self,target_file_name,target_address,file_offset,size,instance_sequence = 0): "in:\ target_file_name:str,the file path\ target_address: unsigned int,the DUT target checkout address\ file_offset:unsigned int,loading the firmware file start address\ size:unsigned int,program size\ instance_sequence:unsigned int\ " params = {} params["target_file_name"] = target_file_name params["target_address"] =target_address params["file_offset"] =file_offset params["size"] =size params["instance_sequence"] =instance_sequence response = self.rpc_client_node.call("DutStorageCheckout",**params) # pring(response) if response["state"] < 0: logger.info(response["return"]) return dfu_common.get_error_return_state(response) #------abort? #------- params["address"] = 0x44443044 params["value"] = 0x01 response = self.rpc_client_node.call("RegWrite",**params) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) params["address"] = 0x440090C4 params["value"] = 0x0071C030 response = self.rpc_client_node.call("RegWrite",**params) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) params["address"] = 0x440090C8 params["value"] = 0x0071C030 response = self.rpc_client_node.call("RegWrite",**params) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) params["address"] = 0x440090CC params["value"] = 0x0071C030 response = self.rpc_client_node.call("RegWrite",**params) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) params["address"] = 0x440090D0 params["value"] = 0x0071C030 response = self.rpc_client_node.call("RegWrite",**params) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) params["address"] = 0x440090D4 params["value"] = 0x0075C001 response = self.rpc_client_node.call("RegWrite",**params) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) params["address"] = 0x440090D8 params["value"] = 0x0075C001 response = self.rpc_client_node.call("RegWrite",**params) if response["state"] < 0: # logger.info(response["return"]) return dfu_common.get_error_return_state(response) return dfu_common.get_correct_return_state(response)