源码编译安装libusb和stlink(解决st-flash等待5s问题)

 

背景

下面都是在mac下。

stlink工具是命令行下的st-link下载工具,其基于libusb开发。

之前(2018年6月)安装stlink的方法是通过brew安装:brew install stlink,

用brew安装stlink会自动安装依赖包 libusb 1.0.22。

 

问题

不知从什么时候起,有时候通过stlink下载单片机固件会需要等待5s,重启mac后ok,但是不确定什么时候可能又会出现问题。

 

原因

把stlink源码下载下来跟踪发现5s的时间卡在了 stlink/src/usb.c -> stlink_open_usb()函数 -> libusb_get_device_list()函数。

 

网上这里(https://github.com/eblot/pyftdi/issues/42#issuecomment-449648800)有人提供了一个方法,直接修改libusb源码把5s改成了100ms。

但实际上我们不需要修改源码,最近版libusb已经改掉了这个问题,我们只要更新一下libusb,并用最新版本的libusb重新编译stlink即可。

 

homebrew没有更新libusb和stlink,我们只有从github上下载源码编译。

 

解决方法

1、卸载原来用brew安装的stlink和libusb:

brew remove stlink

brew remove libusb

2、github下载libusb源码并安装:

github主页:https://github.com/libusb/libusb

  1. 下载:到工程的release页面下载“libusb-1.0.23-rc1.tar.bz2
  2. 解压,并进入 libusb-1.0.23-rc1 目录
  3. ./configure
  4. make
  5. sudo make install

安装完成后会在 /usr/local/lib/ 下多出 libusb-1.0.** 文件。

3、github下载stlink源码并安装:

github主页:https://github.com/texane/stlink,stlink是用cmake编译的。

  1. clone代码并进入工程目录
  2. mkdir build
  3. cd build
  4. cmake ..
  5. make
  6. sudo make install

安装完成后会在 /usr/local/bin/ 下多出 st-flash 文件。

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在python中安装libusb-1.0,你需要按照以下步骤进行操作: 1. 确保你已经安装libusb-1.0的依赖库pyusb。你可以使用以下命令来安装pyusb: ``` pip install pyusb ``` 2. 下载libusb-1.0的压缩文件,例如libusb-1.0.22.7z,并将其解压缩到任意文件夹中。 3. 打开解压缩后的文件夹,找到其中的MS64\dll\libusb-1.0.dll文件。 4. 将libusb-1.0.dll文件复制到你的Python安装目录下的Lib\site-packages\usb\backend文件夹中。 5. 现在,你应该可以在Python中使用libusb-1.0库了。 然而,根据你提供的引用内容和,看起来你可能已经遇到了一些问题。具体来说,错误信息指向了usb.backend.libusb1模块中的is_kernel_driver_active()和_check()函数。这可能表示你的代码中有一些与libusb-1.0的集成相关的问题。 为了解决这些问题,你可以尝试以下步骤: 1. 确保你的操作系统支持libusb-1.0。某些操作系统可能需要额外的驱动程序或配置才能正常使用libusb-1.0。 2. 检查你的Python代码中是否正确导入了libusb-1.0。你可以使用以下代码来确保正确导入: ```python import usb.backend.libusb1 ``` 3. 确保你的系统上已经安装了正确版本的libusb-1.0库。你可以尝试重新下载并安装最新版本的libusb-1.0。 4. 如果问题仍然存在,你可能需要查看更详细的错误信息,并可能需要在相关文档或讨论区中寻求帮助。 总之,安装libusb-1.0库需要确保正确安装了pyusb和libusb-1.0.dll,并解决任何与集成相关的问题。希望这些步骤能够帮助你成功安装libusb-1.0库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python-3.x - device.is_kernel_driver_active()无法在libusb-1.0.22.7z中运行吗? - 堆栈内存溢出](https://blog.csdn.net/weixin_34123023/article/details/116163753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值