Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@

zephyr_include_directories(include)

add_subdirectory(drivers)
add_subdirectory(lib)
1 change: 1 addition & 0 deletions Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@
# as the module Kconfig entry point (see zephyr/module.yml). You can browse
# module options by going to Zephyr -> Modules in Kconfig.

rsource "drivers/Kconfig"
rsource "lib/Kconfig"
2 changes: 1 addition & 1 deletion app/boards/nrf9151dk_nrf9151_ns.conf
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
# set here will take precedence if they are present in both files.

# When working with PC terminal, unmask the following config.
CONFIG_SM_POWER_PIN=8
CONFIG_SM_POWER_PIN=-1
CONFIG_SM_INDICATE_PIN=0

# When working with external MCU, unmask the following config.
Expand Down
47 changes: 13 additions & 34 deletions app/boards/nrf9151dk_nrf9151_ns.overlay
Original file line number Diff line number Diff line change
Expand Up @@ -6,54 +6,33 @@

/ {
chosen {
ncs,sm-uart = &uart0;
ncs,sm-uart = &dtr_uart0;
};
};

/* DTR with DK */
&uart0 {
status = "okay";
hw-flow-control;
};

&uart2 {
compatible = "nordic,nrf-uarte";
current-speed = <115200>;
status = "disabled";
hw-flow-control;
dtr_uart0: dtr-uart {
compatible = "nordic,dtr-uart";
dtr-gpios = <&gpio0 8 (GPIO_PULL_UP | GPIO_ACTIVE_HIGH)>;
ri-gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
status = "okay";
};
};

pinctrl-0 = <&uart2_default_alt>;
pinctrl-1 = <&uart2_sleep_alt>;
pinctrl-names = "default", "sleep";
&gpio0 {
status = "okay";
/* Use PORT event for DTR (8) and RI (0) pins to save power */
sense-edge-mask = <0x00000101>;
};

&i2c2 {
status = "disabled";
};

&pinctrl {
uart2_default_alt: uart2_default_alt {
group1 {
psels = <NRF_PSEL(UART_RX, 0, 11)>;
bias-pull-up;
};
group2 {
psels = <NRF_PSEL(UART_TX, 0, 10)>,
<NRF_PSEL(UART_RTS, 0, 12)>,
<NRF_PSEL(UART_CTS, 0, 13)>;
};
};

uart2_sleep_alt: uart2_sleep_alt {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 10)>,
<NRF_PSEL(UART_RX, 0, 11)>,
<NRF_PSEL(UART_RTS, 0, 12)>,
<NRF_PSEL(UART_CTS, 0, 13)>;
low-power-enable;
};
};
};

