blob: 2366454d02748ecb8f22c974359d33bca726b53a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
#!/bin/sh
basedir="$(realpath -e "$0" | xargs dirname)"
rootdir="$(realpath -m "$basedir/..")"
die()
{
echo "ERROR: $*" >&2
exit 1
}
echos()
{
printf '%s' "$*"
}
pyboard()
{
echo "$pyboard -d $dev $*"
"$pyboard" -d "$dev" "$@" || die "pyboard: $pyboard failed."
}
reboot_dev()
{
pyboard --no-follow -c 'import machine as m;m.reset()'
}
format_flash()
{
local wd_timeout="5000"
local cmd="import machine as m, flashbdev as f, uos as u;"
cmd="${cmd}m.WDT(0,${wd_timeout}).feed();"
cmd="${cmd}u.umount('/');"
cmd="${cmd}u.VfsLfs2.mkfs(f.bdev);"
cmd="${cmd}u.mount(u.VfsLfs2(f.bdev), '/');"
pyboard -c "$cmd"
}
transfer()
{
local from="$1"
local to="$2"
if [ -d "$from" ]; then
pyboard -f mkdir "$to"
for f in "$from"/*; do
if [ "$(basename "$f")" = "__pycache__" ]; then
continue
fi
transfer "$f" "$to/$(basename "$f")"
done
return
fi
pyboard -f cp "$from" "$to"
}
transfer_to_device()
{
echo "=== transfer to device $dev ==="
format_flash
reboot_dev
sleep 2
transfer "$rootdir/bme280" :/bme280
transfer "$basedir/micropython-i2c.py" :/example_i2c.py
transfer "$basedir/micropython-i2c-async.py" :/example_i2c_async.py
reboot_dev
}
dev="/dev/ttyUSB0"
pyboard="pyboard.py"
while [ $# -ge 1 ]; do
[ "$(echos "$1" | cut -c1)" != "-" ] && break
case "$1" in
-h|--help)
echo "install.sh [OPTIONS] [TARGET-UART-DEVICE]"
echo
echo "TARGET-UART-DEVICE:"
echo " Target serial device. Default: /dev/ttyUSB0"
echo
echo "Options:"
echo " -p|--pyboard PATH Path to pyboard executable."
echo " Default: pyboard.py"
echo " -h|--help Show this help."
exit 0
;;
-p|--pyboard)
shift
pyboard="$1"
;;
*)
die "Unknown option: $1"
;;
esac
shift
done
if [ $# -ge 1 ]; then
dev="$1"
shift
fi
if [ $# -ge 1 ]; then
die "Too many arguments."
fi
transfer_to_device
exit 0
|