在bash脚本中运行时,应用程序无法找到字符设备文件

时间:2015-02-18 16:44:17

标签: linux bash

我试图在bash脚本中启动我的串口应用程序。由于某些奇怪的原因,应用程序无法获取/ dev / ttyACM0设备文件。如果我在/ dev /中直接从终端输入ls -la,则设备文件可见。当我在bash脚本中尝试相同的事情时,除了ttyACM0之外,每个设备文件都是可见的。

在终端:

root@pc:~$ ls -la /dev/ttyAC*
crw-rw---T 1 root dialout 166, 0 Feb 18 17:25 /dev/ttyACM0
脚本中的

ls: cannot access /dev/ttyAC*: No such file or directory

所有其他设备文件仍然可见..有人知道这是怎么回事吗?

这是脚本:

#!/bin/bash

# gpio defs
mcu_reset=49 #gpio2_17
mcu_erase=50 #gpio2_18

dir_export="/sys/class/gpio/export"
dir_reset="/sys/class/gpio/gpio$mcu_reset"
dir_erase="/sys/class/gpio/gpio$mcu_erase"

# Initialise Reset and erase gpio
if [ ! -d "$dir_reset" ]; then
  echo $mcu_reset > $dir_export
  echo out > "$dir_reset/direction"

  echo $mcu_erase > $dir_export
  echo out > "$dir_erase/direction"

  echo 0 > "$dir_erase/value"
  echo 1 > "$dir_reset/value"
  echo "* GPIO directories initialised!"
fi

# erase mcu flash
echo "* Erasing device..."
echo 1 > "$dir_erase/value"
sleep 0.5
echo 0 > "$dir_erase/value"
sleep 0.5

# reset device
echo "* Resetting device..."
echo 0 > "$dir_reset/value"
sleep 0.5
echo 1 > "$dir_reset/value"
sleep 0.5

# Flash device
#$(bossac -e -d -w -v -b argv[0])
ls -la /dev/ttyAC*

# reset device
echo "* Resetting device..."
echo 0 > "$dir_reset/value"
sleep 0.5
echo 1 > "$dir_reset/value"
sleep 0.5

1 个答案:

答案 0 :(得分:0)

发现问题了!当'echo 1> “$ dir_reset / value”执行连接到linux重置的mcu。 0.5秒的睡眠是为了让mcu再次出现。