From 3f9fc3208a6086006aa327b01967bd38e9b97f9c Mon Sep 17 00:00:00 2001 From: TOKITA Hiroshi Date: Sat, 4 Jul 2026 08:11:25 +0900 Subject: [PATCH 1/3] variants: Add support for NXP FRDM-MCXN947 Add configuration files for NXP FRDM-MCXN947. We have confirmed that it compiles when used in combination with https://github.com/arduino/zephyr/tree/zephyr-arduino-v4.2.0. Co-authored-by: Daniele Cloralio Co-authored-by: Leonardo Cavagnis Co-authored-by: Luca Burelli Co-authored-by: Martino Facchin Signed-off-by: TOKITA Hiroshi --- .../frdm_mcxn947_mcxn947_cpu0.conf | 65 +++++++++++++++++++ .../frdm_mcxn947_mcxn947_cpu0.overlay | 36 ++++++++++ variants/frdm_mcxn947_mcxn947_cpu0/variant.h | 13 ++++ 3 files changed, 114 insertions(+) create mode 100644 variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.conf create mode 100644 variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.overlay create mode 100644 variants/frdm_mcxn947_mcxn947_cpu0/variant.h diff --git a/variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.conf b/variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.conf new file mode 100644 index 000000000..f2a3288ee --- /dev/null +++ b/variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.conf @@ -0,0 +1,65 @@ +# Copyright (c) Arduino s.r.l. and/or its affiliated companies +# SPDX-License-Identifier: Apache-2.0 + + +CONFIG_BUILD_OUTPUT_HEX=y +CONFIG_BUILD_NO_GAP_FILL=y + +CONFIG_FLASH=y + +#CONFIG_USB_DC_NXP_EHCI=y +CONFIG_USB_DEVICE_STACK=y +CONFIG_USB_DEVICE_PRODUCT="Freedom MCXN947" +CONFIG_USB_DEVICE_MANUFACTURER="NXP" +CONFIG_USB_DEVICE_VID=0x2341 +CONFIG_USB_DEVICE_PID=0x0078 +CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n + +CONFIG_USB_CDC_ACM=y +CONFIG_USB_CDC_ACM_RINGBUF_SIZE=512 +CONFIG_UART_LINE_CTRL=y +CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y +CONFIG_USB_MCUX_THREAD_STACK_SIZE=4096 + +CONFIG_LLEXT_STORAGE_WRITABLE=n +CONFIG_STACK_USAGE=y +CONFIG_STACK_SENTINEL=y +CONFIG_STACK_CANARIES=y + +CONFIG_NETWORKING=y +CONFIG_NET_IPV6=n +CONFIG_NET_IPV4=y +CONFIG_NET_ARP=y +CONFIG_NET_UDP=y +CONFIG_NET_DHCPV4=y +CONFIG_NET_DHCPV4_OPTION_CALLBACKS=y +CONFIG_DNS_RESOLVER=y + +CONFIG_INIT_STACKS=y + +CONFIG_NET_MGMT=y +CONFIG_NET_MGMT_EVENT=y + +CONFIG_TINYCRYPT=y +CONFIG_TINYCRYPT_AES=y +CONFIG_TINYCRYPT_SHA256=y +CONFIG_TINYCRYPT_SHA256_HMAC=y +CONFIG_TINYCRYPT_AES_CCM=y +CONFIG_TINYCRYPT_AES_CTR=y +CONFIG_TINYCRYPT_AES_CBC=y +CONFIG_TINYCRYPT_AES_CMAC=y +CONFIG_TINYCRYPT_CTR_PRNG=y +CONFIG_ENTROPY_GENERATOR=y +CONFIG_TEST_RANDOM_GENERATOR=y + +CONFIG_NET_TX_STACK_SIZE=8192 +CONFIG_NET_RX_STACK_SIZE=8192 +CONFIG_NET_TCP_WORKQ_STACK_SIZE=8192 +CONFIG_NET_MGMT_EVENT_STACK_SIZE=8192 +CONFIG_NET_TCP=y +CONFIG_NET_SOCKETS=y +CONFIG_POSIX_API=y +CONFIG_NET_L2_ETHERNET_MGMT=y + +#override default settings from prj.conf common Kconfig +CONFIG_RTC=n \ No newline at end of file diff --git a/variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.overlay b/variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.overlay new file mode 100644 index 000000000..bd9537e10 --- /dev/null +++ b/variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.overlay @@ -0,0 +1,36 @@ +/* + * Copyright (c) Arduino s.r.l. and/or its affiliated companies + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&zephyr_udc0 { + status = "okay"; + board_cdc_acm_uart: board_cdc_acm_uart { + compatible = "zephyr,cdc-acm-uart"; + status = "okay"; + }; +}; + +&flash { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + user_sketch: partition@F0000 { + reg = <0xF0000 DT_SIZE_K(56)>; + }; + }; +}; + +/ { + zephyr,user { + digital-pin-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>, <&gpio0 27 GPIO_ACTIVE_LOW>, <&gpio1 2 GPIO_ACTIVE_LOW>; + builtin-led-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>, <&gpio0 27 GPIO_ACTIVE_LOW>, <&gpio1 2 GPIO_ACTIVE_LOW>; + cdc-acm-serial = <&board_cdc_acm_uart>; /* 'Serial' object is managed by SerialUSB */ + serials = <&flexcomm4_lpuart4>; /* 'Serial1' onwards */ + i2cs = <&flexcomm2_lpi2c2>; + spis = <&flexcomm1_lpspi1>; + }; +}; diff --git a/variants/frdm_mcxn947_mcxn947_cpu0/variant.h b/variants/frdm_mcxn947_mcxn947_cpu0/variant.h new file mode 100644 index 000000000..68c33a896 --- /dev/null +++ b/variants/frdm_mcxn947_mcxn947_cpu0/variant.h @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2022 Dhruva Gole + * + * SPDX-License-Identifier: Apache-2.0 + */ + +// TODO: correctly handle these legacy defines +#define MOSI 0 +#define MISO 0 +#define SCK 0 +#define SS 0 +#define SDA 0 +#define SCL 0 From d9973a3ea9a7e57f52733660edd3784fb0a366df Mon Sep 17 00:00:00 2001 From: TOKITA Hiroshi Date: Sat, 4 Jul 2026 08:15:37 +0900 Subject: [PATCH 2/3] variants: Add support for NXP FRDM-RW612 Add configuration files for NXP FRDM-RW612. We have confirmed that it compiles when used in combination with https://github.com/arduino/zephyr/tree/zephyr-arduino-v4.2.0. Co-authored-by: Martino Facchin Co-authored-by: Luca Burelli Signed-off-by: TOKITA Hiroshi --- .../frdm_rw612_rw612/frdm_rw612_rw612.conf | 207 ++++++++++++++++++ .../frdm_rw612_rw612/frdm_rw612_rw612.overlay | 33 +++ variants/frdm_rw612_rw612/variant.h | 13 ++ 3 files changed, 253 insertions(+) create mode 100644 variants/frdm_rw612_rw612/frdm_rw612_rw612.conf create mode 100644 variants/frdm_rw612_rw612/frdm_rw612_rw612.overlay create mode 100644 variants/frdm_rw612_rw612/variant.h diff --git a/variants/frdm_rw612_rw612/frdm_rw612_rw612.conf b/variants/frdm_rw612_rw612/frdm_rw612_rw612.conf new file mode 100644 index 000000000..b795f6274 --- /dev/null +++ b/variants/frdm_rw612_rw612/frdm_rw612_rw612.conf @@ -0,0 +1,207 @@ +# Copyright (c) Arduino s.r.l. and/or its affiliated companies +# SPDX-License-Identifier: Apache-2.0 + + +CONFIG_BUILD_OUTPUT_HEX=y + +CONFIG_FLASH=y + +#CONFIG_USB_DC_NXP_EHCI=y +CONFIG_USB_DEVICE_STACK=y +CONFIG_USB_DEVICE_PRODUCT="Freedom RW612" +CONFIG_USB_DEVICE_MANUFACTURER="NXP" +CONFIG_USB_DEVICE_VID=0x2341 +CONFIG_USB_DEVICE_PID=0x0079 +CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n + +CONFIG_USB_CDC_ACM=y +CONFIG_USB_CDC_ACM_RINGBUF_SIZE=512 +CONFIG_UART_LINE_CTRL=y +CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y +CONFIG_USB_MCUX_THREAD_STACK_SIZE=4096 + +CONFIG_LLEXT_STORAGE_WRITABLE=y +CONFIG_STACK_USAGE=n +CONFIG_STACK_SENTINEL=n +CONFIG_STACK_CANARIES=n + +CONFIG_FPU=y + +CONFIG_NET_MGMT=y +CONFIG_NET_MGMT_EVENT=y + +CONFIG_ENTROPY_GENERATOR=y +CONFIG_TEST_RANDOM_GENERATOR=y + +CONFIG_NET_TX_STACK_SIZE=8192 +CONFIG_NET_RX_STACK_SIZE=8192 +CONFIG_NET_TCP_WORKQ_STACK_SIZE=8192 +CONFIG_NET_MGMT_EVENT_STACK_SIZE=8192 +CONFIG_NET_TCP=y +CONFIG_NET_SOCKETS=y +CONFIG_POSIX_API=y + +CONFIG_EARLY_CONSOLE=y + +CONFIG_NETWORKING=y +CONFIG_TEST_RANDOM_GENERATOR=y + +CONFIG_MAIN_STACK_SIZE=5200 +CONFIG_SHELL_STACK_SIZE=5200 +CONFIG_NET_TX_STACK_SIZE=2048 +CONFIG_NET_RX_STACK_SIZE=2048 + +CONFIG_NET_PKT_RX_COUNT=10 +CONFIG_NET_PKT_TX_COUNT=10 +CONFIG_NET_BUF_RX_COUNT=20 +CONFIG_NET_BUF_TX_COUNT=20 +CONFIG_NET_MAX_CONTEXTS=10 +CONFIG_NET_DHCPV4=y +CONFIG_NET_DHCPV4_OPTION_CALLBACKS=y + +CONFIG_NET_IPV4=y +CONFIG_NET_IPV6=n + +CONFIG_NET_TCP=y + +CONFIG_NET_LOG=y +CONFIG_INIT_STACKS=y + +CONFIG_NET_SHELL=y + +CONFIG_NET_STATISTICS=y +CONFIG_NET_STATISTICS_PERIODIC_OUTPUT=n + +CONFIG_WIFI=y +CONFIG_WIFI_LOG_LEVEL_ERR=y +CONFIG_NET_L2_WIFI_SHELL=y +# printing of scan results puts pressure on queues in new locking +# design in net_mgmt. So, use a higher timeout for a crowded +# environment. +CONFIG_NET_MGMT_EVENT_QUEUE_TIMEOUT=5000 +CONFIG_NET_MGMT_EVENT_QUEUE_SIZE=16 + +CONFIG_WIFI_NXP=y +CONFIG_NXP_RW610=y +CONFIG_NXP_WIFI_SHELL=n +CONFIG_NXP_WIFI_SOFTAP_SUPPORT=y + +# +# C Library +# +CONFIG_REQUIRES_FULL_LIBC=y +CONFIG_CBPRINTF_FP_SUPPORT=y + +# log +CONFIG_WIFI_LOG_LEVEL_DBG=y +CONFIG_THREAD_LOCAL_STORAGE=y +CONFIG_ASSERT=y +CONFIG_ASSERT_LEVEL=2 +CONFIG_LOG_MODE_IMMEDIATE=y +CONFIG_LOG_PRINTK=n + +# os +CONFIG_THREAD_CUSTOM_DATA=y +CONFIG_EVENTS=y +CONFIG_SYS_HEAP_AUTO=y +CONFIG_HEAP_MEM_POOL_SIZE=122880 +CONFIG_SCHED_MULTIQ=y +CONFIG_ZVFS_OPEN_MAX=30 + +# shell +CONFIG_SHELL_ARGC_MAX=48 +CONFIG_WIFI_SHELL_MAX_AP_STA=8 +CONFIG_WIFI_MGMT_AP_MAX_NUM_STA=8 +CONFIG_SHELL_CMD_BUFF_SIZE=512 + +# net +CONFIG_NET_L2_ETHERNET=y +CONFIG_NET_DHCPV4_SERVER_ADDR_COUNT=32 +CONFIG_NET_IPV4=y +CONFIG_NET_IPV6=y +CONFIG_NET_ZPERF=y +CONFIG_NET_ZPERF_MAX_PACKET_SIZE=1500 +CONFIG_NET_BUF_LOG=y +CONFIG_NET_PKT_RX_COUNT=60 +CONFIG_NET_PKT_TX_COUNT=40 +CONFIG_NET_BUF_RX_COUNT=60 +CONFIG_NET_BUF_TX_COUNT=80 +CONFIG_NET_BUF_DATA_SIZE=1744 +CONFIG_NET_TC_TX_COUNT=1 +CONFIG_NET_TC_RX_COUNT=1 +CONFIG_NET_MGMT_EVENT_QUEUE_SIZE=20 +CONFIG_NET_IF_MAX_IPV4_COUNT=2 +CONFIG_NET_IF_MAX_IPV6_COUNT=2 +CONFIG_DNS_RESOLVER=y +CONFIG_DNS_RESOLVER_MAX_SERVERS=2 +CONFIG_NET_SOCKETS_POLL_MAX=14 +CONFIG_NET_ZPERF_MAX_SESSIONS=6 +CONFIG_NET_IPV4_FRAGMENT=y +CONFIG_NET_IPV4_FRAGMENT_MAX_COUNT=3 +CONFIG_NET_IPV4_FRAGMENT_MAX_PKT=7 +CONFIG_NET_IPV4_FRAGMENT_TIMEOUT=3 +CONFIG_NET_IPV6_FRAGMENT=y +CONFIG_NET_IPV6_FRAGMENT_MAX_COUNT=3 +CONFIG_NET_IPV6_FRAGMENT_MAX_PKT=8 +CONFIG_NET_IPV6_FRAGMENT_TIMEOUT=3 +CONFIG_NET_MAX_CONN=10 +CONFIG_NET_DHCPV4_SERVER_ICMP_PROBE_TIMEOUT=100 +CONFIG_ETH_DRIVER=n + +# net threads priority +CONFIG_NET_TC_THREAD_PRIO_CUSTOM=y +CONFIG_NET_TC_THREAD_PREEMPTIVE=y +CONFIG_NET_TCP_WORKER_PRIO=-16 +CONFIG_NET_TC_TX_THREAD_BASE_PRIO=3 +CONFIG_NET_TC_RX_THREAD_BASE_PRIO=3 +CONFIG_ZPERF_WORK_Q_THREAD_PRIORITY=3 +CONFIG_NET_SOCKETS_SERVICE_THREAD_PRIO=3 +CONFIG_NET_CONTEXT_PRIORITY=y +CONFIG_NET_MGMT_THREAD_PRIO_CUSTOM=y +CONFIG_NET_MGMT_THREAD_PRIORITY=3 + +# power management +CONFIG_PM=y +CONFIG_PM_DEVICE=y +CONFIG_PM_LOG_LEVEL_OFF=y +CONFIG_PM_DEVICE_LOG_LEVEL_OFF=y +CONFIG_IDLE_STACK_SIZE=1024 + +# stack size +CONFIG_SHELL_STACK_SIZE=6144 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 +CONFIG_NET_MGMT_EVENT_STACK_SIZE=4608 +CONFIG_NET_TCP_WORKQ_STACK_SIZE=2048 +CONFIG_MAIN_STACK_SIZE=4096 +CONFIG_NET_SOCKETS_SERVICE_STACK_SIZE=4096 + +# optimization level +# refer to Kconfig.zephyr for Optimizations Level +CONFIG_SPEED_OPTIMIZATIONS=y +#CONFIG_SIZE_OPTIMIZATIONS=y +#CONFIG_DEBUG_OPTIMIZATIONS=y +#CONFIG_NO_OPTIMIZATIONS=y + +# debug & stats +CONFIG_SYS_HEAP_VALIDATE=y +CONFIG_SYS_HEAP_RUNTIME_STATS=y +#CONFIG_NET_PKT_TXTIME_STATS=y +#CONFIG_NET_PKT_TXTIME_STATS_DETAIL=y +CONFIG_NET_STATISTICS_WIFI=y +CONFIG_NET_STATISTICS_USER_API=y +#CONFIG_NET_STATISTICS_PERIODIC_OUTPUT=y +#CONFIG_NET_BUF_POOL_USAGE=y +#CONFIG_NET_DEBUG_NET_PKT_ALLOC=y + +# stack size for -O0 +#CONFIG_SHELL_STACK_SIZE=8192 +#CONFIG_NET_TCP_WORKQ_STACK_SIZE=4096 +#CONFIG_NET_TX_STACK_SIZE=4096 +#CONFIG_NET_RX_STACK_SIZE=4096 +#CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096 +#CONFIG_ZPERF_WORK_Q_STACK_SIZE=4096 +#CONFIG_MAIN_STACK_SIZE=4096 +#CONFIG_IDLE_STACK_SIZE=2048 + +# comment out for -O0 +CONFIG_CODE_DATA_RELOCATION_SRAM=y \ No newline at end of file diff --git a/variants/frdm_rw612_rw612/frdm_rw612_rw612.overlay b/variants/frdm_rw612_rw612/frdm_rw612_rw612.overlay new file mode 100644 index 000000000..9096cf106 --- /dev/null +++ b/variants/frdm_rw612_rw612/frdm_rw612_rw612.overlay @@ -0,0 +1,33 @@ +/* + * Copyright (c) Arduino s.r.l. and/or its affiliated companies + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&zephyr_udc0 { + status = "okay"; + board_cdc_acm_uart: board_cdc_acm_uart { + compatible = "zephyr,cdc-acm-uart"; + status = "okay"; + }; +}; + +&flexspi { + w25q512jvfiq: w25q512jvfiq@0 { + partitions { + user_sketch: partition@323000 { + reg = <0x00323000 (DT_SIZE_M(3) - 0x3000)>; + }; + }; + }; +}; + +/ { + zephyr,user { + digital-pin-gpios = <&hsgpio0 12 GPIO_ACTIVE_LOW>; + builtin-led-gpios = <&hsgpio0 12 GPIO_ACTIVE_LOW>; + cdc-acm-serial = <&board_cdc_acm_uart>; /* 'Serial' object is managed by SerialUSB */ + i2cs = <&arduino_i2c>; + spis = <&flexcomm1>; + }; +}; diff --git a/variants/frdm_rw612_rw612/variant.h b/variants/frdm_rw612_rw612/variant.h new file mode 100644 index 000000000..f6837f622 --- /dev/null +++ b/variants/frdm_rw612_rw612/variant.h @@ -0,0 +1,13 @@ +/* + * Copyright (c) Arduino s.r.l. and/or its affiliated companies + * + * SPDX-License-Identifier: Apache-2.0 + */ + +// TODO: correctly handle these legacy defines +#define MOSI 0 +#define MISO 0 +#define SCK 0 +#define SS 0 +#define SDA 0 +#define SCL 0 From 3288ce06aad210b504fb75b8232f4c7989dbe56d Mon Sep 17 00:00:00 2001 From: TOKITA Hiroshi Date: Sat, 4 Jul 2026 08:20:24 +0900 Subject: [PATCH 3/3] variants: Add support for Renesas EK-RA8D1 Add configuration files for Renesas EK-RA8D1. We have confirmed that it compiles when used in combination with https://github.com/arduino/zephyr/tree/zephyr-arduino-v4.2.0. Co-authored-by: Luca Burelli Signed-off-by: TOKITA Hiroshi --- .../ek_ra8d1_r7fa8d1bhecbd.conf | 6 +++ .../ek_ra8d1_r7fa8d1bhecbd.overlay | 43 +++++++++++++++++++ variants/ek_ra8d1_r7fa8d1bhecbd/variant.h | 13 ++++++ 3 files changed, 62 insertions(+) create mode 100644 variants/ek_ra8d1_r7fa8d1bhecbd/ek_ra8d1_r7fa8d1bhecbd.conf create mode 100644 variants/ek_ra8d1_r7fa8d1bhecbd/ek_ra8d1_r7fa8d1bhecbd.overlay create mode 100644 variants/ek_ra8d1_r7fa8d1bhecbd/variant.h diff --git a/variants/ek_ra8d1_r7fa8d1bhecbd/ek_ra8d1_r7fa8d1bhecbd.conf b/variants/ek_ra8d1_r7fa8d1bhecbd/ek_ra8d1_r7fa8d1bhecbd.conf new file mode 100644 index 000000000..2ec9d851f --- /dev/null +++ b/variants/ek_ra8d1_r7fa8d1bhecbd/ek_ra8d1_r7fa8d1bhecbd.conf @@ -0,0 +1,6 @@ +# Copyright (c) Arduino s.r.l. and/or its affiliated companies +# SPDX-License-Identifier: Apache-2.0 + + +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=480000000 +CONFIG_BUILD_OUTPUT_BIN=n \ No newline at end of file diff --git a/variants/ek_ra8d1_r7fa8d1bhecbd/ek_ra8d1_r7fa8d1bhecbd.overlay b/variants/ek_ra8d1_r7fa8d1bhecbd/ek_ra8d1_r7fa8d1bhecbd.overlay new file mode 100644 index 000000000..2f0a54fb4 --- /dev/null +++ b/variants/ek_ra8d1_r7fa8d1bhecbd/ek_ra8d1_r7fa8d1bhecbd.overlay @@ -0,0 +1,43 @@ +/* + * Copyright (c) Arduino s.r.l. and/or its affiliated companies + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&iic1 { + status = "okay"; +}; + +&uart9 { + status = "okay"; +}; + +&flash0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + user_sketch: partition@32000 { + reg = <0x32000 DT_SIZE_K(56)>; + }; + }; +}; + +/ { + zephyr,user { + digital-pin-gpios = <&ioport6 0 GPIO_ACTIVE_HIGH>, + <&ioport4 14 GPIO_ACTIVE_HIGH>, + <&ioport1 7 GPIO_ACTIVE_HIGH>; + + builtin-led-gpios = <&ioport6 0 GPIO_ACTIVE_HIGH>, + <&ioport4 14 GPIO_ACTIVE_HIGH>, + <&ioport1 7 GPIO_ACTIVE_HIGH>; + + serials = <&uart9>; + i2cs = <&iic1>; + spis = <&spi0>; + }; +}; diff --git a/variants/ek_ra8d1_r7fa8d1bhecbd/variant.h b/variants/ek_ra8d1_r7fa8d1bhecbd/variant.h new file mode 100644 index 000000000..68c33a896 --- /dev/null +++ b/variants/ek_ra8d1_r7fa8d1bhecbd/variant.h @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2022 Dhruva Gole + * + * SPDX-License-Identifier: Apache-2.0 + */ + +// TODO: correctly handle these legacy defines +#define MOSI 0 +#define MISO 0 +#define SCK 0 +#define SS 0 +#define SDA 0 +#define SCL 0