無法上傳 MODEL 至 kl520

上傳模型時遇到此問題,使用預設範例就會出現這個問題,520 使用 usb 加速棒


[Connect Device]

 - Success

[Set Device Timeout]

 - Success

[Upload Firmware]

 - Success

[Upload Model]

Error: upload model failed, error = 'Error raised in function: get_model_info. Error code: 10. Description: ApiReturnCode.KP_ERROR_DEVICE_NOT_EXIST_10'


Command 資訊:


[Check Device]

 - success

[Connect Device]

 - target device: 'KL520'

 - scan index: '0'

 - port ID: '17'

 - command: 'system'

[System Information]

{

  "kn_number": "0xBE0A170C",

  "firmware_version": "2.0.0-build.706"

}

[PLUS Version]

2.0.0

Comments

  • edited September 2022

    Hi Johnson,

    可以跟您請教一下您的OS版本嗎 (Windows, Linux, etc.)? 還有,您的KL520的USB加速棒是如何與您的電腦連接的呢? 您的電腦現在有連接著很多其他的東西嗎?

    因為load model時會再次與KL520加速棒連接,這時如果連接速度太慢,有可能會造成這個error。


    P.S. 請問一下,您有修改範例程式或模型嗎? 如果有的話,麻煩您提供程式給我們作為參考,謝謝!

    還有,可以請您提供ScanDevices.py的結果嗎? 我們會需要確認device boot-mode。



  • edited September 2022

    Hi @Maria Chen 感謝你的回應

    可以跟您請教一下您的OS版本嗎 (Windows, Linux, etc.)? Windows 11 之前都可以用


    還有,您的KL520的USB加速棒是如何與您的電腦連接的呢? 您的電腦現在有連接著很多其他的東西嗎?

    只有接著 520 與 Webcam


    ScanDevices.py

    scanning kneron devices ...

    number of Kneron devices found: 1

    listing devices infomation as follows:


    [0] USB scan index: '0'

    [0] USB port ID: '9'

    [0] Product ID: '0x100 (KL520)'

    [0] USB link speed: '3'

    [0] USB port path: '1-2'

    [0] KN number: '0xBE0A170C'

    [0] Connectable: 'True'

    [0] Firmware: 'KDP2 Comp / U'

    
        """
        check device USB speed (Recommend run KL520 at high speed)
        """
        try:
            if kp.UsbSpeed.KP_USB_SPEED_HIGH != get_device_usb_speed_by_port_id(usb_port_id=usb_port_id):
                print('\033[91m' + '[Error] Device is not run at high speed.' + '\033[0m')
                exit(0)
        except Exception as exception:
            print('Error: check device USB speed fail, port ID = \'{}\', error msg: [{}]'.format(usb_port_id,
                                                                                                 str(exception)))
            exit(0)
    
        """
        connect the device
        """
        try:
            print('[Connect Device]')
            device_group = kp.core.connect_devices(usb_port_ids=[usb_port_id])
            print(' - Success')
        except kp.ApiKPException as exception:
            print('Error: connect device fail, port ID = \'{}\', error msg: [{}]'.format(usb_port_id,
                                                                                         str(exception)))
            exit(0)
    
        """
        setting timeout of the usb communication with the device
        """
        print('[Set Device Timeout]')
        kp.core.set_timeout(device_group=device_group, milliseconds=10000)
        print(' - Success')
    
        """
        upload firmware to device
        """
        try:
            print('[Upload Firmware]')
            kp.core.load_firmware_from_file(device_group=device_group,
                                            scpu_fw_path=SCPU_FW_PATH,
                                            ncpu_fw_path=NCPU_FW_PATH)
            print(' - Success')
        except kp.ApiKPException as exception:
            print('Error: upload firmware failed, error = \'{}\''.format(str(exception)))
            exit(0)
    
        """
        upload model to device
        """
        try:
            print('[Upload Model]')
            # model_nef_descriptor = kp.core.load_model_from_file(device_group=device_group,
            #                                                     file_path=MODEL_FILE_PATH)
    
            model_nef_descriptor = kp.core.get_model_info(device_group=device_group,
                                                          usb_port_id=usb_port_id)
            print(' - Success')
    
            print('[Model NEF Information]')
    
            # print(model_nef_descriptor)
        except kp.ApiKPException as exception:
            print('Error: upload model failed, error = \'{}\''.format(str(exception)))
            exit(0)
    在這就出現問題無法往下了
        """
        prepare generic image inference input descriptor
        """
        _generic_inference_input_descriptor = kp.GenericImageInferenceDescriptor(
            model_id=model_nef_descriptor.models[0].id,
            inference_number=0,
        )
    
    
    下略
    
  • Hi Johnson,

    謝謝您提供的資訊! 我們看了您提供的程式。

    在KL520上,需要先跑load_model_from_file (下面被註解掉的地方),才能跑get_model_info,因為usb-boot upload fw會洗掉DDR上的所有資料(包含模型)。

    還有,usb_port_id需要確認是否有給,如果給0 (預設)的話,會找不到device。您之前跑ScanDevices.py的結果,port ID是9 (之前是17?),所以可以設定usb_port_id=9或17,請參考ScanDevices.py的USB port ID。

  • @Maria Chen 感謝您的回應,這行應該是之前測試誤刪了,目前已加回

The discussion has been closed due to inactivity. To continue with the topic, please feel free to post a new discussion.