/* Enable external flash */
&gd25wb256 {
status = "okay";
Expand Down
12 changes: 0 additions & 12 deletions app/overlay-cmux.conf
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,6 @@ CONFIG_SM_SKIP_READY_MSG=y
CONFIG_MODEM_MODULES=y
CONFIG_MODEM_CMUX=y

# Enable Serial Modem UART backend
CONFIG_MODEM_BACKEND_UART=n
CONFIG_MODEM_BACKEND_UART_ASYNC=n
CONFIG_MODEM_BACKEND_UART_SLM=y
CONFIG_MODEM_BACKEND_UART_SLM_TRANSMIT_TIMEOUT_MS=1000

# These buffers are unused after AT#CMUX is enabled
# so use minimal buffer size
CONFIG_SM_UART_RX_BUF_COUNT=2
CONFIG_SM_UART_RX_BUF_SIZE=128
CONFIG_SM_UART_TX_BUF_SIZE=128

# debug options
#CONFIG_MODEM_CMUX_LOG_LEVEL_DBG=y
#CONFIG_MODEM_MODULES_LOG_LEVEL_DBG=y
9 changes: 9 additions & 0 deletions app/overlay-external-mcu-nrf91x1.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Segger RTT
CONFIG_USE_SEGGER_RTT=n
# Where console messages (printk) are output.
# By itself, SM does not output any.
CONFIG_RTT_CONSOLE=n
CONFIG_UART_CONSOLE=y
# Where logs are output.
CONFIG_LOG_BACKEND_RTT=n
CONFIG_LOG_BACKEND_UART=y
75 changes: 75 additions & 0 deletions app/overlay-external-mcu-nrf91x1.overlay
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/

/ {
chosen {
ncs,sm-uart = &dtr_uart2;
};
};

/* For logging. TODO: Disable. */
// &uart0 {
// status = "okay";

Check warning on line 15 in app/overlay-external-mcu-nrf91x1.overlay

View workflow job for this annotation

GitHub Actions / Run compliance checks on patch series (PR)

SPACE_BEFORE_TAB

app/overlay-external-mcu-nrf91x1.overlay:15 please, no space before tabs
// hw-flow-control;

Check warning on line 16 in app/overlay-external-mcu-nrf91x1.overlay

View workflow job for this annotation

GitHub Actions / Run compliance checks on patch series (PR)

SPACE_BEFORE_TAB

app/overlay-external-mcu-nrf91x1.overlay:16 please, no space before tabs
// };

&uart0 {
status = "disabled";
};

&dtr_uart0 {
status = "disabled";
};


&gpio0 {
status = "okay";
/* Use PORT event for DTR (31) and RI (30) pins to save power */
sense-edge-mask = <0xC0000000>;
};

/* DTR with external MCU */
&uart2 {
compatible = "nordic,nrf-uarte";
current-speed = <115200>;
hw-flow-control;
status = "okay";

dtr_uart2: dtr-uart {
compatible = "nordic,dtr-uart";
dtr-gpios = <&gpio0 31 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
ri-gpios = <&gpio0 30 GPIO_ACTIVE_LOW>;
status = "okay";
};
pinctrl-0 = <&uart2_default_alt>;
pinctrl-1 = <&uart2_sleep_alt>;
pinctrl-names = "default", "sleep";
};


&pinctrl {
uart2_default_alt: uart2_default_alt {
group1 {
psels = <NRF_PSEL(UART_RX, 0, 11)>;
bias-pull-up;
};
group2 {
psels = <NRF_PSEL(UART_TX, 0, 10)>,
<NRF_PSEL(UART_RTS, 0, 12)>,
<NRF_PSEL(UART_CTS, 0, 13)>;
};
};

uart2_sleep_alt: uart2_sleep_alt {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 10)>,
<NRF_PSEL(UART_RX, 0, 11)>,
<NRF_PSEL(UART_RTS, 0, 12)>,
<NRF_PSEL(UART_CTS, 0, 13)>;
low-power-enable;
};
};
};
23 changes: 5 additions & 18 deletions app/overlay-ppp-cmux-linux.conf
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,12 @@ CONFIG_SM_CR_TERMINATION=y

CONFIG_MODEM_CMUX_MTU=127
CONFIG_MODEM_CMUX_WORK_BUFFER_SIZE=536
CONFIG_SM_CMUX_UART_BUFFER_SIZE=600

# Enable Serial Modem UART backend
CONFIG_MODEM_BACKEND_UART=n
CONFIG_MODEM_BACKEND_UART_ASYNC=n
CONFIG_MODEM_BACKEND_UART_SLM=y

# For sending full 600 bytes at 115200 baudrate
# 600 * 10 / 115200 = 52.1 ms
CONFIG_MODEM_BACKEND_UART_SLM_TRANSMIT_TIMEOUT_MS=53
# Assume at least baudrate 115200 for UART
# so CMUX frame can be received in 12 ms (134*10/115200)
CONFIG_MODEM_BACKEND_UART_SLM_RECEIVE_IDLE_TIMEOUT_MS=12

# These buffers are unused after AT#CMUX is enabled
# so use minimal buffer size
CONFIG_SM_UART_RX_BUF_COUNT=2
CONFIG_SM_UART_RX_BUF_SIZE=128
CONFIG_SM_UART_TX_BUF_SIZE=128
# With CMUX, the UART buffers should be at least the size of the
# CONFIG_MODEM_CMUX_WORK_BUFFER_SIZE
CONFIG_SM_UART_RX_BUF_COUNT=3
CONFIG_SM_UART_RX_BUF_SIZE=256
CONFIG_SM_UART_TX_BUF_SIZE=768

# When using PPP, disable commands of IP-based protocols to save flash space.
CONFIG_SM_FTPC=n
Expand Down
8 changes: 8 additions & 0 deletions app/overlay-ppp-without-cmux.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Copyright (c) 2025 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#

# Enable modem UART backend
CONFIG_MODEM_BACKEND_UART=y
CONFIG_MODEM_BACKEND_UART_ASYNC=y
6 changes: 0 additions & 6 deletions app/overlay-ppp.conf
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,6 @@ CONFIG_NET_L2_PPP=y
CONFIG_MODEM_MODULES=y
CONFIG_MODEM_PPP=y

