Example #1
0
    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)    
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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"]
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
    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)
Example #11
0
    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)
Example #12
0
    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)
Example #13
0
 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)
Example #14
0
    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)
Example #15
0
    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)