pyocd 報錯 No USB backend found 的解決方法
本文記錄了我在Windows 10系統上遇到的pyocd命令執行報錯——No USB backend found 的分析過程和解決方法。遇到類似問題的朋友可以直接參考最后的解決方法,向了解問題發送原因的可以查看原因分析部分。
文章目錄
- pyocd 報錯 No USB backend found 的解決方法
- 一、問題現象
- 問題背景
- 二、原因分析
- HidApiUSB.isAvailable
- PyWinUSB.isAvailable
- 三、解決方法
- 可能方案
- 最終方案
一、問題現象
今天在我的PC上使用執行 pyocd 時報錯,具體信息如下:
最后一行報錯信息內容是:
pyocd.probe.pydapaccess.dap_access_api.DAPAccessIntf.DeviceError: No USB backend found
問題背景
問題發生的背景補充說明:
- 操作系統是:Windows 10 64位;
- Python版本是:3.11.4 ;
- pyocd版本是:0.36.0 ;
- git-bash環境執行的命令,cmd執行也是一樣的報錯;
- 另外,之前執行 pyocd 命令一直都沒有問題,今天才出現的;
二、原因分析
從截圖上能夠看出來這是一個Python代碼產生的異常,拋出異常的一行代碼在截圖上也可以看到:
raise DAPAccessIntf.DeviceError("No USB backend found")
同時,截圖上也可以看到位于的文件路徑是:
D:\Python\Python311\Lib\site-packages\pyocd\probe\pydapaccess\interface\__init__.py
git-bash環境下,直接用vim打開這個文件:
vim "D:\Python\Python311\Lib\site-packages\pyocd\probe\pydapaccess\interface\__init__.py" +54
對應的代碼為:
拋出異常的代碼位于54行,可以看到,前面兩個條件都失敗才會拋出此異常,兩個條件分別是:
- HidApiUSB.isAvailable
- PyWinUSB.isAvailable
接下來分析,這兩個條的值分別是如何而來的。
HidApiUSB.isAvailable
由于是pyocd命令執行時輸出的報錯,所以直接在pyocd包的目錄下搜索:
具體代碼如下:
已經可以看到這個值的來源了:
- 如果import hid執行成功,則為True;
- 如果import hid執行失敗,則為False;
PyWinUSB.isAvailable
類似的,可以找到PyWinUSB.isAvailable的來源:
源于兩種情況:
- 如果 import pywinusb.hid as hid 成功,則為True;
- 如果 import pywinusb.hid as hid 失敗,則為False;
三、解決方法
通過上面的分析,我們就知道解決方法了:
- 讓 import hid 成功;
- 讓 import pywinusb.hid 成功;
具體的就是:
pip install hid
或者:
pip install pywinusb
可能方案
但是經過試驗,在我的系統上,hid安裝后,會仍然失敗,具體是:
最終方案
因此,最終解決方法是:
pip install pywinusb
安裝完成后,pyocd pack find 就可以成功了:
問題解決,大功告成!