我编写了以下 Windows 批处理脚本,将给定文件复制到 Nucleo STM32 虚拟驱动器:
@echo off
for /f %%D in ('%SystemRoot%\System32\wbem\WMIC.exe volume get DriveLetter^, Label ^| find "NODE_F446RE"') do set nucleo_drive=%%D
rem echo Nucleo drive: %nucleo_drive%
IF EXIST %nucleo_drive%\DETAILS.TXT (
IF EXIST %1 (
@echo on
xcopy %1 %nucleo_drive%
@echo off
echo Copied %1 on nucleo
) ELSE (
echo Binary %1 not found. Run `mingw32-make` in this directory to compile the project.
)
) ELSE (
echo Nucleo drive not found. If needed, edit the `find "NODE_F446RE"` part of this script to refference your nucleo volume name.
)
Nucleo 的驱动器是虚拟文件驱动器。当您在其上复制兼容的二进制文件时,它会在实际的 Nucleo 处理器上刷新该二进制文件并重新启动它。我想使用 bash 脚本对 Linux 做同样的事情 - 特别是 Ubuntu,但兼容性越好。
我可以看到 Nucleo 出现在路径上/media/MY_USERNAME/NODE_F446RE
。但我对linux的经验很少,那是标准的路径吗?我可以依赖将文件复制到吗/media/%username%/NODE_F446RE
?
或者是否有更好的方法来获取可移动设备路径(例如,如果有更多卷,则为第一个卷,而 nucleo 不会)?
答案1
您可以信赖/media/$username/NODE_F446RE
您计算机上显示的这个特定的可移动设备。这在 Linux 世界中并不通用,但在(最近的)Ubuntu 和当今大多数其他发行版中都是这样的:/media
、用户名、文件系统标签。
还有其他方法可以确保固定路径,但您只需重新创建默认设置已使用的相同机制(优盘2)。有多种方法可以查找特定设备的安装位置(/dev/disks
使用已知特征查找设备,然后使用/proc/mounts
或df
或findmnt
查找该设备的安装位置),但您的计算机上不需要它们。因此,除非您需要制作适合其他人环境的东西,否则研究其他方法是没有意义的。