Stlink: [doc] 验证设备访问的正确 udev 配置

创建于 2019-01-22  ·  8评论  ·  资料来源: stlink-org/stlink

在 Ubuntu 和衍生发行版上,st-flash 和 st-util 需要 sudo 才能正常工作。
将它们添加到 sudoers(通过 visudo)不需要密码,但不需要 sudo。
将用户添加到拨出组不会改变任何内容。
将 GROUP="myusername",\ 行添加到 udev 规则不会改变任何内容。
非常感谢提供有关如何消除对 sudo 的这种需求的文档,以便它可以更轻松地与 IDE(如 VSCode 和其他)集成。

generadocumention olinux question staturesolved

所有8条评论

你是怎么安装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 系统确认这一点。

该问题似乎是我们无法重现的本地安装上的孤立问题。
最后的建议是使用默认用户权限重试干净(系统)安装。

此页面是否有帮助?
0 / 5 - 0 等级