{"id":307,"date":"2023-03-26T20:15:41","date_gmt":"2023-03-26T12:15:41","guid":{"rendered":"https:\/\/vm1.go2see.me\/?p=307"},"modified":"2023-03-29T17:06:46","modified_gmt":"2023-03-29T09:06:46","slug":"wsl2%e9%96%8b%e7%99%bc%e7%92%b0%e5%a2%83%e5%85%a8%e8%a8%98%e9%8c%84%ef%bc%883%ef%bc%89","status":"publish","type":"post","link":"https:\/\/vm1.go2see.me\/?p=307","title":{"rendered":"WSL2\u958b\u767c\u74b0\u5883\u5168\u8a18\u9304(3) \u9023\u63a5USB\u88dd\u7f6e\u7bc7"},"content":{"rendered":"<h1>3. WSL2 \u9023\u63a5USB\u88dd\u7f6e\u7bc7(usbipd)<\/h1>\n<blockquote><p>\n  \u8a73\u7d30\u5185\u5bb9\u53c3\u8003\uff1a<a class=\"wp-editor-md-post-content-link\" href=\"https\uff1a\/\/learn.microsoft.com\/en-us\/windows\/wsl\/connect-usb\">\u5fae\u8edf\u5b98\u7db2WSL\u6559\u5b78-\u5982\u4f55\u9023\u63a5USB\u88dd\u7f6e<\/a>\u3001\u4ee5\u53ca <a class=\"wp-editor-md-post-content-link\" href=\"https\uff1a\/\/www.jianshu.com\/p\/5224ed4fd50f\">\u57fa\u4e8e usbip \u5b9e\u73b0\u5171\u4eab usb \u8bbe\u5907<\/a> \u535a\u6587\u3002<\/p>\n<ul>\n<li>\u9700\u6c421\uff1a Win11 build 22000 \u7248\u4e4b\u5f8c\uff0c\u53ea\u652f\u6301 x86\u6a5f\u5668\uff0c\u53ea\u652f\u6301 WSL2 \u529f\u80fd\u865b\u64ec\u6a5f\u3002\u81f3\u65bcWin10\u8acb\u67e5\u627e\u5b98\u7db2\u6559\u5b78\u770b\u53ef\u884c\u6027\u3002<\/li>\n<li>\u9700\u6c422\uff1aLunux Kernel\u5728 5.10.60.1 \u7248\u4e4b\u5f8c\u3002<\/li>\n<\/ul>\n<\/blockquote>\n<p>Windows\u4e3b\u6a5f\u900f\u904e <strong>usbipd-win<\/strong> \u5957\u4ef6\uff0c\u53ef\u4ee5\u5c07\u591a\u7a2eUSB\u5468\u908a\u88dd\u7f6e\uff0c\u5206\u4eab\u7d66Hyper-V\u5f9e\u6a5f\u3001WSL2\u5f9e\u6a5f\u3001\u6216\u9060\u7aef\u7684Linux\u670d\u52d9\u5668\u3001\u9060\u7aefOpenWRT\u8def\u7531\u5668\u3002\u5f9e\u6a5f\u53ea\u8981\u5b89\u88dd <strong>linux-tools<\/strong> \uff08\u7db2\u8def\u5de5\u5177\uff09\u548c <strong>usbip<\/strong> \u5957\u4ef6\uff0c\u5c31\u53ef\u4ee5\u767c\u73fe\u88ab\u5bbf\u4e3b\u6a5f\u5206\u4eab\u7d66\u4ed6\u7684 USB\u8a2d\u5099\u3002<\/p>\n<p>usbipd\/usbip \u900f\u904e\u7db2\u8def\u6216\u865b\u64ec\u7db2\u8defIP\u5354\u8b70\uff0c\u5c07USB\u8a2d\u5099\u6620\u5c04\u7d66\u8fd1\u7aef\u7684Hyper-V\u6216WSL\uff0c\u6216\u9060\u7aef\u7684\u5ba2\u6236\u7aeflinux\u3001OpenWRT\u6a5f\u5668\u3002\u8209\u51e1UART\u3001JLink\u3001STLink\u3001OpenOCD\u3001CAN\u3001LAN\u3001PRINTER\u3001Secure KEY\u7b49USB\u88dd\u7f6e\u90fd\u53ef\u4ee5\u6620\u5c04\u3002\u9019\u88cf\u4e3b\u8981\u64cd\u4f5cUSB\u88dd\u7f6e\u5230WSL\u5ba2\u6236\u7aef\u6a5f\u5668\u7684\u6620\u5c04\u3002<\/p>\n<blockquote>\n<ul>\n<li>linux \u662f\u7528 <code>usbipd -D &amp;<\/code>  \u5553\u52d5 usbipd \u670d\u52d9\uff0c\u7528 <code>usbip bind<\/code> \u547d\u4ee4\u5c07\u81ea\u5df1\u7684USB \u88dd\u7f6e\u7d81\u5b9a\u5230 usbipd \u670d\u52d9\uff0c\u7528 <code>usbip attach<\/code> \u9023\u63a5\u9060\u7aef\uff08<code>-r ip_addr<\/code>\uff09\u7684 USB\u88dd\u7f6e\u3002<\/li>\n<li>windows \u662f\u7528 <code>usbipd server<\/code> \u5553\u52d5 usbipd \u670d\u52d9\uff0c\u7528 <code>usbipd bind<\/code> \u547d\u4ee4\u5c07\u81ea\u5df1\u7684USB \u88dd\u7f6e\u7d81\u5b9a\u5230 usbipd server\u3002<\/li>\n<li>windows \u984d\u5916\u63d0\u4f9b <code>usbipd wsl attach<\/code> \u7684\u8fd1\u7aef\u547d\u4ee4\uff0c\u4e0d\u900f\u904e usbipd server\uff0c\u76f4\u63a5\u5c07 USB \u88dd\u7f6e\u63d0\u4f9b\u7d66\uff08<code>-d<\/code> \u6307\u5b9a\u7684\uff09 WSL\u5ba2\u6236\u7aef\uff0c\u5ba2\u6236\u7aef\u4e0d\u5fc5\u518d\u7528 <code>usbipd<\/code> \u547d\u4ee4\u9023\u63a5\u5bbf\u4e3b\u88dd\u7f6e\u3002<\/li>\n<li>WSL\u5ba2\u6236\u7aef\u4ecd\u7136\u53ef\u4ee5\u91c7\u7528\u9060\u7aef\u6a21\u5f0f\uff0c\u53ea\u8981\u77e5\u9053\u5bbf\u4e3b\u6a5f\u7684ip\uff0c\u4ecd\u53ef\u6cbf\u7528 <code>usbip attach<\/code> \u9023\u63a5\u5bbf\u4e3b\u6a5f\/\u5176\u4ed6\u4e3b\u6a5f\u7684 usbipd server\u6240\u63d0\u4f9b\u7684USB\u88dd\u7f6e\u3002<\/li>\n<\/ul>\n<\/blockquote>\n<h2>3.1 usbipd \u5b89\u88dd<\/h2>\n<ul>\n<li>Windows\u4e3b\u6a5f\uff1a  \u5230<a class=\"wp-editor-md-post-content-link\" href=\"https\uff1a\/\/github.com\/dorssel\/usbipd-win\/releases\">usbipd-win \u9805\u76ee\u7684\u6700\u65b0\u767c\u5e03\u9801\u9762<\/a>\u3002\u4e0b\u8f09 <code>usbipd-win_x.x.x.msi<\/code>\u5b89\u88dd usbipd\u3002\u53ef\u80fd\u9700\u8981\u91cd\u5553\u4e3b\u6a5f\u751f\u6548\u3002<\/p>\n<\/li>\n<li>\n<p>WSL2\u5f9e\u6a5f\uff1aUbuntu\/Debian \u7cfb\u7d71\u7684\u5f9e\u6a5f\u53ef\u4ee5\u57f7\u884c\u4e0b\u9762\u5169\u689d\u547d\u4ee4\u5b89\u88dd usbip\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\">sudo apt install linux-tools-5.4.0-77-generic hwdata\nsudo update-alternatives --install \/usr\/local\/bin\/usbip usbip \/usr\/lib\/linux-tools\/5.4.0-77-generic\/usbip 20\n<\/code><\/pre>\n<p>or<\/p>\n<pre><code class=\"language-sh line-numbers\">sudo apt install linux-tools-virtual hwdata\nsudo update-alternatives --install \/usr\/local\/bin\/usbip usbip `ls \/usr\/lib\/linux-tools\/*\/usbip | tail -n1` 20\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<h2>3.2 usbipd \u4f7f\u7528<\/h2>\n<ul>\n<li>#### \u4e3b\u6a5f\u67e5\u770b\u76ee\u524d usbipd\/wsl \u9023\u7dab\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">usbipd wsl list\n<\/code><\/pre>\n<p>Pyboard \u76ee\u524d\u6302\u5728 BUSID 2-4 \u4e0a\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\">BUSID  VID:PID    DEVICE                                                    STATE\n2-4    f055:9800  USB \u5927\u5bb9\u91cf\u5b58\u50a8\u8bbe\u5907, USB \u4e32\u884c\u8bbe\u5907 (COM7)                      Not attached\n2-8    2808:a658  FocalTech Fingerprint Reader                             Not attached\n2-9    3277:0016  Integrated Camera                                        Not attached\n2-10   8087:0033  \u82f1\u7279\u5c14(R) \u65e0\u7ebf Bluetooth(R)                                Not attached\n2-13   090c:1000  USB \u5927\u5bb9\u91cf\u5b58\u50a8\u8bbe\u5907                                          Not attached\n<\/code><\/pre>\n<ul>\n<li>#### \u628a Pyboard \u9023\u63a5\u5230 WSL \u5f9e\u6a5f\u4e0a\uff1a<\/li>\n<\/ul>\n<pre><code class=\"line-numbers\"># \u5c07\u88dd\u7f6e\u9023\u63a5\u5230 wsl\uff1a\nusbipd wsl attach -b 2-4\n<\/code><\/pre>\n<p>\u518d\u67e5\u770b\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\">BUSID  VID:PID    DEVICE                                                        STATE\n2-4    f055:9800  USB \u5927\u5bb9\u91cf\u5b58\u50a8\u8bbe\u5907, USB \u4e32\u884c\u8bbe\u5907 (COM7)                       Attached - Ubuntu-20.04\n2-8    2808:a658  FocalTech Fingerprint Reader                                  Not attached\n2-9    3277:0016  Integrated Camera                                             Not attached\n2-10   8087:0033  \u82f1\u7279\u5c14(R) \u65e0\u7ebf Bluetooth(R)                                   Not attached\n2-13   090c:1000  USB \u5927\u5bb9\u91cf\u5b58\u50a8\u8bbe\u5907                                            Not attached\n<\/code><\/pre>\n<p>\u770b\u5230 Pyboard \u6302\u5728Ubuntu-20.04\u4e0a\u4e86\u3002<\/p>\n<ul>\n<li>#### \u5f9e\u6a5f\u67e5\u770b\u5df2\u9023\u63a5\u7684 USB\u88dd\u7f6e\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\"># \u67e5\u770b\u5df2\u9023\u63a5\u7684 USB\u88dd\u7f6e\uff1a\nlsusb\n<\/code><\/pre>\n<p>Pyboard \u5df2\u7d93\u9023\u63a5\u4e0a\u4e86\uff1a<\/p>\n<pre><code class=\"line-numbers\">Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub\nBus 001 Device 002: ID f055:9800 MicroPython Pyboard Virtual Comm Port in FS Mode\nBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub\n<\/code><\/pre>\n<h2>3.3 usbipd\u53c3\u8003<\/h2>\n<p>\u5176\u4ed6 WSL2 \u5f9e\u6a5f\u53c3\u8003\uff1a<a class=\"wp-editor-md-post-content-link\" href=\"https\uff1a\/\/github.com\/dorssel\/usbipd-win\/wiki\/WSL-support#usbip-client-tools\">\u5176\u4ed6\u767c\u884c\u7248\u7684 usbip \u5ba2\u6236\u7aef\u5305<\/a>\u3002<\/p>\n<p>\u5b89\u88dd\u8a2d\u5b9a\u5b8c\u6210\u5f8c\uff0c\u4e3b\u6a5f\u53ef\u4ee5\u4ee5\u7ba1\u7406\u54e1\u8eab\u4efd\u57f7\u884c Powewrshell\uff0c\u4e0b usbipd \u547d\u4ee4\uff0c\u5c07\u9078\u5b9a\u7684USB\u88dd\u7f6e\u4ea4\u4ed8\u7d66WSL2\u5f9e\u6a5f\u3002<\/p>\n<h3><strong>\u547d\u4ee4\u7528\u6cd5\u8209\u4f8b\u5982\u4e0b\uff1a<\/strong><\/h3>\n<ul>\n<li><code>usbipd -?<\/code> \/ <code>usbipd wsl -?<\/code>\uff1a \u67e5\u770b\u547d\u4ee4\u5e6b\u52a9\u8aac\u660e \/ \u91dd\u5c0d WSL\u5ba2\u6236\u7aef\u7684\u547d\u4ee4\u5e6b\u52a9\u8aac\u660e\u3002<\/p>\n<\/li>\n<li>\n<p><code>usbipd wsl list<\/code>\uff1a \u67e5\u770bWindows11\u4e3b\u6a5f\u53ef\u4ee5\u63d0\u4f9b\u7d66WSL\u7684USB\u88dd\u7f6e\uff0c\u4ee5\u53ca\u88dd\u7f6e\u5728WSL\u7684\u9023\u63a5\u72c0\u614b\u3002<\/p>\n<\/li>\n<li>\n<p><code>usbipd wsl attach -b xx-xx<\/code>\uff1a \u5c07 BUSID\u70ba xx-xx \u7684\u88dd\u7f6e\u9023\u63a5\u5230WSL\u3002<\/p>\n<blockquote><p>\n  \u82e5\u6dfb\u52a0 <code>-a<\/code> \u53c3\u6578\u5247\u6b64\u547d\u4ee4\u6703 hold\u4f4f\uff0c\u6301\u7e8c\u76e3\u8996\u4e26\u91cd\u9023\u88dd\u7f6e\u5230WSL\uff0c\u76f4\u5230\u6309\u4e0b<code>Ctrl+C<\/code>\u3002<\/p>\n<p>  \u82e5\u8981\u9023\u5230\u975e\u9810\u8a2d\u7684WSL\u5b50\u7cfb\u7d71\uff0c\u53ef\u7528  <code>-d WSL_NAME<\/code> \u6307\u5b9a\u5b50\u7cfb\u7d71\u3002(\u53ef\u7528<code>wsl -l<\/code>\u67e5\u7cfb\u7d71\u6709\u7684\u5b50\u7cfb\u7d71)\n<\/p><\/blockquote>\n<\/li>\n<li><code>usbipd wsl attach -i VID\uff1aPID<\/code>\uff1a \u5c07\u88dd\u7f6e\u985e\u5225\u70ba VID\uff1aPID \u7684\u88dd\u7f6e\u9023\u63a5\u5230WSL\u3002<br \/>\n<blockquote><p>\n  \u82e5\u6dfb\u52a0 <code>-a<\/code> \u53c3\u6578\u5247\u6b64\u547d\u4ee4\u6703 hold\u4f4f\uff0c\u6301\u7e8c\u76e3\u8996\u4e26\u91cd\u9023\u88dd\u7f6e\u5230WSL\uff0c\u76f4\u5230\u6309\u4e0b<code>Ctrl+C<\/code>\u3002<br \/>\n  \u82e5\u8981\u9023\u5230\u975e\u9810\u8a2d\u7684WSL\u5b50\u7cfb\u7d71\uff0c\u53ef\u7528  <code>-d WSL_NAME<\/code> \u6307\u5b9a\u5b50\u7cfb\u7d71\u3002(\u53ef\u7528<code>wsl -l<\/code>\u67e5\u7cfb\u7d71\u6709\u7684\u5b50\u7cfb\u7d71)\n<\/p><\/blockquote>\n<\/li>\n<li><code>usbipd wsl detach -b xx-xx<\/code>\uff1a\u65b7\u958b BUSID\u70baxx-xx \u7684WSL\u9023\u63a5\u3002<\/p>\n<\/li>\n<li>\n<p><code>usbipd wsl detach -i VID\uff1aPID<\/code>\uff1a\u65b7\u958b \u88dd\u7f6e\u985e\u5225\u70ba VID\uff1aPID \u7684WSL\u9023\u63a5\u3002<\/p>\n<\/li>\n<\/ul>\n<h2>3.4 WSL\u5f9e\u6a5f\u639b\u8f09\u9a45\u52d5\u6216\u5b89\u88dd\u5de5\u5177\u5957\u4ef6<\/h2>\n<p>\u901a\u7528\u7684Linux\u5185\u6838\u6709\u6a19\u6e96\u7684USB\u985e\u88dd\u7f6e\u9a45\u52d5\u7a0b\u5f0f\uff0c\u5982VCP\uff08USB\u4e32\u53e3\uff09\uff0c\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u3002\u82e5\u6709\u7279\u6b8a\u7684\u88dd\u7f6e\uff0c\u5c31\u8981\u984d\u5916\u5b89\u88dd\u9a45\u52d5\u7a0b\u5f0f\u3002\u6709\u7684\u63d0\u4f9b\u4e86\u5b89\u88dd\u7a0b\u5f0f\uff0c\u6709\u7684\u9700\u8981\u81ea\u884c\u7de8\u8b6f\u3002<\/p>\n<h3>3.4.1 VCP \u9a45\u52d5<\/h3>\n<p>VCP\u662f\u6a19\u6e96\u7684 USB Class\uff0c\u662f\u865b\u64ec\u4e32\u53e3\u786c\u4ef6\uff0cUbuntu\u63d0\u4f9b\u901a\u7528\u9a45\u52d5\u3002\u865b\u64ec\u4e32\u53e3\u4e00\u7a2e\u662f\u652f\u6301 V.25\u6a19\u6e96 Modem\u7684\u985e\u578b\uff0c\u6703\u88abLinux\u679a\u8209\u6210 <code>\/dev\/ttyACM*<\/code> \u6a23\u5f0f\u7684\u88dd\u7f6e\uff0c\u4e00\u7a2e\u662f\u666e\u901a\u7684 UART\u547d\u4ee4\u985e\u578b\uff0c\u6a21\u64ec16550 \u4e32\u53e3\u63a7\u5236\u5668\uff0c\u6703\u88abLinux\u679a\u8209\u6210 <code>\/dev\/ttyUSB*<\/code>\u6a23\u5f0f\u7684\u88dd\u7f6e\u3002<\/p>\n<p>\u4f7f\u7528\u6a4b\u63a5\u5668\u7684MCU\u9700\u8981\u5728 screen \u9023\u63a5\u6642\u8a2d\u5b9abaudrate\uff0c\u4f7f\u7528\u81ea\u5e36USB VCP\u7684MCU\u53ef\u4ee5\u4e0d\u8a2d\u5b9a\u3002<\/p>\n<h4>\u5b89\u88dduart \u5de5\u5177\uff1a<\/h4>\n<pre><code class=\"language-SH line-numbers\">sudo snap install serial-monitor --edge\n<\/code><\/pre>\n<h4>\u6e2c\u8a66<\/h4>\n<ul>\n<li>CH340\uff1a  ID\uff1a1a86\uff1a7523<\/li>\n<li>CP210x\uff1a ID\uff1a10c4\uff1aea60<\/li>\n<li>PL2303\uff1a ID\uff1a067b\uff1a2303<\/li>\n<\/ul>\n<h3>3.4.2 CDC &#8211; ACM \u88dd\u7f6e\uff08ttyACM\uff09<\/h3>\n<p>\u8207VCP\u4e0d\u540c\uff0cCDC-ACM \u88dd\u7f6e\u662f USB\u4e0b\u865b\u64ec\u7684\u4e00\u5957 Modem\u5354\u8b70\uff0c\u96d6\u7136\u548c VCP\u4e00\u6a23\u662f\u5e8f\u5217\u901a\u4fe1\uff0c\u4f46\u4e0d\u6703\u6709\u786c\u9ad4\u6d41\u63a7\u548c\u6ce2\u7279\u7387\u7684\u8a2d\u5b9a\u3002CDC\u88dd\u7f6e\u6703\u88ab\u679a\u8209\u5728 <code>\/dev\/ttyACM*<\/code> \u4e2d\u3002<br \/>\nSTM32\u5728 microPython\u4e0b\u7684 USB \u88ab\u679a\u8209\u6210MSC+CDC \u8907\u5408\u8a2d\u5099\uff0c\u5728\u7ba1\u7406\u54e1Powershell \u4e0b\uff0c\u7528 <code>usbipd.exe wsl list<\/code> \u53ef\u4ee5\u770b\u5230\u5176 VID\uff1aPID \u662f  f055\uff1a9800 \u3002<\/p>\n<pre><code class=\"language-powershell line-numbers\">$ usbipd.exe wsl list\nBUSID  VID\uff1aPID    DEVICE                                                STATE\n2-4    f055\uff1a9800  USB \u5927\u5bb9\u91cf\u5b58\u50a8\u8bbe\u5907\uff0c USB \u4e32\u884c\u8bbe\u5907 (COM3)                   Not attached\n\u3002\u3002\u3002\n<\/code><\/pre>\n<p>\u7528 <code>usbipd wsl attach -a -i f055\uff1a9800<\/code> \u5c07\u5176\u9023\u63a5\u5230 WSL\uff0c\u4e26\u6301\u7e8c\u76e3\u8996\u91cd\u9023\uff1a<\/p>\n<pre><code class=\"language-powershell line-numbers\">PS C\uff1a\\Users\\cyue1&gt; usbipd wsl attach -a -i f055\uff1a9800\nusbipd\uff1a info\uff1a Device with hardware-id 'f055\uff1a9800' found at busid '2-4'.\nusbipd\uff1a info\uff1a Starting endless attach loop; press Ctrl+C to quit.\nAttached\n<\/code><\/pre>\n<p>\u5728Linux\u4e0b\u7528 <code>lsusb<\/code>\u67e5\u770b\u88dd\u7f6e\u4fe1\u606f\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\">$ lsusb\n\u3002\u3002\u3002\nBus 001 Device 002\uff1a ID f055\uff1a9800 MicroPython Pyboard Virtual Comm Port in FS Mode\n\u3002\u3002\u3002\n<\/code><\/pre>\n<p>\u7528 screen \u9023\u63a5STM32 \u7684 VCP \u6642\uff0c\u53ef\u4ee5\u4e0d\u8a2d\u5b9a baudrate\u3002<\/p>\n<h3>3.4.3 DFU UTIL \u5957\u4ef6<\/h3>\n<p>\u200b   \u8a31\u591aMCU\u6703\u63d0\u4f9bDFU\uff08device firmware updates\uff09\u6a21\u5f0f\uff0c\u6b64\u6a21\u5f0f\u53ef\u900f\u904eRS232\u754c\u9762\u6216USB\u754c\u9762\u5347\u7d1aMCU\u7684Firmware\u3002<\/p>\n<p>\u200b   Ubuntu \u4e0b\u7684 DFU\u5de5\u5177\u5728 apt \u7684 <code>dfu-util<\/code> \u5957\u4ef6\u4e2d\uff0c\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u3002<\/p>\n<pre><code class=\"language-sh line-numbers\">sudo apt install dfu-util\n<\/code><\/pre>\n<p>\u4f46 ubuntu20.04 \u63d0\u4f9b\u7684 0.9\u7248\u6709\u4e9b\u8001\u820a\uff0c\u76ee\u524d\u6700\u65b0\u7684\u662f 0.11\u7248\u3002\u5efa\u8b70\u5f9eDFU UTIL\u5b98\u7db2\u76f4\u63a5<a class=\"wp-editor-md-post-content-link\" href=\"https\uff1a\/\/sourceforge.net\/projects\/dfu-util\/files\/latest\/download\">\u4e0b\u8f09\u6700\u65b0dfu\u5de5\u5177\u7684\u57f7\u884c\u6a94\u5305<\/a>\uff0c\u89e3\u58d3\u5f8c\uff0c\u5c07<code>linux-amd64\/<\/code> \u4e0b\u7684dfu-xxx \u6587\u4ef6\uff0c\u8907\u88fd\u5230 <code>\/usr\/local\/bin<\/code> \uff0c\u4ee5\u53d6\u4ee3 apt \u63d0\u4f9b\u7684\u7248\u672c\u3002\u53e6\u5916\u53ef\u53c3\u8003<a class=\"wp-editor-md-post-content-link\" href=\"https\uff1a\/\/dfu-util.sourceforge.net\/build.html\">dfu build \u8aac\u660e<\/a>\uff0c\u81ea\u884c\u7de8\u8b6f\u81ea\u5df1\u7684\u7248\u672c\u3002<\/p>\n<p>\u200b   STM32 \u9032\u5165DFU \u6a21\u5f0f\u7684\u65b9\u6cd5\u662f\u62c9\u9ad8 BOOT0 pin\uff0c\u518d reset MCU\uff0c\u9019\u6642 USB \u770b\u5230\u7684STM32F407 \u7684 VID\uff1aPID \u6703\u662f 0483\uff1adf11 \u3002<\/p>\n<p>\u200b   \u53ef\u7528\u4e0b\u9762\u7684 PowerShell \u6307\u4ee4\u5c07 DFU\u6a21\u5f0f\u7684STM32 \u63a5\u5230 WSL\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\">usbipd wsl attach -a -i 0483\uff1adf11\n<\/code><\/pre>\n<h3>3.4.4 <a class=\"wp-editor-md-post-content-link\" href=\"https\uff1a\/\/openocd.org\/\">OpenOCD<\/a> DEBUG\u5de5\u5177<\/h3>\n<p>OpenOCD\u662f\u901a\u7528\u7684 Debugger \u5de5\u5177\u3002\u53ef\u4ee5\u9023\u63a5\u591a\u5bb6\u7684 DEBUGGER\uff08<a class=\"wp-editor-md-post-content-link\" href=\"https\uff1a\/\/openocd.org\/doc\/html\/Debug-Adapter-Hardware.html#Debug-Adapter-Hardware\">\u8a73\u60c5\u53c3\u8003\u9019\u88cf<\/a>\uff09\u3002Ubuntu\u53ef\u4ee5\u76f4\u63a5 apt \u5b89\u88dd\u3002<\/p>\n<pre><code class=\"language-sh line-numbers\">sudo apt install openocd\n<\/code><\/pre>\n<p>JLink\u4e5f\u53ef\u7531 OpenOCD\u63a7\u5236\u3002<\/p>\n<h3>3.4.5 JLink DEBUG\u5de5\u5177<\/h3>\n<p>\u9664\u4e86OpenOCD\uff0c\u5c0d\u65bcJLink\u88dd\u7f6e\uff0c\u53ef\u4ee5\u5f9e https\uff1a\/\/www.segger.com\/downloads\/jlink\/JLink_Linux_x86_64.deb \u4e0b\u8f09 JLink\u3002\u9edeAccept \u5f8c\u4e0b\u8f09\u3002<\/p>\n<p>\u6211\u7576\u524d\u4e0b\u8f09\u5230\u7684\u5305\u662f <code>JLink_Linux_V784f_x86_64.deb<\/code>\uff0c\u4e0b\u8f09\u5f8c\u5728 WSL ubuntu\u4e2d\u7528 <code>sudo dpkg -i<\/code>\u547d\u4ee4\u5b89\u88dd\u6b64\u5b89\u88dd\u5305\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\">sudo dpkg -i JLink_Linux_V784f_x86_64.deb\n<\/code><\/pre>\n<h4>\u9a57\u8b49\uff1a<\/h4>\n<p>Host \u63d0\u4f9b jlink\u7d66WSL\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\">usbipd wsl attach -a -i 1366\uff1a0101\n<\/code><\/pre>\n<p>\u9023\u63a5 STM32F407 \u958b\u767c\u677f\u5230 JLink\uff0c\u7136\u5f8c\u5728WSL  \u57f7\u884c<code>JLinkSTM32<\/code>\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\">$JLinkSTM32\n\nSEGGER J-Link Unlock tool for STM32 devices\nCompiled Feb  7 2023 16\uff1a54\uff1a18\n(c) 2009-2015 SEGGER Microcontroller GmbH\uff0c www.segger.com\n              Solutions for real time microcontroller applications\n\nThis program is designed to reset the option bytes of a STM32 device to their factory settings\u3002If read protection of the device is enabled\uff0c reset the option bytes will cause a mass erase.\n\nOptions\uff1a\n  [0] Exit\n  [1] STM32F0xxxx\n  [2] STM32F1xxxx\n  [3] STM32F2xxxx\n  [4] STM32F3xxxx\n  [5] STM32F4xxxx\n\u3002\u3002\u3002\nPlease select the correct device family\uff1a 5\nConnecting to J-Link via USB...O.K.\nUsing SWD as target interface.\nTarget interface speed\uff1a 1000 kHz.\nVTarget = 3.300V\n<\/code><\/pre>\n<p>\u9023\u63a5\u6210\u529f\u3002<\/p>\n<h3>3.4.6 STLink V2 DEBUG\u5de5\u5177<\/h3>\n<p>Ubuntu\u4e0b\u7684stlink-v2\u9700\u8981\u7de8\u8b6f\u3002<\/p>\n<h4>3.4.6.1\u3001\u5b89\u88dd\u7de8\u8b6f\u4f9d\u8cf4<\/h4>\n<pre><code class=\"language-sh line-numbers\">sudo apt-get install git make cmake libusb-1.0-0-dev -y\nsudo apt-get install gcc build-essential -y\n<\/code><\/pre>\n<h4>3.4.6.2\u3001\u7de8\u8b6f\u5b89\u88ddstlink\u5de5\u5177<\/h4>\n<pre><code class=\"language-sh line-numbers\">git clone https\uff1a\/\/github.com\/stlink-org\/stlink\ncd stlink\ncmake\nmake\nsudo make install\n<\/code><\/pre>\n<h4>3.4.6.3 stlink\u7684 st-xxx \u547d\u4ee4\u8209\u4f8b\uff1a<\/h4>\n<pre><code class=\"language-sh line-numbers\">st-flash erase\n\nst-flash reset\n\nst-info --probe\n\nst-flash read out.bin 0x8000000 0x40000\n\nst-flash write xxx.bin 0x8000000\n<\/code><\/pre>\n<h2>3.5 \u8b93 WSL2 \u652f\u6301 Mass Storage Class\uff08MSC\uff09<\/h2>\n<p>STM32 \u5728 microPython \u4e0b\u662f\u88ab\u679a\u8209\u6210 CDC+MSC\uff0c\u53ef\u4ee5\u76f4\u63a5\u7528 \u96a8\u8eab\u789f\u6a21\u5f0f\u4f86\u4fee\u6539 microPython \u7684\u6587\u4ef6\uff0c\u901f\u5ea6\u6bd4\u5176\u4ed6\u7684 microPython \u900f\u904e CDC\u865b\u64ec\u4e32\u53e3\u5feb\u901f\u800c\u77e5\u89ba\u4e86\u3002\u7136\u800c\uff0cWSL2 \u5167\u6838\u4e0d\u652f\u6301 MSC\u3002<\/p>\n<p>\u627e\u5230 https\uff1a\/\/github.com\/jovton\/USB-Storage-on-WSL2 \u7684\u65b9\u6848\u662f\u7de8\u8b6f\u5167\u6838\uff0c\u589e\u52a0 iSCSI \u4f86\u900f\u904e\u7db2\u8def\u9023\u63a5\u3002\u4f46\u5c0d\u65bc CDC+MSC \u5408\u6210\u88dd\u7f6e\uff0c\u6211\u5011\u5df2\u7d93\u7528 usbipd \u628a USB \u9023\u7d66 WSL2\uff0c\u76f4\u63a5\u8b93\u5167\u6838\u652f\u6301 MSC \u5c31\u597d\u4e86\u3002<\/p>\n<p>kernel \u7de8\u8b6f\u5b89\u88dd\u65b9\u6cd5\uff1a<\/p>\n<ul>\n<li>\u5b89\u88dd kernel \u4e0b\u8f09\u548c\u7de8\u8b6f\u74b0\u5883\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses5-dev git bc -y\n<\/code><\/pre>\n<ul>\n<li>git clone\u53d6\u5f97 Microsoft WSL2 \u5167\u6838\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">git clone https\uff1a\/\/github.com\/microsoft\/WSL2-Linux-Kernel.git\n<\/code><\/pre>\n<ul>\n<li>\u9032\u5165\u5167\u6838\u76ee\u9304\uff0c\u9078\u64c7 wsl \u7684config\u6a94\u6848\uff0c\u4fee\u6539\u9078\u9805\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">cd WSL2-Linux-Kernel\nexport KCONFIG_CONFIG=Microsoft\/config-wsl\nmake menuconfig\n<\/code><\/pre>\n<blockquote><p>\n  \u4fee\u6539\u9700\u6c42\uff1a<\/p>\n<ol>\n<li>Device Drivers \u7684 USB \u652f\u6301USB Mass Storage \u3002<\/li>\n<li>(\u53ef\u9078) File System \u7684  DOS\/FAT\/EXFAT\/NTFS \u652f\u6301 FAT UTF-8  \u548c \u652f\u6301 exFAT\u3002<\/li>\n<li>Kernel hacking \u7684\u7de8\u8b6f\u6642\u6aa2\u67e5\uff0c\u95dc\u9589\u751f\u6210 BTF \u8a0a\u606f (\u7de8\u8b6f\u5831\u932f\uff0c\u7701\u9ebb\u7169\u95dc\u4e86) \u3002<\/li>\n<\/ol>\n<\/blockquote>\n<p>\u56e0\u70ba\u958b\u767c\u74b0\u5883\u5e38\u7528\uff0c\u6211\u76f4\u63a5\u7de8\u9032\u5167\u6838\uff0c\u4e0d\u505a\u5167\u6838\u6a21\u584a\u52a0\u8f09\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\">Device Drivers  ---&gt;\n    [*] USB support  ---&gt;\n        &lt;*&gt;   USB Mass Storage \n\nFile systems  ---&gt;\n    DOS\/FAT\/EXFAT\/NT Filesystems  ---&gt;\n        [*] Enable FAT UTF-8 option by default\n        &lt;*&gt; exFAT filesystem support\n\nKernel hacking  ---&gt;\n    Compile-time checks and compiler options  ---&gt;\n        [ ]   Generate BTF typeinfo\n<\/code><\/pre>\n<ul>\n<li>\u4fdd\u5b58\u914d\u7f6e\u9000\u51fa\u5f8c\uff0c\u7de8\u8b6f\uff1a(\u5206\u5de5\u7d66CPUx2=40\u500btask\u5354\u540c\u5de5\u4f5c)<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">time make KCONFIG_CONFIG=Microsoft\/config-wsl -j40\n<\/code><\/pre>\n<p>\u6211\u7684 12700H \u7b46\u8a18\u672c\u5927\u7d04\u82b15\u5206\u9418\u7de8\u8b6f\uff1a<\/p>\n<blockquote>\n<pre><code class=\"line-numbers\">real    3m45.713s\nuser    56m28.891s\nsys     5m22.852s\n<\/code><\/pre>\n<\/blockquote>\n<ul>\n<li>\u5b89\u88dd\u65b0\u69cb\u5efa\u7684\u6a21\u584a\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">sudo make modules_install\n<\/code><\/pre>\n<p>\u4f3c\u4e4e\u6a21\u584a\u6709\u5de5\u5177\u76f8\u4f9d\u554f\u984c\uff0c\u5148\u4e0d\u7ba1\u4e86\uff0c\u6211\u8981\u7684\u529f\u80fd\u90fd\u76f4\u63a5\u9032 kernel \u4e86.<\/p>\n<pre><code class=\"line-numbers\">arch\/x86\/Makefile\uff1a142\uff1a CONFIG_X86_X32 enabled but no binutils support\n  INSTALL \/lib\/modules\/5.15.90.1-microsoft-standard-WSL2+\/kernel\/drivers\/usb\/storage\/usb-storage.ko\n  INSTALL \/lib\/modules\/5.15.90.1-microsoft-standard-WSL2+\/kernel\/fs\/exfat\/exfat.ko\n  DEPMOD  \/lib\/modules\/5.15.90.1-microsoft-standard-WSL2+\n<\/code><\/pre>\n<ul>\n<li>\u5c07\u65b0\u7684\u5167\u6838\u6620\u50cfbzImage \u8907\u88fd Windows \u4e3b\u6a5f\u4e2d(cyue1 \u662f\u6211\u7684 Windows\u5e33\u6236\uff0c\u8acb\u6539\u6210\u4f60\u7684)\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">cp .\/arch\/x86_64\/boot\/bzImage \/mnt\/c\/Users\/cyue1\/\n<\/code><\/pre>\n<ul>\n<li>\u5728 Windows \u4e3b\u6a5f\u7684\u7528\u6236\u76ee\u9304\u4e0b\u5efa\u7acb  <code>.wslconfig<\/code>  \u6587\u4ef6\u3002\u8a2d\u5b9a wsl2 \u7684\u53c3\u6578\u3002(cyue1 \u662f\u6211\u7684 Windows\u5e33\u6236\uff0c\u8acb\u6539\u6210\u4f60\u7684)<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">pico \/mnt\/c\/Users\/cyue1\/.wslconfig\n<\/code><\/pre>\n<p>\u5167\u5bb9\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\">[wsl2]\nmemory=24GB\nkernel=C\uff1a\\\\Users\\\\cyue1\\\\bzImage\n<\/code><\/pre>\n<blockquote><p>\n  (\u6211\u7684\u7b46\u8a18\u672c\u6709 32GB RAM\uff0c\u6307\u5b9a24GB\u7d66 wsl2 \u4f7f\u7528\u3002\u5167\u6838\u6307\u5b9a\u70ba\u525b\u525b\u7de8\u8b6f\u597d\u8907\u88fd\u904e\u4f86\u7684)<\/p>\n<p>  \u53c3\u8003 https\uff1a\/\/learn.microsoft.com\/zh-tw\/windows\/wsl\/wsl-config \u8a2d\u5b9awsl\u6210\u70ba\u4f60\u60f3\u8981\u7684.\n<\/p><\/blockquote>\n<ul>\n<li>\u95dc\u9589 wsl \uff0c\u4e4b\u5f8c\u518d\u91cd\u555f\uff0c\u4ee5\u4f7f\u7528\u65b0\u5167\u6838\u548c\u8a2d\u5b9a.<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">sudo shutdown now\n<\/code><\/pre>\n<ul>\n<li>wsl2\u958b\u6a5f\u5f8c\u9a57\u8b49\u3002power shell \u4e0b\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-powershell line-numbers\">usbipd wsl list\nBUSID  VID\uff1aPID    DEVICE                                                        STATE\n2-4    f055\uff1a9800  USB \u5927\u5bb9\u91cf\u5b58\u50a8\u8bbe\u5907\uff0c USB \u4e32\u884c\u8bbe\u5907 (COM7)                       Not attached\n2-8    2808\uff1aa658  FocalTech Fingerprint Reader                                  Not attached\n2-9    3277\uff1a0016  Integrated Camera                                             Not attached\n2-10   8087\uff1a0033  \u82f1\u7279\u5c14(R) \u65e0\u7ebf Bluetooth(R)                                   Not attached\n<\/code><\/pre>\n<ul>\n<li>\u5c07 microPython \u88dd\u7f6e (2-4) \u9023\u63a5\u5230WSL\u4e0a\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-powershell line-numbers\">usbipd wsl attach -b 2-4\n<\/code><\/pre>\n<ul>\n<li>wsl \u4e2d\u5bdf\u770busb\u9023\u63a5\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">lsusb\n<\/code><\/pre>\n<pre><code class=\"language-sh line-numbers\">Bus 002 Device 002\uff1a ID 090c\uff1a1000 Silicon Motion\uff0c Inc\u3002- Taiwan (formerly Feiya Technology Corp.) Flash Drive\nBus 002 Device 001\uff1a ID 1d6b\uff1a0003 Linux Foundation 3.0 root hub\nBus 001 Device 003\uff1a ID f055\uff1a9800 MicroPython Pyboard Virtual Comm Port in FS Mode\nBus 001 Device 001\uff1a ID 1d6b\uff1a0002 Linux Foundation 2.0 root hub\n<\/code><\/pre>\n<ul>\n<li>wsl \u4e2d\u5bdf\u770b \/dev\uff0c\u770b\u5230\u591a\u4e86 <code>\/dev\/sdd<\/code>  \u548c <code>\/dev\/sdd1<\/code><\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">ls \/dev\/sd* -ls \/dev\/sd*\n\/dev\/sda  \/dev\/sdb  \/dev\/sdc  \/dev\/sdd  \/dev\/sdd1\n<\/code><\/pre>\n<ul>\n<li>mount sdd1 \u4e26\u67e5\u770b\u5167\u5bb9\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-sh line-numbers\">sudo mount \/dev\/sdd1 \/mnt\/d\nls \/mnt\/d\n<\/code><\/pre>\n<p>\u770b\u5230\u662f\u6211\u7684 pyboard \u5167\u5bb9\uff1a<\/p>\n<pre><code class=\"language-sh line-numbers\"> boot.py   main.py   myApp.py   polar.py   pybcdc.inf   README.txt  'System Volume Information'   testVCP.py\n<\/code><\/pre>\n<p>\u6210\u529f\u7051\u82b1\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>3. WSL2 \u9023\u63a5USB\u88dd\u7f6e\u7bc7(usbipd) \u8a73\u7d30\u5185\u5bb9\u53c3\u8003\uff1a\u5fae\u8edf\u5b98\u7db2WSL\u6559\u5b78-\u5982\u4f55\u9023\u63a5USB\u88dd\u7f6e\u3001\u4ee5\u53ca &#8230; &raquo; <a class=\"read-more-link\" href=\"https:\/\/vm1.go2see.me\/?p=307\">\u95b1\u8b80\u5168\u6587<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,13],"tags":[],"class_list":["post-307","post","type-post","status-publish","format-standard","hentry","category-embedded","category-wsl"],"_links":{"self":[{"href":"https:\/\/vm1.go2see.me\/index.php?rest_route=\/wp\/v2\/posts\/307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vm1.go2see.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vm1.go2see.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vm1.go2see.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vm1.go2see.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=307"}],"version-history":[{"count":2,"href":"https:\/\/vm1.go2see.me\/index.php?rest_route=\/wp\/v2\/posts\/307\/revisions"}],"predecessor-version":[{"id":340,"href":"https:\/\/vm1.go2see.me\/index.php?rest_route=\/wp\/v2\/posts\/307\/revisions\/340"}],"wp:attachment":[{"href":"https:\/\/vm1.go2see.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vm1.go2see.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vm1.go2see.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}