1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/makefiles/tools/serial.inc.mk
MrKevinWeiss 6d729033e5
makefiles/tools/serial.inc.mk: Handle new miniterm versions
While testing examples/micropython I notice that the default of miniterm.py is actually miniterm.
To simplify user setups, this checks for miniterm.py first then falls back to miniterm.
2023-04-04 12:47:54 +02:00

84 lines
3.0 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 serial \
$(TTY_BOARD_FILTER)
TTY_DETECTED := $(shell $(TTY_SELECT_CMD) || echo 'no-tty-detected no-serial-detected')
PORT_DETECTED := $(firstword $(TTY_DETECTED))
PORT_SERIAL_DETECTED := $(lastword $(TTY_DETECTED))
PORT ?= $(firstword $(TTY_DETECTED))
ifeq (1,$(DEBUG_ADAPTER_ID_IS_TTY_SERIAL))
DEBUG_ADAPTER_ID ?= $(PORT_SERIAL_DETECTED)
endif
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)
# Check if miniterm.py is available in the path, if not use just miniterm
# since new versions will only have miniterm and not miniterm.py
ifeq (,$(shell command -v miniterm.py 2>/dev/null))
TERMPROG ?= miniterm
else
TERMPROG ?= miniterm.py
endif
# 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