mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
208bf7eef3
Allow overriding the shell command used to auto-detect the TTY of a board with `MOST_RECENT_PORT=1` via the `TTY_SELECT_CMD` variable. The use case is to also detect Arduino Mega 2560 clones with cheap USB UART bridges (for which the filter command may yield false positives) while preferring genuine Arduino Mega 2560 boards (if found) over the clones (as the filter for genuine boards does not yield false positives).
73 lines
2.5 KiB
Makefile
73 lines
2.5 KiB
Makefile
# Select the most recently attached tty interface
|
|
ifeq (1,$(MOST_RECENT_PORT))
|
|
ifneq (,$(filter stdio_cdc_acm,$(USEMODULE)))
|
|
TTY_BOARD_FILTER ?= --model $(BOARD) --vendor 'RIOT-os\.org'
|
|
endif
|
|
TTY_SELECT_CMD ?= $(RIOTTOOLS)/usb-serial/ttys.py \
|
|
--most-recent \
|
|
--format path \
|
|
$(TTY_BOARD_FILTER)
|
|
PORT_DETECTED := $(shell $(TTY_SELECT_CMD) || echo 'no-tty-detected')
|
|
PORT ?= $(PORT_DETECTED)
|
|
endif
|
|
# Otherwise, use as default the most commonly used ports on Linux and OSX
|
|
PORT_LINUX ?= /dev/ttyACM0
|
|
PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
|
|
|
|
# set default port depending on operating system
|
|
ifeq ($(OS),Linux)
|
|
PORT ?= $(PORT_LINUX)
|
|
else ifeq ($(OS),Darwin)
|
|
PORT ?= $(PORT_DARWIN)
|
|
endif
|
|
|
|
# Default PROG_DEV is the same as PORT
|
|
PROG_DEV ?= $(PORT)
|
|
|
|
export BAUD ?= 115200
|
|
|
|
ifneq (,$(filter stdio_rtt,$(USEMODULE)))
|
|
ifeq (${PROGRAMMER},openocd)
|
|
RIOT_TERMINAL ?= openocd-rtt
|
|
else ifeq (${PROGRAMMER},jlink)
|
|
RIOT_TERMINAL ?= jlink
|
|
else ifeq (${RIOT_TERMINAL},)
|
|
$(warning "Warning: No RIOT_TERMINAL set, but using stdio_rtt: The default terminal is likely not to work.")
|
|
endif
|
|
endif
|
|
|
|
RIOT_TERMINAL ?= pyterm
|
|
ifeq ($(RIOT_TERMINAL),pyterm)
|
|
TERMPROG ?= $(RIOTTOOLS)/pyterm/pyterm
|
|
TERMFLAGS ?= -p "$(PORT)" -b "$(BAUD)" $(PYTERMFLAGS)
|
|
else ifeq ($(RIOT_TERMINAL),socat)
|
|
SOCAT_OUTPUT ?= -
|
|
TERMPROG ?= $(RIOT_TERMINAL)
|
|
TERMFLAGS ?= $(SOCAT_OUTPUT) open:$(PORT),b$(BAUD),echo=0,raw,cs8,parenb=0,cstopb=0
|
|
else ifeq ($(RIOT_TERMINAL),picocom)
|
|
TERMPROG ?= picocom
|
|
TERMFLAGS ?= --nolock --imap lfcrlf --baud "$(BAUD)" "$(PORT)"
|
|
else ifeq ($(RIOT_TERMINAL),miniterm)
|
|
TERMPROG ?= miniterm.py
|
|
# The RIOT shell will still transmit back a CRLF, but at least with --eol LF
|
|
# we avoid sending two lines on every "enter".
|
|
TERMFLAGS ?= --eol LF "$(PORT)" "$(BAUD)" $(MINITERMFLAGS)
|
|
else ifeq ($(RIOT_TERMINAL),jlink)
|
|
TERMPROG = $(RIOTTOOLS)/jlink/jlink.sh
|
|
TERMFLAGS = term-rtt
|
|
else ifeq ($(RIOT_TERMINAL),semihosting)
|
|
TERMPROG = $(DEBUGGER)
|
|
TERMFLAGS = $(DEBUGGER_FLAGS)
|
|
OPENOCD_DBG_EXTRA_CMD += -c 'arm semihosting enable'
|
|
$(call target-export-variables,term cleanterm,OPENOCD_DBG_EXTRA_CMD)
|
|
else ifeq (${RIOT_TERMINAL},openocd-rtt)
|
|
TERMENV = RAM_START_ADDR=${RAM_START_ADDR} RAM_LEN=${RAM_LEN}
|
|
TERMPROG = $(RIOTTOOLS)/openocd/openocd.sh
|
|
TERMFLAGS = term-rtt
|
|
else ifeq (${RIOT_TERMINAL},bootterm)
|
|
TERMENV = BT_PORT_CRLF=1
|
|
TERMPROG = $(RIOTTOOLS)/bootterm/bt
|
|
TERMFLAGS = $(BOOTTERMFLAGS) -a -b $(BAUD) $(PORT)
|
|
TERMDEPS += $(TERMPROG)
|
|
endif
|