Browse Source

flash: search for default serial port on both macOS and Linux

Signed-off-by: Ron Evans <ron@hybridgroup.com>
pull/788/head
Ron Evans 5 years ago
committed by Ayke
parent
commit
34ee3883d6
  1. 42
      main.go

42
main.go

@ -144,6 +144,14 @@ func Test(pkgName string, options *compileopts.Options) error {
// Flash builds and flashes the built binary to the given serial port.
func Flash(pkgName, port string, options *compileopts.Options) error {
if port == "" {
var err error
port, err = getDefaultPort()
if err != nil {
return err
}
}
config, err := builder.NewConfig(options)
if err != nil {
return err
@ -255,6 +263,14 @@ func Flash(pkgName, port string, options *compileopts.Options) error {
// Note: this command is expected to execute just before exiting, as it
// modifies global state.
func FlashGDB(pkgName, port string, ocdOutput bool, options *compileopts.Options) error {
if port == "" {
var err error
port, err = getDefaultPort()
if err != nil {
return err
}
}
config, err := builder.NewConfig(options)
if err != nil {
return err
@ -480,6 +496,30 @@ func parseSize(s string) (int64, error) {
return n, err
}
// getDefaultPort returns the default serial port depending on the operating system.
// Currently only supports macOS and Linux.
func getDefaultPort() (port string, err error) {
var portPath string
switch runtime.GOOS {
case "darwin":
portPath = "/dev/cu.usb*"
case "linux":
portPath = "/dev/ttyACM*"
default:
return "", errors.New("unable to search for a default USB device to be flashed on this OS")
}
d, err := filepath.Glob(portPath)
if err != nil {
return "", err
}
if d == nil {
return "", errors.New("unable to locate a USB device to be flashed")
}
return d[0], nil
}
func usage() {
fmt.Fprintln(os.Stderr, "TinyGo is a Go compiler for small places.")
fmt.Fprintln(os.Stderr, "version:", version)
@ -547,7 +587,7 @@ func main() {
printSize := flag.String("size", "", "print sizes (none, short, full)")
nodebug := flag.Bool("no-debug", false, "disable DWARF debug symbol generation")
ocdOutput := flag.Bool("ocd-output", false, "print OCD daemon output during debug")
port := flag.String("port", "/dev/ttyACM0", "flash port")
port := flag.String("port", "", "flash port")
programmer := flag.String("programmer", "", "which hardware programmer to use")
cFlags := flag.String("cflags", "", "additional cflags for compiler")
ldFlags := flag.String("ldflags", "", "additional ldflags for linker")

Loading…
Cancel
Save