在 Ubuntu 和衍生发行版上,st-flash 和 st-util 需要 sudo 才能正常工作。
将它们添加到 sudoers(通过 visudo)不需要密码,但不需要 sudo。
将用户添加到拨出组不会改变任何内容。
将 GROUP="myusername",\ 行添加到 udev 规则不会改变任何内容。
非常感谢提供有关如何消除对 sudo 的这种需求的文档,以便它可以更轻松地与 IDE(如 VSCode 和其他)集成。
你是怎么安装stlink的?
如果您执行以下操作,则不需要 sudo 来运行命令(只要它不是以 root 身份运行):
git clone https://github.com/texane/stlink.git
cd stlink/build
cmake ..
make && sudo make install
请注意,如果您还没有更新您的 udev 规则,您可能还需要更新。
stlink_udev_rule.tar.bz2
sudo tar -xvf stlink_udev_rule.tar.bz2 -C /etc/udev/rules.d
您好,感谢您的快速答复
今天我拉了最后一个 git (6a9d390a729f381ecec45f212354bfe98e27790f)
然后在构建中我做了make clean
cmake ..
make && sudo make install
我还将udev规则复制到/etc/udev/rules.d.
我使 udev 规则可执行,然后我重新启动了整个计算机
但是当我做st-flash write main.bin 0x8000000
我有st-flash 1.4.0-58-g6a9d390
2019-01-24T22:21:17 INFO usb.c: bus 483 dev 3748
2019-01-24T22:21:17 WARN usb.c: Couldn't find matched ST-Link/V2 devices
如果另一方面我做sudo st-flash write main.bin 0x8000000
它工作正常。
仅供参考lsb_release -a && uname -a
得到我No LSB modules are available.
Distributor ID: neon
Description: KDE neon User Edition 5.14
Release: 18.04
Codename: bionic
Linux zalman 4.15.0-43-generic #46-Ubuntu SMP Thu Dec 6 14:45:28 UTC 2018 x86_64 x86_64
x86_64 GNU/Linux
你有什么想法,我该怎么做?
最良好的问候
它在 ubuntu 18.04 下对我来说很好用。
要进行调查,首先将您的 STLINK 设备插入 USB 端口。 然后运行lsusb
。 您应该会看到类似于以下内容的条目:
Bus 005 Device 017: ID 0483:374b STMicroelectronics ST-LINK/V2.1 (Nucleo-F103RB)
请注意总线编号 (005) 和设备 (017)。 然后你应该这样做:
ls -l /dev/bus/usb/005/017
(适当替换 005 和 017)。
在我的系统上,我看到以下内容:
crw-rw-rw- 1 root root 189, 528 Jan 24 17:52 /dev/bus/usb/005/017
这是世界可写的(这是来自下面的 MODE:="0666" )。 我的 /etc/udev/rules.d 目录中有几个文件。 在这种特殊情况下,49-stlinkv2-1.rules 文件包含以下内容:
# stm32 nucleo boards, with onboard st/linkv2-1
# ie, STM32F0, STM32F4.
# STM32VL has st/linkv1, which is quite different
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", \
MODE:="0666", \
SYMLINK+="stlinkv2-1_%n"
# If you share your linux system with other users, or just don't like the
# idea of write permission for everybody, you can replace MODE:="0666" with
# OWNER:="yourusername" to create the device owned by you, or with
# GROUP:="somegroupname" and mange access using standard unix groups.
并且 idVendor od 0483 和 374b 的 idProduct 与 lsusb 输出中的供应商 ID 相匹配。
确保您拥有此处的所有 3 个文件: https :
sudo udevadm control --reload-rules
sudo udevadm trigger
以确保规则真正生效。 使用 trigger 命令意味着您不需要拔出和重新插入设备,但您可能也想尝试这样做以进行良好的测量。
如果您设备的VID:PID与 3 个文件中的任何一个都不匹配,则您可能需要创建一个自定义规则文件来匹配您的VID:PID。
您好,感谢您的回答
我做了这一切ls -l /dev/bus/usb/001/011
crw-rw-rw-+ 1 root root 189, 10 Jan 25 19:56 /dev/bus/usb/001/011
它仍然是一样的。
通过在 sudo visudo 中添加命令,我不必再输入密码,但仍然需要 sudo。
这很奇怪
@dhylands你想用详尽的描述更新文档吗? 在https://github.com/texane/stlink/blob/master/doc/compiling.md#permissions -with-udev。
@dhylands :我可以将您的描述复制粘贴到我们的文档中吗?
@ Nightwalker-87 无论如何 - 随意。
@davehylands :感谢您的有益贡献和反馈。
用提交 d3c11fbef6d8205742152f646b223323dc4c0913 结束,因为我们现在知道 udev 配置是有效的。
我也可以用最近的 debian 系统确认这一点。
该问题似乎是我们无法重现的本地安装上的孤立问题。
最后的建议是使用默认用户权限重试干净(系统)安装。