# Enable Serial Modem UART backend
CONFIG_MODEM_BACKEND_UART=n
CONFIG_MODEM_BACKEND_UART_ASYNC=n
CONFIG_MODEM_BACKEND_UART_SLM=y
CONFIG_MODEM_BACKEND_UART_SLM_TRANSMIT_TIMEOUT_MS=1000

# L2 protocol
CONFIG_NET_L2_PPP_MGMT=y
CONFIG_NET_L2_PPP_OPTION_MRU=y
Expand Down
28 changes: 27 additions & 1 deletion app/overlay-zephyr-modem-nrf9160dk-nrf52840.conf
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,30 @@
#

# nRF52 <=> nRF91 interface pin 4 (see https://docs.nordicsemi.com/bundle/ug_nrf91_dk/page/UG/nrf91_DK/board_controller.html)
CONFIG_SM_POWER_PIN=22
CONFIG_SLM_POWER_PIN=-1

CONFIG_USE_SEGGER_RTT=n
# Where console messages (printk) are output.
# By itself, SLM does not output any.
CONFIG_RTT_CONSOLE=n
CONFIG_UART_CONSOLE=y
# Where SLM logs are output.
CONFIG_LOG_BACKEND_RTT=n
CONFIG_LOG_BACKEND_UART=y

CONFIG_SHELL=y
CONFIG_GPIO=y
CONFIG_GPIO_SHELL=y
CONFIG_PM_DEVICE_SHELL=y

CONFIG_UART_1_INTERRUPT_DRIVEN=n
CONFIG_UART_1_ASYNC=y
CONFIG_UART_USE_RUNTIME_CONFIGURE=y
CONFIG_UART_ASYNC_API=y

CONFIG_SLM_SMS=n
CONFIG_SLM_GNSS=n
CONFIG_SLM_NRF_CLOUD=n
CONFIG_SLM_GPIO=n

CONFIG_SIZE_OPTIMIZATIONS_AGGRESSIVE=y
9 changes: 8 additions & 1 deletion app/overlay-zephyr-modem-nrf9160dk-nrf52840.overlay
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,18 @@

/ {
chosen {
ncs,sm-uart = &uart1;
ncs,sm-uart = &dtr_uart;
};
};

&uart1 {
current-speed = <115200>;
hw-flow-control;
status = "okay";
dtr_uart: dtr-uart {
compatible = "nordic,dtr-uart";
dtr-gpios = <&interface_to_nrf52840 4 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
ri-gpios = <&interface_to_nrf52840 5 (GPIO_ACTIVE_LOW)>;
status = "okay";
};
};
5 changes: 5 additions & 0 deletions app/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ CONFIG_LOG_BACKEND_UART=n
# errors if Serial Modem does not start properly.
CONFIG_SEGGER_RTT_BUFFER_SIZE_UP=2048

# DTR UART
CONFIG_DTR_UART=y
CONFIG_DTR_UART_LOG_LEVEL_DBG=y

# Network
CONFIG_NETWORKING=y
CONFIG_NET_SOCKETS=y
Expand Down Expand Up @@ -133,6 +137,7 @@ CONFIG_SM_EXTERNAL_XTAL=n
#CONFIG_SM_LOG_LEVEL_DBG=y
#CONFIG_LOG_PRINTK=n
#CONFIG_LOG_MODE_IMMEDIATE=y
CONFIG_DEBUG_OPTIMIZATIONS=y

# For using external GNSS antenna
#CONFIG_MODEM_ANTENNA=y
Expand Down
2 changes: 2 additions & 0 deletions app/sample.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ tests:
build_only: true
extra_args:
- EXTRA_CONF_FILE="overlay-ppp.conf"
- EXTRA_CONF_FILE="overlay-ppp-without-cmux.conf"
- EXTRA_DTC_OVERLAY_FILE="overlay-ppp-without-cmux.overlay"
platform_allow:
- nrf9160dk/nrf9160/ns
Expand All @@ -104,6 +105,7 @@ tests:
build_only: true
extra_args:
- EXTRA_CONF_FILE="overlay-ppp.conf"
- EXTRA_CONF_FILE="overlay-ppp-without-cmux.conf"
- EXTRA_DTC_OVERLAY_FILE="overlay-ppp-without-cmux.overlay"
extra_configs:
- CONFIG_SM_POWER_PIN=31
Expand Down
Loading
Loading