diff --git a/boards.txt b/boards.txt index ee8018487..cd3801c15 100644 --- a/boards.txt +++ b/boards.txt @@ -444,7 +444,7 @@ nicla_sense.upload.native_usb=true nicla_sense.upload.maximum_size=527616 nicla_sense.upload.maximum_data_size=64288 nicla_sense.programmer.protocol=cmsis-dap -nicla_sense.programmer.transport_script={runtime.platform.path}/debugger/select_swd.cfg +nicla_sense.programmer.transport_script="{runtime.platform.path}/debugger/select_swd.cfg" nicla_sense.bootloader.tool=openocd nicla_sense.bootloader.tool.default=openocd @@ -499,7 +499,7 @@ nicla_voice.upload.native_usb=true nicla_voice.upload.maximum_size=527616 nicla_voice.upload.maximum_data_size=64288 nicla_voice.programmer.protocol=cmsis-dap -nicla_voice.programmer.transport_script={runtime.platform.path}/debugger/select_swd.cfg +nicla_voice.programmer.transport_script="{runtime.platform.path}/debugger/select_swd.cfg" nicla_voice.bootloader.tool=openocd nicla_voice.bootloader.tool.default=openocd @@ -767,6 +767,9 @@ giga.menu.split.100_0=2MB M7 + M4 in SDRAM giga.menu.split.75_25=1.5MB M7 + 0.5MB M4 giga.menu.split.50_50=1MB M7 + 1MB M4 +giga.menu.security.none=None +giga.menu.security.sien=Signature + Encryption + giga.menu.target_core.cm7.build.variant=GIGA giga.menu.target_core.cm7.build.mcu=cortex-m7 giga.menu.target_core.cm7.build.fpu=-mfpu=fpv5-d16 @@ -792,6 +795,14 @@ giga.build.board=GIGA giga.build.ldscript=linker_script.ld giga.build.extra_ldflags=-DCM4_BINARY_START=0x08180000 giga.compiler.mbed.arch.define= +giga.build.slot_size=0x1E0000 +giga.build.header_size=0x20000 +giga.build.alignment=32 +giga.build.version=1.2.3+4 +giga.menu.security.sien.recipe.hooks.objcopy.postobjcopy.1.pattern="{tools.imgtool.path}/{tools.imgtool.cmd}" {tools.imgtool.flags} +giga.menu.security.sien.build.keys.keychain={runtime.platform.path}/libraries/MCUboot/default_keys +giga.menu.security.sien.build.keys.sign_key=ecdsa-p256-signing-priv-key.pem +giga.menu.security.sien.build.keys.encrypt_key=ecdsa-p256-encrypt-pub-key.pem giga.compiler.mbed.defines={build.variant.path}/defines.txt giga.compiler.mbed.ldflags={build.variant.path}/ldflags.txt giga.compiler.mbed.cflags={build.variant.path}/cflags.txt @@ -825,7 +836,12 @@ giga.upload.native_usb=true giga.upload.maximum_size=1966080 giga.upload.maximum_data_size=523624 -giga.menu.target_core.cm7.upload.address=0x08040000 +giga.menu.security.none.upload.interface=0 +giga.menu.security.sien.upload.interface=2 + +giga.menu.security.none.upload.address_m7=0x08040000 +giga.menu.security.sien.upload.address_m7=0xA0000000 +giga.menu.target_core.cm7.upload.address={upload.address_m7} giga.menu.target_core.cm7.menu.split.50_50.upload.maximum_size=786432 giga.menu.target_core.cm7.menu.split.75_25.upload.maximum_size=1441792 @@ -855,4 +871,58 @@ giga.debug.server.openocd.scripts.1={programmer.transport_script} giga.debug.server.openocd.scripts.2=target/stm32h7x_dual_bank.cfg giga.debug.cortex-debug.custom.request=attach giga.menu.target_core.cm7.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd -giga.menu.target_core.cm4.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM4.svd \ No newline at end of file +giga.menu.target_core.cm4.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM4.svd + +############################################################## + +stella.name=Arduino Stella +stella.build.core=arduino +stella.build.crossprefix=arm-none-eabi- +stella.build.compiler_path={runtime.tools.arm-none-eabi-gcc-7-2017q4.path}/bin/ + +stella.build.variant=STELLA +stella.build.mcu=cortex-m4 +stella.build.extra_flags= +stella.build.architecture=cortex-m4 +stella.build.fpu=-mfpu=fpv4-sp-d16 +stella.build.float-abi=-mfloat-abi=softfp +stella.build.board=STELLA +stella.build.ldscript=linker_script.ld +stella.compiler.mbed.arch.define=-DARDUINO_ARCH_NRF52840 +stella.compiler.mbed.defines={build.variant.path}/defines.txt +stella.compiler.mbed.ldflags={build.variant.path}/ldflags.txt +stella.compiler.mbed.cflags={build.variant.path}/cflags.txt +stella.compiler.mbed.cxxflags={build.variant.path}/cxxflags.txt +stella.compiler.mbed.includes={build.variant.path}/includes.txt +stella.compiler.mbed.extra_ldflags=-lstdc++ -lsupc++ -lm -lc -lgcc -lnosys +stella.compiler.mbed="{build.variant.path}/libs/libmbed.a" "{build.variant.path}/libs/libcc_310_core.a" "{build.variant.path}/libs/libcc_310_ext.a" "{build.variant.path}/libs/libcc_310_trng.a" +stella.vid.0=0x2341 +stella.pid.0=0x005a +stella.vid.1=0x2341 +stella.pid.1=0x0076 +stella.upload_port.0.vid=0x2341 +stella.upload_port.0.pid=0x005a +stella.upload_port.1.vid=0x2341 +stella.upload_port.1.pid=0x0076 + +stella.upload.tool=bossac +stella.upload.tool.default=bossac +stella.upload.protocol= +stella.upload.transport= +stella.upload.use_1200bps_touch=true +stella.upload.wait_for_upload_port=true +stella.upload.native_usb=true +stella.upload.maximum_size=983040 +stella.upload.maximum_data_size=262144 + +stella.bootloader.tool=openocd +stella.bootloader.tool.default=openocd +stella.bootloader.extra_action.preflash=echo INFO:removed_mass-erase +stella.bootloader.config=-f target/nrf52.cfg +stella.bootloader.programmer=-f interface/cmsis-dap.cfg +stella.bootloader.file=nano33ble/bootloader.hex + +stella.debug.server.openocd.scripts.0=interface/{programmer.protocol}.cfg +stella.debug.server.openocd.scripts.1={programmer.transport_script} +stella.debug.server.openocd.scripts.2=target/nrf52.cfg +stella.debug.svd_file={runtime.platform.path}/svd/nrf52840.svd diff --git a/cores/arduino/mbed/connectivity/cellular/include/cellular/framework/API/CellularDevice.h b/cores/arduino/mbed/connectivity/cellular/include/cellular/framework/API/CellularDevice.h index 0c8d1a2db..69455e156 100644 --- a/cores/arduino/mbed/connectivity/cellular/include/cellular/framework/API/CellularDevice.h +++ b/cores/arduino/mbed/connectivity/cellular/include/cellular/framework/API/CellularDevice.h @@ -201,6 +201,17 @@ class CellularDevice { */ virtual nsapi_error_t soft_power_off() = 0; + /** Resets the modem via AT command + * + * @remark CellularStateMachine disconnect or destruct does not reset the modem, + * but you need to do that yourself. + * + * @pre You must call shutdown to prepare the modem for reset. + * + * @return NSAPI_ERROR_OK on success + */ + virtual nsapi_error_t soft_reset() = 0; + /** Open the SIM card by setting the pin code for SIM. * * @param sim_pin PIN for the SIM card diff --git a/cores/arduino/mbed/connectivity/cellular/include/cellular/framework/AT/AT_CellularDevice.h b/cores/arduino/mbed/connectivity/cellular/include/cellular/framework/AT/AT_CellularDevice.h index fa011a096..0006b6c39 100755 --- a/cores/arduino/mbed/connectivity/cellular/include/cellular/framework/AT/AT_CellularDevice.h +++ b/cores/arduino/mbed/connectivity/cellular/include/cellular/framework/AT/AT_CellularDevice.h @@ -80,6 +80,8 @@ class AT_CellularDevice : public CellularDevice { virtual nsapi_error_t soft_power_off(); + virtual nsapi_error_t soft_reset(); + virtual nsapi_error_t set_pin(const char *sim_pin); virtual nsapi_error_t get_sim_state(SimState &state); diff --git a/cores/arduino/mbed/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h b/cores/arduino/mbed/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h index 21d588838..edc980209 100644 --- a/cores/arduino/mbed/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h +++ b/cores/arduino/mbed/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h @@ -55,6 +55,9 @@ class GEMALTO_CINTERION : public AT_CellularDevice { protected: virtual nsapi_error_t init(); + virtual nsapi_error_t shutdown(); + virtual nsapi_error_t soft_power_off(); + virtual nsapi_error_t soft_reset(); private: static Module _module; diff --git a/cores/arduino/mbed/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h b/cores/arduino/mbed/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h index f89da8c31..159ea68aa 100644 --- a/cores/arduino/mbed/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h +++ b/cores/arduino/mbed/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h @@ -43,6 +43,7 @@ class GEMALTO_CINTERION_CellularStack : public AT_CellularStack { void stopGNSS(); void PSMEnable(); void PSMDisable(); + int ping(const char *host, int ttl); protected: diff --git a/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/PinNames.h b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/PinNames.h new file mode 100644 index 000000000..b4ef8a160 --- /dev/null +++ b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/PinNames.h @@ -0,0 +1,246 @@ +/* + * Copyright (c) 2019 Arduino SA + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* MBED TARGET LIST: ARDUINO_NANO33BLE */ + +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" +#include "nrf_gpio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +///> define macro producing for example Px_y = NRF_GPIO_PIN_MAP(x, y) +#define PinDef(port_num, pin_num) P##port_num##_##pin_num = NRF_GPIO_PIN_MAP(port_num, pin_num) + + +typedef enum { + PinDef(0 , 0), // P0_0 = 0... + PinDef(0 , 1), + PinDef(0 , 2), + PinDef(0 , 3), + PinDef(0 , 4), + PinDef(0 , 5), + PinDef(0 , 6), + PinDef(0 , 7), + PinDef(0 , 8), + PinDef(0 , 9), + PinDef(0 , 10), + PinDef(0 , 11), + PinDef(0 , 12), + PinDef(0 , 13), + PinDef(0 , 14), + PinDef(0 , 15), + PinDef(0 , 16), + PinDef(0 , 17), + PinDef(0 , 18), + PinDef(0 , 19), + PinDef(0 , 20), + PinDef(0 , 21), + PinDef(0 , 22), + PinDef(0 , 23), + PinDef(0 , 24), + PinDef(0 , 25), + PinDef(0 , 26), + PinDef(0 , 27), + PinDef(0 , 28), + PinDef(0 , 29), + PinDef(0 , 30), + PinDef(0 , 31), + + PinDef(1 , 0), //P1_1 = 32... + PinDef(1 , 1), + PinDef(1 , 2), + PinDef(1 , 3), + PinDef(1 , 4), + PinDef(1 , 5), + PinDef(1 , 6), + PinDef(1 , 7), + PinDef(1 , 8), + PinDef(1 , 9), + PinDef(1 , 10), + PinDef(1 , 11), + PinDef(1 , 12), + PinDef(1 , 13), + PinDef(1 , 14), + PinDef(1 , 15), + + // Port0 + p0 = P0_0, + p1 = P0_1, + p2 = P0_2, + p3 = P0_3, + p4 = P0_4, + p5 = P0_5, + p6 = P0_6, + p7 = P0_7, + p8 = P0_8, + p9 = P0_9, + p10 = P0_10, + p11 = P0_11, + p12 = P0_12, + p13 = P0_13, + p14 = P0_14, + p15 = P0_15, + p16 = P0_16, + p17 = P0_17, + p18 = P0_18, + p19 = P0_19, + p20 = P0_20, + p21 = P0_21, + p22 = P0_22, + p23 = P0_23, + p24 = P0_24, + p25 = P0_25, + p26 = P0_26, + p27 = P0_27, + p28 = P0_28, + p29 = P0_29, + p30 = P0_30, + p31 = P0_31, + + // Port1 + p32 = P1_0, + p33 = P1_1, + p34 = P1_2, + p35 = P1_3, + p36 = P1_4, + p37 = P1_5, + p38 = P1_6, + p39 = P1_7, + p40 = P1_8, + p41 = P1_9, + p42 = P1_10, + p43 = P1_11, + p44 = P1_12, + p45 = P1_13, + p46 = P1_14, + p47 = P1_15, + + RX_PIN_NUMBER = P1_10, + TX_PIN_NUMBER = P1_3, + + LED_BUILTIN = P0_13, + LED_POWER = P1_9, + + LED_RED = p24, + LED_GREEN = p16, + LED_BLUE = p6, + + LED1 = LED_BUILTIN, + LED2 = LED_RED, + LED3 = LED_GREEN, + LED4 = LED_BLUE, + + // mBed interface Pins + CONSOLE_TX = TX_PIN_NUMBER, + CONSOLE_RX = RX_PIN_NUMBER, +#if defined(MBED_CONF_TARGET_STDIO_UART_TX) + STDIO_UART_TX = MBED_CONF_TARGET_STDIO_UART_TX, +#else + STDIO_UART_TX = CONSOLE_TX, +#endif +#if defined(MBED_CONF_TARGET_STDIO_UART_RX) + STDIO_UART_RX = MBED_CONF_TARGET_STDIO_UART_RX, +#else + STDIO_UART_RX = CONSOLE_RX, +#endif + + SPI_PSELMOSI0 = P1_1, + SPI_PSELMISO0 = P1_8, + SPI_PSELSS0 = P1_2, + SPI_PSELSCK0 = P0_13, + + SPIS_PSELMOSI = P1_1, + SPIS_PSELMISO = P1_8, + SPIS_PSELSS = P1_2, + SPIS_PSELSCK = P0_13, + + I2C_SDA0 = p31, + I2C_SCL0 = p2, + +#ifndef ARDUINO_ARCH_MBED + // Digital Pins + D2 = P1_11, + D3 = P1_12, + D4 = P1_15, + D5 = P1_13, + D6 = P1_14, + D7 = P0_23, + D8 = P0_21, + D9 = P0_27, + D10 = P1_2, + D11 = P1_1, + D12 = P1_8, + D13 = P0_13, + + // Analog Pins + A0 = p4, + A1 = p5, + A2 = p30, + A3 = p29, + A4 = p31, + A5 = p2, + A6 = p28, + A7 = p3, +#endif + + AIN0 = p4, + AIN1 = p5, + AIN2 = p30, + AIN3 = p29, + AIN6 = p28, + AIN7 = p3, + + // Arduino Nano 33 BLE Sense Pins + VDD_ENV = p22, + INT_APDS = p19, + + I2C_SDA1 = p14, + I2C_SCL1 = p15, + + MIC_PWR = p17, + PDM_CLK = p26, + PDM_DIN = p25, + + // Not connected + NC = (int)0xFFFFFFFF, + + STDIO_UART_RTS = NC, + STDIO_UART_CTS = NC, + +} PinName; + +typedef enum { + PullNone = 0, + PullDown = 1, + PullUp = 3, + PullDefault = PullUp +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/device.h b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/device.h new file mode 100644 index 000000000..a086e5b7f --- /dev/null +++ b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/device.h @@ -0,0 +1,39 @@ +// The 'features' section in 'target.json' is now used to create the device's hardware preprocessor switches. +// Check the 'features' section of the target description in 'targets.json' for more details. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + + + + + + + + + + + + + + + + +#include "objects.h" + +#endif diff --git a/extras/mbed_edge-tag.template.json b/extras/mbed_edge-tag.template.json new file mode 100644 index 000000000..edbf719e8 --- /dev/null +++ b/extras/mbed_edge-tag.template.json @@ -0,0 +1,53 @@ +{ + "packages": [ + { + "platforms": [ + { + "name": "Arduino Mbed OS Edge Boards", + "architecture": "mbed_edge", + "version": "%%VERSION%%", + "category": "Arduino", + "url": "http://downloads.arduino.cc/cores/staging/%%EDGE_FILENAME%%", + "archiveFileName": "%%EDGE_FILENAME%%", + "checksum": "SHA-256:%%EDGE_CHECKSUM%%", + "size": "%%EDGE_SIZE%%", + "help": { + "online": "https://github.com/arduino/ArduinoCore-mbed/issues" + }, + "boards": [ + { + "name": "Arduino Edge Control" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.9.1-arduino2" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.10.0-arduino1" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.11.0-arduino2" + }, + { + "packager": "arduino", + "name": "rp2040tools", + "version": "1.0.6" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/extras/mbed_giga-tag.template.json b/extras/mbed_giga-tag.template.json new file mode 100644 index 000000000..a63c6576f --- /dev/null +++ b/extras/mbed_giga-tag.template.json @@ -0,0 +1,48 @@ +{ + "packages": [ + { + "platforms": [ + { + "name": "Arduino Mbed OS Giga Boards", + "architecture": "mbed_giga", + "version": "%%VERSION%%", + "category": "Arduino", + "url": "http://downloads.arduino.cc/cores/staging/%%GIGA_FILENAME%%", + "archiveFileName": "%%GIGA_FILENAME%%", + "checksum": "SHA-256:%%GIGA_CHECKSUM%%", + "size": "%%GIGA_SIZE%%", + "help": { + "online": "https://github.com/arduino/ArduinoCore-mbed/issues" + }, + "boards": [ + { + "name": "Arduino Giga" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.10.0-arduino1" + }, + { + "packager": "arduino", + "name": "imgtool", + "version": "1.8.0-arduino.2" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.11.0-arduino2" + } + ] + } + ] + } + ] +} diff --git a/extras/mbed_nano-tag.template.json b/extras/mbed_nano-tag.template.json new file mode 100644 index 000000000..944622f48 --- /dev/null +++ b/extras/mbed_nano-tag.template.json @@ -0,0 +1,59 @@ +{ + "packages": [ + { + "platforms": [ + { + "name": "Arduino Mbed OS Nano Boards", + "architecture": "mbed_nano", + "version": "%%VERSION%%", + "category": "Arduino", + "url": "http://downloads.arduino.cc/cores/staging/%%NANO_FILENAME%%", + "archiveFileName": "%%NANO_FILENAME%%", + "checksum": "SHA-256:%%NANO_CHECKSUM%%", + "size": "%%NANO_SIZE%%", + "help": { + "online": "https://github.com/arduino/ArduinoCore-mbed/issues" + }, + "boards": [ + { + "name": "Arduino Nano 33 BLE" + }, + { + "name": "Arduino Nano 33 BLE Sense" + }, + { + "name": "Arduino Nano RP2040 Connect" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.9.1-arduino2" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.10.0-arduino1" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.11.0-arduino2" + }, + { + "packager": "arduino", + "name": "rp2040tools", + "version": "1.0.6" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/extras/mbed_nicla-tag.template.json b/extras/mbed_nicla-tag.template.json new file mode 100644 index 000000000..4cffeb9c5 --- /dev/null +++ b/extras/mbed_nicla-tag.template.json @@ -0,0 +1,59 @@ +{ + "packages": [ + { + "platforms": [ + { + "name": "Arduino Mbed OS Nicla Boards", + "architecture": "mbed_nicla", + "version": "%%VERSION%%", + "category": "Arduino", + "url": "http://downloads.arduino.cc/cores/staging/%%NICLA_FILENAME%%", + "archiveFileName": "%%NICLA_FILENAME%%", + "checksum": "SHA-256:%%NICLA_CHECKSUM%%", + "size": "%%NICLA_SIZE%%", + "help": { + "online": "https://github.com/arduino/ArduinoCore-mbed/issues" + }, + "boards": [ + { + "name": "Nicla Sense ME" + }, + { + "name": "Nicla Voice" + }, + { + "name": "Nicla Vision" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.9.1-arduino2" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.10.0-arduino1" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.11.0-arduino2" + }, + { + "packager": "arduino", + "name": "rp2040tools", + "version": "1.0.6" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/extras/mbed_opta-tag.template.json b/extras/mbed_opta-tag.template.json new file mode 100644 index 000000000..d76b89e49 --- /dev/null +++ b/extras/mbed_opta-tag.template.json @@ -0,0 +1,48 @@ +{ + "packages": [ + { + "platforms": [ + { + "name": "Arduino Mbed OS Opta Boards", + "architecture": "mbed_opta", + "version": "%%VERSION%%", + "category": "Arduino", + "url": "http://downloads.arduino.cc/cores/staging/%%OPTA_FILENAME%%", + "archiveFileName": "%%OPTA_FILENAME%%", + "checksum": "SHA-256:%%OPTA_CHECKSUM%%", + "size": "%%OPTA_SIZE%%", + "help": { + "online": "https://github.com/arduino/ArduinoCore-mbed/issues" + }, + "boards": [ + { + "name": "Arduino Finder Opta" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.10.0-arduino1" + }, + { + "packager": "arduino", + "name": "imgtool", + "version": "1.8.0-arduino.2" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.11.0-arduino2" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/extras/mbed_portenta-tag.template.json b/extras/mbed_portenta-tag.template.json new file mode 100644 index 000000000..e73501f94 --- /dev/null +++ b/extras/mbed_portenta-tag.template.json @@ -0,0 +1,56 @@ +{ + "packages": [ + { + "platforms": [ + { + "name": "Arduino Mbed OS Portenta Boards", + "architecture": "mbed_portenta", + "version": "%%VERSION%%", + "category": "Arduino", + "url": "http://downloads.arduino.cc/cores/staging/%%PORTENTA_FILENAME%%", + "archiveFileName": "%%PORTENTA_FILENAME%%", + "checksum": "SHA-256:%%PORTENTA_CHECKSUM%%", + "size": "%%PORTENTA_SIZE%%", + "help": { + "online": "https://github.com/arduino/ArduinoCore-mbed/issues" + }, + "boards": [ + { + "name": "Arduino Portenta H7" + }, + { + "name": "Arduino Portenta X8" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "adb", + "version": "32.0.0" + }, + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.10.0-arduino1" + }, + { + "packager": "arduino", + "name": "imgtool", + "version": "1.8.0-arduino.2" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.11.0-arduino2" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/extras/mbed_rp2040-tag.template.json b/extras/mbed_rp2040-tag.template.json new file mode 100644 index 000000000..424ffe18c --- /dev/null +++ b/extras/mbed_rp2040-tag.template.json @@ -0,0 +1,53 @@ +{ + "packages": [ + { + "platforms": [ + { + "name": "Arduino Mbed OS RP2040 Boards", + "architecture": "mbed_rp2040", + "version": "%%VERSION%%", + "category": "Arduino", + "url": "http://downloads.arduino.cc/cores/staging/%%RP2040_FILENAME%%", + "archiveFileName": "%%RP2040_FILENAME%%", + "checksum": "SHA-256:%%RP2040_CHECKSUM%%", + "size": "%%RP2040_SIZE%%", + "help": { + "online": "https://github.com/arduino/ArduinoCore-mbed/issues" + }, + "boards": [ + { + "name": "Raspberry Pi Pico" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.9.1-arduino2" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.10.0-arduino1" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.11.0-arduino2" + }, + { + "packager": "arduino", + "name": "rp2040tools", + "version": "1.0.6" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/extras/mbed_stella-tag.template.json b/extras/mbed_stella-tag.template.json new file mode 100644 index 000000000..d54eef818 --- /dev/null +++ b/extras/mbed_stella-tag.template.json @@ -0,0 +1,53 @@ +{ + "packages": [ + { + "platforms": [ + { + "name": "Arduino Mbed OS Stella Boards", + "architecture": "mbed_stella", + "version": "%%VERSION%%", + "category": "Arduino", + "url": "http://downloads.arduino.cc/cores/staging/%%STELLA_FILENAME%%", + "archiveFileName": "%%STELLA_FILENAME%%", + "checksum": "SHA-256:%%STELLA_CHECKSUM%%", + "size": "%%STELLA_SIZE%%", + "help": { + "online": "https://github.com/arduino/ArduinoCore-mbed/issues" + }, + "boards": [ + { + "name": "Arduino Stella" + } + ], + "toolsDependencies": [ + { + "packager": "arduino", + "name": "arm-none-eabi-gcc", + "version": "7-2017q4" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.9.1-arduino2" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.10.0-arduino1" + }, + { + "packager": "arduino", + "name": "openocd", + "version": "0.11.0-arduino2" + }, + { + "packager": "arduino", + "name": "rp2040tools", + "version": "1.0.6" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/extras/package_index.json.NewTag.template b/extras/package_index.json.NewTag.template deleted file mode 100644 index df360e171..000000000 --- a/extras/package_index.json.NewTag.template +++ /dev/null @@ -1,408 +0,0 @@ -{ - "packages": [ - { - "name": "arduino", - "maintainer": "Arduino", - "websiteURL": "http://www.arduino.cc/", - "email": "packages@arduino.cc", - "help": { - "online": "http://www.arduino.cc/en/Reference/HomePage" - }, - "platforms": [ - { - "name": "[DEPRECATED - Please install standalone packages] Arduino Mbed OS Boards", - "architecture": "mbed", - "version": "%%VERSION%%", - "deprecated": true, - "category": "Arduino", - "url": "http://downloads.arduino.cc/cores/staging/%%FILENAME%%", - "archiveFileName": "%%FILENAME%%", - "checksum": "SHA-256:%%CHECKSUM%%", - "size": "%%SIZE%%", - "help": { - "online": "https://github.com/arduino/ArduinoCore-mbed/issues" - }, - "boards": [ - { - "name": "Arduino Nano 33 BLE" - }, - { - "name": "Arduino Nano 33 BLE Sense" - }, - { - "name": "Arduino Nano RP2040 Connect" - }, - { - "name": "Arduino Portenta H7" - }, - { - "name": "Arduino Edge Control" - }, - { - "name": "Raspberry Pi Pico" - }, - { - "name": "Nicla Sense ME" - }, - { - "name": "Arduino Nicla Vision" - } - ], - "toolsDependencies": [ - { - "packager": "arduino", - "name": "openocd", - "version": "0.11.0-arduino2" - }, - { - "packager": "arduino", - "name": "arm-none-eabi-gcc", - "version": "7-2017q4" - }, - { - "packager": "arduino", - "name": "bossac", - "version": "1.9.1-arduino2" - }, - { - "packager": "arduino", - "version": "0.10.0-arduino1", - "name": "dfu-util" - }, - { - "packager": "arduino", - "version": "1.0.6", - "name": "rp2040tools" - }, - { - "packager": "arduino", - "version": "1.8.0-arduino.2", - "name": "imgtool" - } - ] - }, - { - "name": "Arduino Mbed OS Edge Boards", - "architecture": "mbed_edge", - "version": "%%VERSION%%", - "category": "Arduino", - "url": "http://downloads.arduino.cc/cores/staging/%%EDGE_FILENAME%%", - "archiveFileName": "%%EDGE_FILENAME%%", - "checksum": "SHA-256:%%EDGE_CHECKSUM%%", - "size": "%%EDGE_SIZE%%", - "help": { - "online": "https://github.com/arduino/ArduinoCore-mbed/issues" - }, - "boards": [ - { - "name": "Arduino Edge Control" - } - ], - "toolsDependencies": [ - { - "packager": "arduino", - "name": "openocd", - "version": "0.11.0-arduino2" - }, - { - "packager": "arduino", - "name": "arm-none-eabi-gcc", - "version": "7-2017q4" - }, - { - "packager": "arduino", - "name": "bossac", - "version": "1.9.1-arduino2" - }, - { - "packager": "arduino", - "version": "0.10.0-arduino1", - "name": "dfu-util" - }, - { - "packager": "arduino", - "version": "1.0.6", - "name": "rp2040tools" - } - ] - }, - { - "name": "Arduino Mbed OS Nano Boards", - "architecture": "mbed_nano", - "version": "%%VERSION%%", - "category": "Arduino", - "url": "http://downloads.arduino.cc/cores/staging/%%NANO_FILENAME%%", - "archiveFileName": "%%NANO_FILENAME%%", - "checksum": "SHA-256:%%NANO_CHECKSUM%%", - "size": "%%NANO_SIZE%%", - "help": { - "online": "https://github.com/arduino/ArduinoCore-mbed/issues" - }, - "boards": [ - { - "name": "Arduino Nano 33 BLE" - }, - { - "name": "Arduino Nano 33 BLE Sense" - }, - { - "name": "Arduino Nano RP2040 Connect" - } - ], - "toolsDependencies": [ - { - "packager": "arduino", - "name": "openocd", - "version": "0.11.0-arduino2" - }, - { - "packager": "arduino", - "name": "arm-none-eabi-gcc", - "version": "7-2017q4" - }, - { - "packager": "arduino", - "name": "bossac", - "version": "1.9.1-arduino2" - }, - { - "packager": "arduino", - "version": "0.10.0-arduino1", - "name": "dfu-util" - }, - { - "packager": "arduino", - "version": "1.0.6", - "name": "rp2040tools" - } - ] - }, - { - "name": "Arduino Mbed OS Portenta Boards", - "architecture": "mbed_portenta", - "version": "%%VERSION%%", - "category": "Arduino", - "url": "http://downloads.arduino.cc/cores/staging/%%PORTENTA_FILENAME%%", - "archiveFileName": "%%PORTENTA_FILENAME%%", - "checksum": "SHA-256:%%PORTENTA_CHECKSUM%%", - "size": "%%PORTENTA_SIZE%%", - "help": { - "online": "https://github.com/arduino/ArduinoCore-mbed/issues" - }, - "boards": [ - { - "name": "Arduino Portenta H7" - }, - { - "name": "Arduino Portenta X8" - } - ], - "toolsDependencies": [ - { - "packager": "arduino", - "name": "openocd", - "version": "0.11.0-arduino2" - }, - { - "packager": "arduino", - "name": "arm-none-eabi-gcc", - "version": "7-2017q4" - }, - { - "packager": "arduino", - "version": "0.10.0-arduino1", - "name": "dfu-util" - }, - { - "packager": "arduino", - "version": "1.8.0-arduino.2", - "name": "imgtool" - }, - { - "packager": "arduino", - "version": "32.0.0", - "name": "adb" - } - ] - }, - { - "name": "Arduino Mbed OS RP2040 Boards", - "architecture": "mbed_rp2040", - "version": "%%VERSION%%", - "category": "Arduino", - "url": "http://downloads.arduino.cc/cores/staging/%%RP2040_FILENAME%%", - "archiveFileName": "%%RP2040_FILENAME%%", - "checksum": "SHA-256:%%RP2040_CHECKSUM%%", - "size": "%%RP2040_SIZE%%", - "help": { - "online": "https://github.com/arduino/ArduinoCore-mbed/issues" - }, - "boards": [ - { - "name": "Raspberry Pi Pico" - } - ], - "toolsDependencies": [ - { - "packager": "arduino", - "name": "openocd", - "version": "0.11.0-arduino2" - }, - { - "packager": "arduino", - "name": "arm-none-eabi-gcc", - "version": "7-2017q4" - }, - { - "packager": "arduino", - "name": "bossac", - "version": "1.9.1-arduino2" - }, - { - "packager": "arduino", - "version": "0.10.0-arduino1", - "name": "dfu-util" - }, - { - "packager": "arduino", - "version": "1.0.6", - "name": "rp2040tools" - } - ] - }, - { - "name": "Arduino Mbed OS Nicla Boards", - "architecture": "mbed_nicla", - "version": "%%VERSION%%", - "category": "Arduino", - "url": "http://downloads.arduino.cc/cores/staging/%%NICLA_FILENAME%%", - "archiveFileName": "%%NICLA_FILENAME%%", - "checksum": "SHA-256:%%NICLA_CHECKSUM%%", - "size": "%%NICLA_SIZE%%", - "help": { - "online": "https://github.com/arduino/ArduinoCore-mbed/issues" - }, - "boards": [ - { - "name": "Nicla Sense ME" - }, - { - "name": "Nicla Voice" - }, - { - "name": "Nicla Vision" - } - ], - "toolsDependencies": [ - { - "packager": "arduino", - "name": "openocd", - "version": "0.11.0-arduino2" - }, - { - "packager": "arduino", - "name": "arm-none-eabi-gcc", - "version": "7-2017q4" - }, - { - "packager": "arduino", - "name": "bossac", - "version": "1.9.1-arduino2" - }, - { - "packager": "arduino", - "version": "0.10.0-arduino1", - "name": "dfu-util" - }, - { - "packager": "arduino", - "version": "1.0.6", - "name": "rp2040tools" - } - ] - }, - { - "name": "Arduino Mbed OS Opta Boards", - "architecture": "mbed_opta", - "version": "%%VERSION%%", - "category": "Arduino", - "url": "http://downloads.arduino.cc/cores/staging/%%OPTA_FILENAME%%", - "archiveFileName": "%%OPTA_FILENAME%%", - "checksum": "SHA-256:%%OPTA_CHECKSUM%%", - "size": "%%OPTA_SIZE%%", - "help": { - "online": "https://github.com/arduino/ArduinoCore-mbed/issues" - }, - "boards": [ - { - "name": "Arduino Finder Opta" - } - ], - "toolsDependencies": [ - { - "packager": "arduino", - "name": "openocd", - "version": "0.11.0-arduino2" - }, - { - "packager": "arduino", - "name": "arm-none-eabi-gcc", - "version": "7-2017q4" - }, - { - "packager": "arduino", - "version": "0.10.0-arduino1", - "name": "dfu-util" - }, - { - "packager": "arduino", - "version": "1.8.0-arduino.2", - "name": "imgtool" - } - ] - }, - { - "name": "Arduino Mbed OS Giga Boards", - "architecture": "mbed_giga", - "version": "%%VERSION%%", - "category": "Arduino", - "url": "http://downloads.arduino.cc/cores/staging/%%GIGA_FILENAME%%", - "archiveFileName": "%%GIGA_FILENAME%%", - "checksum": "SHA-256:%%GIGA_CHECKSUM%%", - "size": "%%GIGA_SIZE%%", - "help": { - "online": "https://github.com/arduino/ArduinoCore-mbed/issues" - }, - "boards": [ - { - "name": "Arduino Giga" - } - ], - "toolsDependencies": [ - { - "packager": "arduino", - "name": "openocd", - "version": "0.11.0-arduino2" - }, - { - "packager": "arduino", - "name": "arm-none-eabi-gcc", - "version": "7-2017q4" - }, - { - "packager": "arduino", - "version": "0.10.0-arduino1", - "name": "dfu-util" - }, - { - "packager": "arduino", - "version": "1.8.0-arduino.2", - "name": "imgtool" - } - ] - } - ], - "tools": [] - } - ] -} diff --git a/libraries/Arduino_H7_Video/examples/ArduinoLogo/ArduinoLogo.ino b/libraries/Arduino_H7_Video/examples/ArduinoLogo/ArduinoLogo.ino index 1c0d0fd0f..9f40fbfb2 100644 --- a/libraries/Arduino_H7_Video/examples/ArduinoLogo/ArduinoLogo.ino +++ b/libraries/Arduino_H7_Video/examples/ArduinoLogo/ArduinoLogo.ino @@ -22,12 +22,23 @@ Arduino_H7_Video Display(800, 480, GigaDisplayShield); Image img_arduinologo(ENCODING_RGB16, (uint8_t *) texture_raw, 300, 300); +void error() { + while (true) { + digitalWrite(LEDR, LOW); + delay(500); + digitalWrite(LEDR, HIGH); + delay(500); + } +} + void setup() { - Display.begin(); + if (Display.begin()) { + error(); + } Display.beginDraw(); Display.image(img_arduinologo, (Display.width() - img_arduinologo.width())/2, (Display.height() - img_arduinologo.height())/2); Display.endDraw(); } -void loop() { } \ No newline at end of file +void loop() { } diff --git a/libraries/Arduino_H7_Video/examples/ArduinoLogoDrawing/ArduinoLogoDrawing.ino b/libraries/Arduino_H7_Video/examples/ArduinoLogoDrawing/ArduinoLogoDrawing.ino index 46ddf35c8..6f4e94be3 100644 --- a/libraries/Arduino_H7_Video/examples/ArduinoLogoDrawing/ArduinoLogoDrawing.ino +++ b/libraries/Arduino_H7_Video/examples/ArduinoLogoDrawing/ArduinoLogoDrawing.ino @@ -11,9 +11,20 @@ Arduino_H7_Video Display(800, 480, GigaDisplayShield); //Arduino_H7_Video Display(1024, 768, USBCVideo); +void error() { + while (true) { + digitalWrite(LEDR, LOW); + delay(500); + digitalWrite(LEDR, HIGH); + delay(500); + } +} + void setup() { - Display.begin(); - + if (Display.begin()) { + error(); + } + Display.beginDraw(); Display.background(255, 255, 255); Display.clear(); @@ -34,4 +45,4 @@ void setup() { Display.endDraw(); } -void loop() { } \ No newline at end of file +void loop() { } diff --git a/libraries/Arduino_H7_Video/examples/LVGLDemo/LVGLDemo.ino b/libraries/Arduino_H7_Video/examples/LVGLDemo/LVGLDemo.ino index 385ead77c..8ef11970b 100644 --- a/libraries/Arduino_H7_Video/examples/LVGLDemo/LVGLDemo.ino +++ b/libraries/Arduino_H7_Video/examples/LVGLDemo/LVGLDemo.ino @@ -28,10 +28,22 @@ static void set_slider_val(void * bar, int32_t val) { lv_bar_set_value((lv_obj_t *)bar, val, LV_ANIM_ON); } +void error() { + while (true) { + digitalWrite(LEDR, LOW); + delay(500); + digitalWrite(LEDR, HIGH); + delay(500); + } +} + void setup() { Serial.begin(115200); - Display.begin(); + if (Display.begin()) { + error(); + } + TouchDetector.begin(); /* Create a container with grid 2x2 */ @@ -140,4 +152,4 @@ void setup() { void loop() { /* Feed LVGL engine */ lv_timer_handler(); -} \ No newline at end of file +} diff --git a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp index 2bb02ebc9..68ee9b01f 100644 --- a/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp +++ b/libraries/Arduino_H7_Video/src/Arduino_H7_Video.cpp @@ -111,10 +111,6 @@ int Arduino_H7_Video::begin() { if (buf1 == NULL) { return 2; /* Insuff memory err */ } - static lv_color_t * buf2 = (lv_color_t*)malloc((width() * height() / 10)); /* Declare a buffer for 1/10 screen size */ - if (buf2 == NULL) { - return 2; /* Insuff memory err */ - } lv_display_t *display; if(_rotated) { diff --git a/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp b/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp index b6010f3f0..3e9a815fe 100644 --- a/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp +++ b/libraries/Arduino_H7_Video/src/H7DisplayShield.cpp @@ -41,10 +41,7 @@ int USBCVideoClass::init(int edidmode) { } //Read EDID - err_code = anx7625_dp_get_edid(0, &recognized_edid); - if(err_code < 0) { - return err_code; - } + anx7625_dp_get_edid(0, &recognized_edid); //DSI Configuration err_code = anx7625_dp_start(0, &recognized_edid, (enum edid_modes) edidmode); @@ -68,4 +65,4 @@ int USBCVideoClass::getStatus() { } GigaDisplayShieldClass GigaDisplayShield; -USBCVideoClass USBCVideo; \ No newline at end of file +USBCVideoClass USBCVideo; diff --git a/libraries/GSM/src/GSM.cpp b/libraries/GSM/src/GSM.cpp index cf5f5b975..513b7d0dc 100644 --- a/libraries/GSM/src/GSM.cpp +++ b/libraries/GSM/src/GSM.cpp @@ -46,10 +46,28 @@ mbed::CellularDevice *mbed::CellularDevice::get_default_instance() int arduino::GSMClass::begin(const char* pin, const char* apn, const char* username, const char* password, RadioAccessTechnologyType rat, uint32_t band, bool restart) { - if (restart || isCmuxEnable()) { - reset(); + /* Assume module is powered ON. Uncomment this line is you are using + * Edge Control without Arduino_ConnectionHandler + * #if defined (ARDUINO_EDGE_CONTROL) + * pinMode(ON_MKR2, OUTPUT); + * digitalWrite(ON_MKR2, HIGH); + * #endif + */ + + /* Ensure module is not under reset */ + pinMode(MBED_CONF_GEMALTO_CINTERION_RST, OUTPUT); + digitalWrite(MBED_CONF_GEMALTO_CINTERION_RST, LOW); + + /* Reset module if needed */ + const bool emergencyReset = restart || isCmuxEnable(); + DEBUG_INFO("Emergency reset %s", emergencyReset ? "enabled" : "disabled"); + if (emergencyReset) { + hardwareReset(); } + /* Create rising edge on pin ON */ + on(); + if (!_context) { _context = mbed::CellularContext::get_default_instance(); } @@ -59,20 +77,18 @@ int arduino::GSMClass::begin(const char* pin, const char* apn, const char* usern return 0; } - pinMode(MBED_CONF_GEMALTO_CINTERION_ON, INPUT_PULLDOWN); - +#if defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_PORTENTA_H7_M4) + /* This is needed to wakeup module if hw flow control is enabled */ static mbed::DigitalOut rts(MBED_CONF_GEMALTO_CINTERION_RTS, 0); +#endif _device = _context->get_device(); _device->modem_debug_on(_at_debug); - if (!isReady()) { - DEBUG_ERROR("Cellular device not ready"); - return 0; - } - + DEBUG_INFO("CMUX %s", _cmuxGSMenable ? "enabled" : "disabled"); _device->set_cmux_status_flag(_cmuxGSMenable); _device->set_retry_timeout_array(_retry_timeout, sizeof(_retry_timeout) / sizeof(_retry_timeout[0])); + _device->set_timeout(_timeout); _device->attach(mbed::callback(this, &GSMClass::onStatusChange)); _device->init(); @@ -106,6 +122,10 @@ int arduino::GSMClass::begin(const char* pin, const char* apn, const char* usern return connect_status == NSAPI_ERROR_OK ? 1 : 0; } +void arduino::GSMClass::setTimeout(unsigned long timeout) { + _timeout = timeout; +} + void arduino::GSMClass::enableCmux() { _cmuxGSMenable = true; } @@ -115,13 +135,62 @@ bool arduino::GSMClass::isCmuxEnable() { } void arduino::GSMClass::end() { + if(_device) { + _device->shutdown(); + } +} + +void arduino::GSMClass::reset() { + if(_device) { + _device->soft_reset(); + } +} + +void arduino::GSMClass::off() { + if(_device) { + _device->soft_power_off(); + } +} + +int arduino::GSMClass::ping(const char* hostname, int ttl) { + + mbed::GEMALTO_CINTERION_CellularStack* stack = (mbed::GEMALTO_CINTERION_CellularStack*)_context->get_stack(); + if (!stack) { + return -1; + } + return stack->ping(hostname, ttl); +} + +int arduino::GSMClass::ping(const String &hostname, int ttl) +{ + return ping(hostname.c_str(), ttl); +} +int arduino::GSMClass::ping(IPAddress ip, int ttl) +{ + String host; + host.reserve(15); + + host += ip[0]; + host += '.'; + host += ip[1]; + host += '.'; + host += ip[2]; + host += '.'; + host += ip[3]; + + return ping(host, ttl); } int arduino::GSMClass::disconnect() { - if (_context) { + if (!_context) { + return 0; + } + + if (_context->is_connected()) { return _context->disconnect(); } + return 0; } @@ -158,11 +227,16 @@ NetworkInterface* arduino::GSMClass::getNetwork() { return _context; } -void arduino::GSMClass::reset() { +void arduino::GSMClass::hardwareReset() { + /* Reset logic is inverted */ pinMode(MBED_CONF_GEMALTO_CINTERION_RST, OUTPUT); digitalWrite(MBED_CONF_GEMALTO_CINTERION_RST, HIGH); delay(800); digitalWrite(MBED_CONF_GEMALTO_CINTERION_RST, LOW); +} + +void arduino::GSMClass::on() { + /* Module needs a rising edge to power on */ pinMode(MBED_CONF_GEMALTO_CINTERION_ON, OUTPUT); digitalWrite(MBED_CONF_GEMALTO_CINTERION_ON, LOW); delay(1); @@ -170,22 +244,5 @@ void arduino::GSMClass::reset() { delay(1); } -bool arduino::GSMClass::isReady(const int timeout) { - if (!_device) { - DEBUG_ERROR("No device found"); - return false; - } - - const unsigned int start = millis(); - while (_device->is_ready() != NSAPI_ERROR_OK) { - - if (millis() - start > timeout) { - DEBUG_WARNING("Timeout waiting device ready"); - return false; - } - delay(100); - } - return true; -} arduino::GSMClass GSM; diff --git a/libraries/GSM/src/GSM.h b/libraries/GSM/src/GSM.h index 0b724f284..9f19cd3e0 100644 --- a/libraries/GSM/src/GSM.h +++ b/libraries/GSM/src/GSM.h @@ -75,30 +75,47 @@ class GSMClass : public MbedSocketClass { } } - /* Start GSM connection. - * Configure the credentials into the device. - * - * param pin: Pointer to the pin string. - * param apn: Pointer to the apn string. - * param username: Pointer to the username string. - * param password: Pointer to the password string. - * param rat: Radio Access Technology. - * - * return: 0 in case of success, negative number in case of failure - */ - int begin(const char* pin, const char* apn, const char* username, const char* password, RadioAccessTechnologyType rat = CATNB, uint32_t band = BAND_20, bool restart = true); + /* + * Start GSM connection. Configure the credentials into the device. + * + * param pin: Pointer to the pin string. + * param apn: Pointer to the apn string. + * param username: Pointer to the username string. + * param password: Pointer to the password string. + * param rat: Radio Access Technology. + * + * return: 0 in case of success, negative number in case of failure + */ + int begin(const char* pin, const char* apn, const char* username, const char* password, RadioAccessTechnologyType rat = CATNB, uint32_t band = BAND_20, bool restart = false); /* - * Disconnect from the network - * - * return: one value of wl_status_t enum - */ + * Disconnect from the network + * + * return: one value of wl_status_t enum + */ int disconnect(void); + /* + * Reset internal state machine in order to be ready to reconnect again. + */ void end(void); - unsigned long getTime(); + /* + * Send AT+CFUN=1,1 command to trigger a software reset. To be called only after end(); + */ + void reset(); + /* + * Send AT^SMSO="fast command to power off the modem. To be called only after end(); + */ + void off(); + + /* + * Change cellular state timeouts. Needs to be called before GSM.begin() + */ + void setTimeout(unsigned long timeout); + + unsigned long getTime(); unsigned long getLocalTime(); bool setTime(unsigned long const epoch, int const timezone = 0); @@ -108,6 +125,9 @@ class GSMClass : public MbedSocketClass { void trace(Stream& stream); void setTraceLevel(int trace_level, bool timestamp = false, bool at_trace = false); #endif + int ping(const char* hostname, int ttl = 5000); + int ping(const String& hostname, int ttl = 5000); + int ping(IPAddress host, int ttl = 5000); bool isConnected(); friend class GSMClient; @@ -127,11 +147,12 @@ class GSMClass : public MbedSocketClass { mbed::CellularContext* _context = nullptr; mbed::CellularDevice* _device = nullptr; bool _at_debug = false; + unsigned long _timeout = 1000; /* Internal cellular state machine retries. Values are in seconds. - * This array also defines the maximum number of retries to 6 + * This array also defines the maximum number of retries to CELLULAR_RETRY_ARRAY_SIZE */ - const uint16_t _retry_timeout[6] = {1, 2, 4, 8, 16, 32}; + const uint16_t _retry_timeout[CELLULAR_RETRY_ARRAY_SIZE] = {1, 2, 4, 8, 8, 8, 8, 8, 8, 8}; static constexpr int RSSI_UNKNOWN = 99; static const char * const sim_state_str[]; @@ -146,8 +167,8 @@ class GSMClass : public MbedSocketClass { static const char * getRegistrationStateString(const mbed::CellularNetwork::RegistrationStatus state); void onStatusChange(nsapi_event_t ev, intptr_t in); - void reset(); - bool isReady(const int timeout = 5000); + void hardwareReset(); + void on(); }; } diff --git a/libraries/GSM/src/GSMClient.h b/libraries/GSM/src/GSMClient.h index f29292fb9..cf7d49af5 100644 --- a/libraries/GSM/src/GSMClient.h +++ b/libraries/GSM/src/GSMClient.h @@ -26,9 +26,29 @@ namespace arduino { class GSMClient : public AClient { +private: NetworkInterface *getNetwork() { return GSM.getNetwork(); } + +public: + size_t write(uint8_t b) { + int ret = 0; + do { + ret = client->write(b); + delay(0); + } while (ret == 0 && status()); + return ret; + } + + size_t write(const uint8_t *buf, size_t size) { + int ret = 0; + do { + ret = client->write(buf, size); + delay(0); + } while (ret == 0 && status()); + return ret; + } }; } diff --git a/libraries/GSM/src/GSMSSLClient.h b/libraries/GSM/src/GSMSSLClient.h index cc7d3c194..add77b900 100644 --- a/libraries/GSM/src/GSMSSLClient.h +++ b/libraries/GSM/src/GSMSSLClient.h @@ -32,6 +32,25 @@ class GSMSSLClient : public arduino::ASslClient { NetworkInterface *getNetwork() { return GSM.getNetwork(); } + +public: + size_t write(uint8_t b) { + int ret = 0; + do { + ret = client->write(b); + delay(0); + } while (ret == 0 && status()); + return ret; + } + + size_t write(const uint8_t *buf, size_t size) { + int ret = 0; + do { + ret = client->write(buf, size); + delay(0); + } while (ret == 0 && status()); + return ret; + } }; } diff --git a/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino b/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino index 8d2b537dc..7aba71d8c 100644 --- a/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino +++ b/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino @@ -1,23 +1,28 @@ -#include "QSPIFBlockDevice.h" +#include "BlockDevice.h" #include "MBRBlockDevice.h" #include "LittleFileSystem.h" #include "FATFileSystem.h" +#include "wiced_resource.h" +#include "certificates.h" -#ifndef CORE_CM7 +#ifndef CORE_CM7 #error Format QSPI flash by uploading the sketch to the M7 core instead of the M4 core. #endif +using namespace mbed; -QSPIFBlockDevice root(QSPI_SO0, QSPI_SO1, QSPI_SO2, QSPI_SO3, QSPI_SCK, QSPI_CS, QSPIF_POLARITY_MODE_1, 40000000); -mbed::MBRBlockDevice wifi_data(&root, 1); -mbed::MBRBlockDevice ota_data(&root, 2); -mbed::MBRBlockDevice user_data(&root, 3); -mbed::FATFileSystem wifi_data_fs("wlan"); -mbed::FATFileSystem ota_data_fs("fs"); -mbed::FileSystem * user_data_fs; +BlockDevice* root = BlockDevice::get_default_instance(); +MBRBlockDevice wifi_data(root, 1); +MBRBlockDevice ota_data(root, 2); +MBRBlockDevice kvstore_data(root, 3); +MBRBlockDevice user_data(root, 4); +FATFileSystem wifi_data_fs("wlan"); +FATFileSystem ota_data_fs("fs"); +FileSystem * user_data_fs; bool waitResponse() { bool confirmation = false; + bool proceed = false; while (confirmation == false) { if (Serial.available()) { char choice = Serial.read(); @@ -25,18 +30,33 @@ bool waitResponse() { case 'y': case 'Y': confirmation = true; - return true; + proceed = true; break; case 'n': case 'N': confirmation = true; - return false; + proceed = false; break; default: continue; } } } + return proceed; +} + +void printProgress(uint32_t offset, uint32_t size, uint32_t threshold, bool reset) { + static int percent_done = 0; + if (reset == true) { + percent_done = 0; + Serial.println("Flashed " + String(percent_done) + "%"); + } else { + uint32_t percent_done_new = offset * 100 / size; + if (percent_done_new >= percent_done + threshold) { + percent_done = percent_done_new; + Serial.println("Flashed " + String(percent_done) + "%"); + } + } } void setup() { @@ -44,69 +64,171 @@ void setup() { Serial.begin(115200); while (!Serial); - Serial.println("Available partition schemes:"); - Serial.println("\nPartition scheme 1"); - Serial.println("Partition 1: WiFi firmware and certificates 1MB"); - Serial.println("Partition 2: OTA and user data 13MB"); - Serial.println("\nPartition scheme 2"); + Serial.println("\nWARNING! Running the sketch all the content of the QSPI flash will be erased."); + Serial.println("The following partitions will be created:"); Serial.println("Partition 1: WiFi firmware and certificates 1MB"); Serial.println("Partition 2: OTA 5MB"); - Serial.println("Partition 3: User data 8MB"), - Serial.println("\nDo you want to use partition scheme 1? Y/[n]"); - Serial.println("If No, partition scheme 2 will be used."); - bool default_scheme = waitResponse(); - - Serial.println("\nWARNING! Running the sketch all the content of the QSPI flash will be erased."); + Serial.println("Partition 3: Provisioning KVStore 1MB"); + Serial.println("Partition 4: User data / OPTA PLC runtime 7MB"), Serial.println("Do you want to proceed? Y/[n]"); if (true == waitResponse()) { - mbed::MBRBlockDevice::partition(&root, 1, 0x0B, 0, 1024 * 1024); - if(default_scheme) { - mbed::MBRBlockDevice::partition(&root, 3, 0x0B, 14 * 1024 * 1024, 14 * 1024 * 1024); - mbed::MBRBlockDevice::partition(&root, 2, 0x0B, 1024 * 1024, 14 * 1024 * 1024); - // use space from 15.5MB to 16 MB for another fw, memory mapped + if (root->init() != BD_ERROR_OK) { + Serial.println(F("Error: QSPI init failure.")); + return; + } + + Serial.println("Do you want to perform a full erase of the QSPI flash before proceeding? Y/[n]"); + Serial.println("Note: Full flash erase can take up to one minute."); + bool fullErase = waitResponse(); + if (fullErase == true) { + Serial.println("Full erase started, please wait..."); + root->erase(0x0, root->size()); + Serial.println("Full erase completed."); } else { - mbed::MBRBlockDevice::partition(&root, 2, 0x0B, 1024 * 1024, 6 * 1024 * 1024); - mbed::MBRBlockDevice::partition(&root, 3, 0x0B, 6 * 1024 * 1024, 14 * 1024 * 1024); - // use space from 15.5MB to 16 MB for another fw, memory mapped + // Erase only the first sector containing the MBR + root->erase(0x0, root->get_erase_size()); } - int err = wifi_data_fs.reformat(&wifi_data); - if (err) { + MBRBlockDevice::partition(root, 1, 0x0B, 0, 1 * 1024 * 1024); + MBRBlockDevice::partition(root, 2, 0x0B, 1 * 1024 * 1024, 6 * 1024 * 1024); + MBRBlockDevice::partition(root, 3, 0x0B, 6 * 1024 * 1024, 7 * 1024 * 1024); + MBRBlockDevice::partition(root, 4, 0x0B, 7 * 1024 * 1024, 14 * 1024 * 1024); + // use space from 15.5MB to 16 MB for another fw, memory mapped + + bool reformat = true; + if (!wifi_data_fs.mount(&wifi_data)) { + Serial.println("\nPartition 1 already contains a filesystem, do you want to reformat it? Y/[n]"); + wifi_data_fs.unmount(); + + reformat = waitResponse(); + } + + if (reformat && wifi_data_fs.reformat(&wifi_data)) { Serial.println("Error formatting WiFi partition"); return; } - - err = ota_data_fs.reformat(&ota_data); - if (err) { + + bool restore = true; + if (reformat || fullErase) { + Serial.println("\nDo you want to restore the WiFi firmware and certificates? Y/[n]"); + restore = waitResponse(); + } + + if (reformat && restore) { + flashWiFiFirmwareAndCertificates(); + } + + if (fullErase && restore) { + flashWiFiFirmwareMapped(); + } + + reformat = true; + if (!ota_data_fs.mount(&ota_data)) { + Serial.println("\nPartition 2 already contains a filesystem, do you want to reformat it? Y/[n]"); + ota_data_fs.unmount(); + + reformat = waitResponse(); + } + + if (reformat && ota_data_fs.reformat(&ota_data)) { Serial.println("Error formatting OTA partition"); return; } - if(!default_scheme) { - Serial.println("\nDo you want to use LittleFS to format user data partition? Y/[n]"); - Serial.println("If No, FatFS will be used to format user partition."); + Serial.println("\nDo you want to use LittleFS to format user data partition? Y/[n]"); + Serial.println("If No, FatFS will be used to format user partition."); + Serial.println("Note: LittleFS is not supported by the OPTA PLC runtime."); + if (true == waitResponse()) { + Serial.println("Formatting user partition with LittleFS."); + user_data_fs = new mbed::LittleFileSystem("user"); + } else { + Serial.println("Formatting user partition with FatFS."); + user_data_fs = new mbed::FATFileSystem("user"); + } - if (true == waitResponse()) { - Serial.println("Formatting user partition with LittleFS."); - user_data_fs = new mbed::LittleFileSystem("user"); - } else { - Serial.println("Formatting user partition with FatFS."); - user_data_fs = new mbed::FATFileSystem("user"); - } + reformat = true; + if (!user_data_fs->mount(&user_data)) { + Serial.println("\nPartition 4 already contains a filesystem, do you want to reformat it? Y/[n]"); + user_data_fs->unmount(); - err = user_data_fs->reformat(&user_data); - if (err) { - Serial.println("Error formatting user partition"); - return; - } + reformat = waitResponse(); } + + if (reformat && user_data_fs->reformat(&user_data)) { + Serial.println("Error formatting user partition"); + return; + } + Serial.println("\nQSPI Flash formatted!"); } Serial.println("It's now safe to reboot or disconnect your board."); } +const uint32_t file_size = 421098; +extern const unsigned char wifi_firmware_image_data[]; + +void flashWiFiFirmwareAndCertificates() { + FILE* fp = fopen("/wlan/4343WA1.BIN", "wb"); + uint32_t chunk_size = 1024; + uint32_t byte_count = 0; + + Serial.println("Flashing WiFi firmware"); + printProgress(byte_count, file_size, 10, true); + while (byte_count < file_size) { + if(byte_count + chunk_size > file_size) + chunk_size = file_size - byte_count; + int ret = fwrite(&wifi_firmware_image_data[byte_count], chunk_size, 1, fp); + if (ret != 1) { + Serial.println("Error writing firmware data"); + break; + } + byte_count += chunk_size; + printProgress(byte_count, file_size, 10, false); + } + fclose(fp); + + fp = fopen("/wlan/cacert.pem", "wb"); + + Serial.println("Flashing certificates"); + chunk_size = 128; + byte_count = 0; + printProgress(byte_count, cacert_pem_len, 10, true); + while (byte_count < cacert_pem_len) { + if(byte_count + chunk_size > cacert_pem_len) + chunk_size = cacert_pem_len - byte_count; + int ret = fwrite(&cacert_pem[byte_count], chunk_size, 1 ,fp); + if (ret != 1) { + Serial.println("Error writing certificates"); + break; + } + byte_count += chunk_size; + printProgress(byte_count, cacert_pem_len, 10, false); + } + fclose(fp); +} + +void flashWiFiFirmwareMapped() { + uint32_t chunk_size = 1024; + uint32_t byte_count = 0; + const uint32_t offset = 15 * 1024 * 1024 + 1024 * 512; + + Serial.println("Flashing memory mapped WiFi firmware"); + printProgress(byte_count, file_size, 10, true); + while (byte_count < file_size) { + if (byte_count + chunk_size > file_size) + chunk_size = file_size - byte_count; + int ret = root->program(wifi_firmware_image_data, offset + byte_count, chunk_size); + if (ret != 0) { + Serial.println("Error writing memory mapped firmware"); + break; + } + byte_count += chunk_size; + printProgress(byte_count, file_size, 10, false); + } +} + void loop() { } diff --git a/libraries/STM32H747_System/examples/QSPIFormat/certificates.h b/libraries/STM32H747_System/examples/QSPIFormat/certificates.h new file mode 120000 index 000000000..7b4170776 --- /dev/null +++ b/libraries/STM32H747_System/examples/QSPIFormat/certificates.h @@ -0,0 +1 @@ +../WiFiFirmwareUpdater/certificates.h \ No newline at end of file diff --git a/libraries/SocketWrapper/src/MbedClient.cpp b/libraries/SocketWrapper/src/MbedClient.cpp index 296b64943..d678b78db 100644 --- a/libraries/SocketWrapper/src/MbedClient.cpp +++ b/libraries/SocketWrapper/src/MbedClient.cpp @@ -71,7 +71,7 @@ void arduino::MbedClient::configureSocket(Socket *_s) { } mutex->lock(); if (reader_th == nullptr) { - reader_th = new rtos::Thread(osPriorityNormal - 2); + reader_th = new rtos::Thread(osPriorityNormal, OS_STACK_SIZE, nullptr, "readSocket"); reader_th->start(mbed::callback(this, &MbedClient::readSocket)); } mutex->unlock(); diff --git a/libraries/SocketWrapper/src/SocketHelpers.cpp b/libraries/SocketWrapper/src/SocketHelpers.cpp index b7e39b42c..591cd2f17 100644 --- a/libraries/SocketWrapper/src/SocketHelpers.cpp +++ b/libraries/SocketWrapper/src/SocketHelpers.cpp @@ -75,22 +75,22 @@ arduino::IPAddress arduino::MbedSocketClass::dnsIP(int n) { return ipAddressFromSocketAddress(ip); } -int arduino::MbedSocketClass::ping(const char *hostname, uint8_t ttl) +int arduino::MbedSocketClass::ping(const char *hostname, uint8_t ttl, uint32_t timeout) { SocketAddress socketAddress; gethostbyname(getNetwork(),hostname, &socketAddress); - return ping(socketAddress, ttl); + return ping(socketAddress, ttl, timeout); } -int arduino::MbedSocketClass::ping(const String &hostname, uint8_t ttl) +int arduino::MbedSocketClass::ping(const String &hostname, uint8_t ttl, uint32_t timeout) { - return ping(hostname.c_str(), ttl); + return ping(hostname.c_str(), ttl, timeout); } -int arduino::MbedSocketClass::ping(IPAddress host, uint8_t ttl) +int arduino::MbedSocketClass::ping(IPAddress host, uint8_t ttl, uint32_t timeout) { SocketAddress socketAddress = socketAddressFromIpAddress(host, 0); - return ping(socketAddress, ttl); + return ping(socketAddress, ttl, timeout); } void arduino::MbedSocketClass::config(arduino::IPAddress local_ip) { @@ -142,11 +142,14 @@ int arduino::MbedSocketClass::ping(SocketAddress &socketAddress, uint8_t ttl, ui { /* ttl is not supported by mbed ICMPSocket. Default value used is 255 */ (void)ttl; + int response = -1; +#if MBED_CONF_LWIP_RAW_SOCKET_ENABLED ICMPSocket s; s.set_timeout(timeout); s.open(getNetwork()); - int response = s.ping(socketAddress, timeout); + response = s.ping(socketAddress, timeout); s.close(); +#endif return response; } diff --git a/libraries/SocketWrapper/src/SocketHelpers.h b/libraries/SocketWrapper/src/SocketHelpers.h index e285d166c..428ab4a63 100644 --- a/libraries/SocketWrapper/src/SocketHelpers.h +++ b/libraries/SocketWrapper/src/SocketHelpers.h @@ -118,9 +118,9 @@ class MbedSocketClass { * * return: RTT in milliseconds or -1 on error */ - int ping(const char* hostname, uint8_t ttl = 255); - int ping(const String &hostname, uint8_t ttl = 255); - int ping(IPAddress host, uint8_t ttl = 255); + int ping(const char* hostname, uint8_t ttl = 255, uint32_t timeout = 5000); + int ping(const String &hostname, uint8_t ttl = 255, uint32_t timeout = 5000); + int ping(IPAddress host, uint8_t ttl = 255, uint32_t timeout = 5000); /* * Download a file from an HTTP endpoint and save it in the provided `target` location on the fs @@ -185,7 +185,7 @@ class MbedSocketClass { void body_callback(const char* data, uint32_t data_len); - int ping(SocketAddress &socketAddress, uint8_t ttl, uint32_t timeout = 5000); + int ping(SocketAddress &socketAddress, uint8_t ttl, uint32_t timeout); static arduino::IPAddress ipAddressFromSocketAddress(SocketAddress socketAddress); static SocketAddress socketAddressFromIpAddress(arduino::IPAddress ip, uint16_t port); static nsapi_error_t gethostbyname(NetworkInterface* interface, const char* aHostname, SocketAddress* socketAddress); diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index 9b345d3e1..954f8c3af 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -124,7 +124,6 @@ size_t arduino::MbedI2C::write(const uint8_t* data, int len) { int arduino::MbedI2C::read() { int rv = -1; core_util_critical_section_enter(); - if (rxBuffer.available()) { rv = rxBuffer.read_char(); @@ -160,18 +159,21 @@ void arduino::MbedI2C::receiveThd() { } if (usedTxBuffer != 0) { core_util_critical_section_enter(); - slave->write((const char *) txBuffer, usedTxBuffer); - core_util_critical_section_exit(); + uint8_t tempTxBuffer[256]; + uint8_t usedTempTxBuffer = usedTxBuffer; + memcpy(tempTxBuffer, txBuffer, usedTempTxBuffer); usedTxBuffer = 0; + core_util_critical_section_exit(); + slave->write((const char *) tempTxBuffer, usedTempTxBuffer); } //slave->stop(); break; case mbed::I2CSlave::WriteGeneral: case mbed::I2CSlave::WriteAddressed: - core_util_critical_section_enter(); - rxBuffer.clear(); char buf[240]; c = slave->read(buf, sizeof(buf)); + core_util_critical_section_enter(); + rxBuffer.clear(); for (buf_idx = 0; buf_idx < c; buf_idx++) { if (rxBuffer.availableForStore()) { rxBuffer.store_char(uint8_t(buf[buf_idx])); diff --git a/libraries/openamp_arduino/library.properties b/libraries/openamp_arduino/library.properties index 51525e1a6..d2ebd4a2a 100644 --- a/libraries/openamp_arduino/library.properties +++ b/libraries/openamp_arduino/library.properties @@ -6,5 +6,5 @@ sentence=Enables the communication between H747 cores via shared memory and open paragraph= category=Communication url= -architectures=mbed,mbed_portenta,mbed_nicla,mbed_opta +architectures=mbed,mbed_portenta,mbed_nicla,mbed_opta,mbed_giga dot_a_linkage=true diff --git a/opta.variables b/opta.variables index dc36376d6..ecafac369 100755 --- a/opta.variables +++ b/opta.variables @@ -1,5 +1,5 @@ export FLAVOUR="opta" export VARIANTS=("OPTA GENERIC_STM32H747_M4") export FQBNS=("opta") -export LIBRARIES=("Ethernet SPI WiFi openamp_arduino ThreadDebug KernelDebug RPC USBHID Wire rpclib USBHOST mbed-memory-status Scheduler USBMSD SocketWrapper STM32H747_System MRI") +export LIBRARIES=("Ethernet SPI WiFi openamp_arduino ThreadDebug KernelDebug RPC USBHID Wire rpclib USBHOST mbed-memory-status Scheduler USBMSD SocketWrapper STM32H747_System MRI MCUboot") export BOOTLOADERS=("OPTA") diff --git a/package.sh b/package.sh index 3d89d8155..ded181efc 100755 --- a/package.sh +++ b/package.sh @@ -73,10 +73,19 @@ BASE_FOLDER=`basename $PWD` #Package! (remove .git, patches folders) cd .. tar --exclude='*.git*' --exclude='*patches*' -cjhf ArduinoCore-mbed-$FLAVOUR-$VERSION.tar.bz2 $BASE_FOLDER -if [ x$FLAVOUR == x ]; then -mv ArduinoCore-mbed-$FLAVOUR-$VERSION.tar.bz2 ArduinoCore-mbed-$VERSION.tar.bz2 -echo FILENAME=ArduinoCore-mbed-$VERSION.tar.bz2 > /tmp/env -else -echo FILENAME=ArduinoCore-mbed-$FLAVOUR-$VERSION.tar.bz2 > /tmp/env -fi + +# Create JSON file for the package +FILENAME=ArduinoCore-mbed-$FLAVOUR-$VERSION.tar.bz2 +CHKSUM=`sha256sum $FILENAME | awk '{ print $1 }'` +SIZE=`wc -c $FILENAME | awk '{ print $1 }'` +FLAVOUR_TAG=${FLAVOUR^^}_ +FLAVOUR_NAME=${FLAVOUR,,} +VERSION_NAME=${VERSION//./-} + +cat ArduinoCore-mbed/extras/mbed_$FLAVOUR_NAME-tag.template.json | +sed "s/%%VERSION%%/${VERSION}/" | +sed "s/%%${FLAVOUR_TAG}FILENAME%%/${FILENAME}/" | +sed "s/%%${FLAVOUR_TAG}CHECKSUM%%/${CHKSUM}/" | +sed "s/%%${FLAVOUR_TAG}SIZE%%/${SIZE}/" > mbed_$FLAVOUR_NAME-$VERSION_NAME.json + cd - diff --git a/package_full.sh b/package_full.sh index 2f9c1434e..ac971df4b 100755 --- a/package_full.sh +++ b/package_full.sh @@ -1,10 +1,8 @@ #Get version from git(hub) tag -export VERSION="4.2.4" +export VERSION="4.4.1" FLAVOURS=`ls *.variables` -cp extras/package_index.json.NewTag.template /tmp/json - for flavour in $FLAVOURS; do # Hack, clean everything from known positions and restart @@ -17,32 +15,4 @@ git clone git@github.com:arduino/ArduinoCore-API.git ../api/ ln -s ../../../api/api cores/arduino/api ./package.sh $flavour -echo "Creating json" - -source /tmp/env -CHKSUM=`sha256sum ../$FILENAME | awk '{ print $1 }'` -SIZE=`wc -c ../$FILENAME | awk '{ print $1 }'` -source ${flavour} - -FLAVOUR=${FLAVOUR^^} - -if [ x$FLAVOUR != x ]; then -FLAVOUR=${FLAVOUR}_ -fi - -echo FILENAME=$FILENAME -echo CHKSUM=$CHKSUM -echo SIZE=$SIZE -echo VERSION=$VERSION -echo FLAVOUR=$FLAVOUR - -cat /tmp/json | -sed "s/%%VERSION%%/${VERSION}/" | -sed "s/%%${FLAVOUR}FILENAME%%/${FILENAME}/" | -sed "s/%%${FLAVOUR}CHECKSUM%%/${CHKSUM}/" | -sed "s/%%${FLAVOUR}SIZE%%/${SIZE}/" > /tmp/json2 -mv /tmp/json2 /tmp/json - done - -cp /tmp/json package_${CORE_NAME}_${VERSION}_index.json diff --git a/patches/0248-GEMALTO-CINTERION-cleanup-stack-before-connection.patch b/patches/0248-GEMALTO-CINTERION-cleanup-stack-before-connection.patch new file mode 100644 index 000000000..d9cb9e31c --- /dev/null +++ b/patches/0248-GEMALTO-CINTERION-cleanup-stack-before-connection.patch @@ -0,0 +1,29 @@ +From f40d4a9d65ee9163921271697d316c1061aca946 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Thu, 31 Oct 2024 11:05:18 +0100 +Subject: [PATCH] GEMALTO CINTERION: cleanup stack before connection + + Allows to re-connect after a disconnection +--- + .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp +index 78955c599e..76c788cdaf 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp +@@ -35,6 +35,11 @@ nsapi_error_t GEMALTO_CINTERION_CellularContext::connect(const char *sim_pin, co + { + nsapi_error_t error = NSAPI_ERROR_OK; + ++ if (_stack) { ++ delete _stack; ++ _stack = NULL; ++ } ++ + set_sim_pin(sim_pin); + set_credentials(apn, uname, pwd); + +-- +2.45.2 + diff --git a/patches/0249-GEMALTO-CINTERION-close-socket-on-timeout.patch b/patches/0249-GEMALTO-CINTERION-close-socket-on-timeout.patch new file mode 100644 index 000000000..1fbb4021a --- /dev/null +++ b/patches/0249-GEMALTO-CINTERION-close-socket-on-timeout.patch @@ -0,0 +1,25 @@ +From 4b6c6ad0554c88c369fc4e2e5ed543d52117aa3f Mon Sep 17 00:00:00 2001 +From: pennam +Date: Thu, 31 Oct 2024 12:00:51 +0100 +Subject: [PATCH] GEMALTO CINTERION: close socket on timeout + +--- + .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +index ac2a54282a..41a01859e7 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +@@ -59,7 +59,7 @@ void GEMALTO_CINTERION_CellularStack::urc_sis() + } + if (urc_code == 0) { + int urc_info_id = _at.read_int(); +- if (urc_info_id == 48) { ++ if (urc_info_id == 48 || urc_info_id == 20) { + tr_info("Socket closed %d", sock_id); + sock->closed = true; + if (sock->_cb) { +-- +2.45.2 + diff --git a/patches/0250-GEMALTO-CINTERION-add-debug-for-urc_sis.patch b/patches/0250-GEMALTO-CINTERION-add-debug-for-urc_sis.patch new file mode 100644 index 000000000..4c41b0918 --- /dev/null +++ b/patches/0250-GEMALTO-CINTERION-add-debug-for-urc_sis.patch @@ -0,0 +1,33 @@ +From 84e682a7f4c0c05dded7f12817f78c1cc9a66cfe Mon Sep 17 00:00:00 2001 +From: pennam +Date: Thu, 31 Oct 2024 12:01:47 +0100 +Subject: [PATCH] GEMALTO CINTERION: add debug for urc_sis + +--- + .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +index 41a01859e7..9a3f22dc3c 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +@@ -47,6 +47,8 @@ void GEMALTO_CINTERION_CellularStack::urc_sis() + int sock_id = _at.read_int(); + int urc_code = _at.read_int(); + CellularSocket *sock = find_socket(sock_id); ++ ++ tr_info("urc_sis socket id %d urc code %d\n\r", sock_id, urc_code); + if (sock) { + // Currently only UDP is supported so there is need to handle only some error codes here, + // and others are detected on sendto/recvfrom responses. +@@ -59,6 +61,7 @@ void GEMALTO_CINTERION_CellularStack::urc_sis() + } + if (urc_code == 0) { + int urc_info_id = _at.read_int(); ++ tr_info("urcInfoId %d\n\r", urc_info_id); + if (urc_info_id == 48 || urc_info_id == 20) { + tr_info("Socket closed %d", sock_id); + sock->closed = true; +-- +2.45.2 + diff --git a/patches/0251-GEMALTO-CINTERION-add-configuration-for-urcs-during-.patch b/patches/0251-GEMALTO-CINTERION-add-configuration-for-urcs-during-.patch new file mode 100644 index 000000000..290452457 --- /dev/null +++ b/patches/0251-GEMALTO-CINTERION-add-configuration-for-urcs-during-.patch @@ -0,0 +1,33 @@ +From 5cc2a1998d37bad69a0b4e75b7d6f7b92e95935c Mon Sep 17 00:00:00 2001 +From: pennam +Date: Thu, 31 Oct 2024 12:03:00 +0100 +Subject: [PATCH] GEMALTO CINTERION: add configuration for urcs during + read + +--- + .../CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +index 9a3f22dc3c..a96cb2b360 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +@@ -527,8 +527,13 @@ sisw_retry: + return (_at.get_last_error() == NSAPI_ERROR_OK) ? accept_len : NSAPI_ERROR_DEVICE_ERROR; + } + +-#define DISABLE_URCs _at.at_cmd_discard("^SCFG", "=", "%s%s","Tcp/WithURCs","off") +-#define RESTORE_URCs_AND_RETURN(ret) do { _at.at_cmd_discard("^SCFG", "=", "%s%s","Tcp/WithURCs","on"); return ret; } while(0) ++#if defined GEMALTO_CINTERION_DISABLE_URC_READING ++ #define DISABLE_URCs _at.at_cmd_discard("^SCFG", "=", "%s%s","Tcp/WithURCs","off") ++ #define RESTORE_URCs_AND_RETURN(ret) do { _at.at_cmd_discard("^SCFG", "=", "%s%s","Tcp/WithURCs","on"); return ret; } while(0) ++#else ++ #define DISABLE_URCs ++ #define RESTORE_URCs_AND_RETURN(ret) do { return ret; } while(0) ++#endif + + nsapi_size_or_error_t GEMALTO_CINTERION_CellularStack::socket_recvfrom_impl(CellularSocket *socket, SocketAddress *address, + void *buffer, nsapi_size_t size) +-- +2.45.2 + diff --git a/patches/0252-GEMALTO-CINTERION-fix-enable-cmux-command.patch b/patches/0252-GEMALTO-CINTERION-fix-enable-cmux-command.patch new file mode 100644 index 000000000..711836c5d --- /dev/null +++ b/patches/0252-GEMALTO-CINTERION-fix-enable-cmux-command.patch @@ -0,0 +1,57 @@ +From a76136121ab8066a1ee4afab9254552752b96a5d Mon Sep 17 00:00:00 2001 +From: pennam +Date: Wed, 13 Nov 2024 08:28:13 +0100 +Subject: [PATCH] GEMALTO CINTERION: fix enable cmux command + +--- + .../cellular/source/framework/AT/AT_CellularDevice.cpp | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/connectivity/cellular/source/framework/AT/AT_CellularDevice.cpp b/connectivity/cellular/source/framework/AT/AT_CellularDevice.cpp +index 08229ba49b..3eccc4a5c0 100644 +--- a/connectivity/cellular/source/framework/AT/AT_CellularDevice.cpp ++++ b/connectivity/cellular/source/framework/AT/AT_CellularDevice.cpp +@@ -50,6 +50,7 @@ AT_CellularDevice::AT_CellularDevice(FileHandle *fh, char *delim): + _context_list(0), + _default_timeout(DEFAULT_AT_TIMEOUT), + _modem_debug_on(false), ++ _cmux_status(false), + _property_array(NULL) + { + MBED_ASSERT(fh); +@@ -243,10 +244,10 @@ nsapi_error_t AT_CellularDevice::get_sim_state(SimState &state) + + nsapi_error_t AT_CellularDevice::enable_cmux() + { +-setup_at_handler(); +- ++ setup_at_handler(); + _at.lock(); + for (int retry = 1; retry <= 3; retry++) { ++ is_ready(); + _at.clear_error(); + _at.flush(); + _at.at_cmd_discard("E0", ""); +@@ -259,10 +260,9 @@ setup_at_handler(); + tr_debug("Wait 100ms to init modem"); + rtos::ThisThread::sleep_for(100ms); // let modem have time to get ready + } +- return _at.unlock_return_error(); ++ return _at.unlock_return_error(); + } + +- + bool AT_CellularDevice::is_cmux_enabled() + { + return _cmux_status; +@@ -272,6 +272,7 @@ void AT_CellularDevice::set_cmux_status_flag(bool cmux_status) + { + _cmux_status = cmux_status; + } ++ + nsapi_error_t AT_CellularDevice::set_pin(const char *sim_pin) + { + // if SIM is already in ready state then settings the PIN +-- +2.45.2 + diff --git a/patches/0253-GEMALTO-CINTERION-override-shutdown-function.patch b/patches/0253-GEMALTO-CINTERION-override-shutdown-function.patch new file mode 100644 index 000000000..e100a7b01 --- /dev/null +++ b/patches/0253-GEMALTO-CINTERION-override-shutdown-function.patch @@ -0,0 +1,42 @@ +From 13bc587f70e1c4f9f61650cfd7c8ebc538bdcf09 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Wed, 13 Nov 2024 08:29:14 +0100 +Subject: [PATCH] GEMALTO CINTERION: override shutdown function + +--- + .../cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp | 6 ++++++ + .../drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h | 1 + + 2 files changed, 7 insertions(+) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp +index 1f82199106..c00c1880e4 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp +@@ -92,6 +92,12 @@ nsapi_error_t GEMALTO_CINTERION::init() + return NSAPI_ERROR_OK; + } + ++nsapi_error_t GEMALTO_CINTERION::shutdown() ++{ ++ CellularDevice::shutdown(); ++ return NSAPI_ERROR_OK; ++} ++ + GEMALTO_CINTERION::Module GEMALTO_CINTERION::get_module() + { + return _module; +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h +index 21d5888383..e77078cb49 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h +@@ -55,6 +55,7 @@ protected: // AT_CellularDevice + + protected: + virtual nsapi_error_t init(); ++ virtual nsapi_error_t shutdown(); + + private: + static Module _module; +-- +2.45.2 + diff --git a/patches/0254-GEMALTO-CINTERION-use-default-timeout-to-close-socke.patch b/patches/0254-GEMALTO-CINTERION-use-default-timeout-to-close-socke.patch new file mode 100644 index 000000000..86975735d --- /dev/null +++ b/patches/0254-GEMALTO-CINTERION-use-default-timeout-to-close-socke.patch @@ -0,0 +1,32 @@ +From 62867abe6811f785373cae9e9b5cfe41774b846b Mon Sep 17 00:00:00 2001 +From: pennam +Date: Wed, 13 Nov 2024 08:30:47 +0100 +Subject: [PATCH] GEMALTO CINTERION: use default timeout to close + sockets + +--- + .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +index a96cb2b360..f96ae481f0 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +@@ -252,14 +252,10 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::socket_close_impl(int sock_id) + { + tr_debug("Cinterion close %d", sock_id); + +- _at.set_at_timeout(FAILURE_TIMEOUT); +- + _at.at_cmd_discard("^SISC", "=", "%d", sock_id); + + _at.clear_error(); // clear SISS even though SISC fails + +- _at.restore_at_timeout(); +- + return _at.get_last_error(); + } + +-- +2.45.2 + diff --git a/patches/0255-GEMALTO-CINTERION-add-soft_power_off-and-soft_reset.patch b/patches/0255-GEMALTO-CINTERION-add-soft_power_off-and-soft_reset.patch new file mode 100644 index 000000000..82bd81c15 --- /dev/null +++ b/patches/0255-GEMALTO-CINTERION-add-soft_power_off-and-soft_reset.patch @@ -0,0 +1,102 @@ +From 7c789f289225ef631952f0ddb8ac46d2d1de9191 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Thu, 14 Nov 2024 15:57:07 +0100 +Subject: [PATCH] GEMALTO CINTERION: add soft_power_off() and + soft_reset() + +--- + .../include/cellular/framework/API/CellularDevice.h | 11 +++++++++++ + .../include/cellular/framework/AT/AT_CellularDevice.h | 2 ++ + .../source/framework/AT/AT_CellularDevice.cpp | 5 +++++ + .../cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp | 10 ++++++++++ + .../cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h | 2 ++ + 5 files changed, 30 insertions(+) + +diff --git a/connectivity/cellular/include/cellular/framework/API/CellularDevice.h b/connectivity/cellular/include/cellular/framework/API/CellularDevice.h +index 0c8d1a2db2..69455e1567 100644 +--- a/connectivity/cellular/include/cellular/framework/API/CellularDevice.h ++++ b/connectivity/cellular/include/cellular/framework/API/CellularDevice.h +@@ -201,6 +201,17 @@ public: //Pure virtual functions + */ + virtual nsapi_error_t soft_power_off() = 0; + ++ /** Resets the modem via AT command ++ * ++ * @remark CellularStateMachine disconnect or destruct does not reset the modem, ++ * but you need to do that yourself. ++ * ++ * @pre You must call shutdown to prepare the modem for reset. ++ * ++ * @return NSAPI_ERROR_OK on success ++ */ ++ virtual nsapi_error_t soft_reset() = 0; ++ + /** Open the SIM card by setting the pin code for SIM. + * + * @param sim_pin PIN for the SIM card +diff --git a/connectivity/cellular/include/cellular/framework/AT/AT_CellularDevice.h b/connectivity/cellular/include/cellular/framework/AT/AT_CellularDevice.h +index fa011a0968..0006b6c391 100755 +--- a/connectivity/cellular/include/cellular/framework/AT/AT_CellularDevice.h ++++ b/connectivity/cellular/include/cellular/framework/AT/AT_CellularDevice.h +@@ -80,6 +80,8 @@ public: + + virtual nsapi_error_t soft_power_off(); + ++ virtual nsapi_error_t soft_reset(); ++ + virtual nsapi_error_t set_pin(const char *sim_pin); + + virtual nsapi_error_t get_sim_state(SimState &state); +diff --git a/connectivity/cellular/source/framework/AT/AT_CellularDevice.cpp b/connectivity/cellular/source/framework/AT/AT_CellularDevice.cpp +index 3eccc4a5c0..d7dae05aa2 100644 +--- a/connectivity/cellular/source/framework/AT/AT_CellularDevice.cpp ++++ b/connectivity/cellular/source/framework/AT/AT_CellularDevice.cpp +@@ -187,6 +187,11 @@ nsapi_error_t AT_CellularDevice::soft_power_off() + return NSAPI_ERROR_OK; + } + ++nsapi_error_t AT_CellularDevice::soft_reset() ++{ ++ return NSAPI_ERROR_OK; ++} ++ + ATHandler *AT_CellularDevice::get_at_handler() + { + return &_at; +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp +index c00c1880e4..40e74ab98f 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp +@@ -98,6 +98,16 @@ nsapi_error_t GEMALTO_CINTERION::shutdown() + return NSAPI_ERROR_OK; + } + ++nsapi_error_t GEMALTO_CINTERION::soft_power_off() ++{ ++ return _at.at_cmd_discard("^SMSO=", "fast"); ++} ++ ++nsapi_error_t GEMALTO_CINTERION::soft_reset() ++{ ++ return _at.at_cmd_discard("+CFUN", "=1,1"); ++} ++ + GEMALTO_CINTERION::Module GEMALTO_CINTERION::get_module() + { + return _module; +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h +index e77078cb49..edc980209e 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.h +@@ -56,6 +56,8 @@ protected: // AT_CellularDevice + protected: + virtual nsapi_error_t init(); + virtual nsapi_error_t shutdown(); ++ virtual nsapi_error_t soft_power_off(); ++ virtual nsapi_error_t soft_reset(); + + private: + static Module _module; +-- +2.45.2 + diff --git a/patches/0256-GEMALTO-CINTERION-disable-runtime-model-detection.patch b/patches/0256-GEMALTO-CINTERION-disable-runtime-model-detection.patch new file mode 100644 index 000000000..886e626f3 --- /dev/null +++ b/patches/0256-GEMALTO-CINTERION-disable-runtime-model-detection.patch @@ -0,0 +1,71 @@ +From 1082631c2a418ce76d003cccf247141f90433736 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Thu, 14 Nov 2024 15:57:44 +0100 +Subject: [PATCH] GEMALTO CINTERION: disable runtime model detection + + cellular_properties must be configured in ctor to properly configure all network urcs +--- + .../GEMALTO/CINTERION/GEMALTO_CINTERION.cpp | 39 ++++++------------- + 1 file changed, 11 insertions(+), 28 deletions(-) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp +index 40e74ab98f..3754ad50ec 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp +@@ -29,6 +29,17 @@ GEMALTO_CINTERION::Module GEMALTO_CINTERION::_module; + + GEMALTO_CINTERION::GEMALTO_CINTERION(FileHandle *fh) : AT_CellularDevice(fh) + { ++#if defined(MBED_CONF_GEMALTO_CINTERION_ELS61) ++ init_module_els61(); ++#elif defined(MBED_CONF_GEMALTO_CINTERION_BGS2) ++ init_module_bgs2(); ++#elif defined(MBED_CONF_GEMALTO_CINTERION_EMS31) ++ init_module_ems31(); ++#elif defined(MBED_CONF_GEMALTO_CINTERION_EHS5E) ++ init_module_ehs5e(); ++#else ++ init_module_tx62(); ++#endif + } + + AT_CellularContext *GEMALTO_CINTERION::create_context_impl(ATHandler &at, const char *apn, bool cp_req, bool nonip_req) +@@ -60,35 +71,7 @@ nsapi_error_t GEMALTO_CINTERION::init() + if (err != NSAPI_ERROR_OK) { + return err; + } +- +- CellularInformation *information = open_information(); +- if (!information) { +- return NSAPI_ERROR_NO_MEMORY; +- } +- char model[sizeof("EHS5-E") + 1]; // sizeof need to be long enough to hold just the model text +- nsapi_error_t ret = information->get_model(model, sizeof(model)); +- close_information(); +- if (ret != NSAPI_ERROR_OK) { +- tr_error("Cellular model not found!"); +- return NSAPI_ERROR_DEVICE_ERROR; +- } +- if (memcmp(model, "ELS61", sizeof("ELS61") - 1) == 0) { +- init_module_els61(); +- } else if (memcmp(model, "BGS2", sizeof("BGS2") - 1) == 0) { +- init_module_bgs2(); +- } else if (memcmp(model, "EMS31", sizeof("EMS31") - 1) == 0) { +- init_module_ems31(); +- } else if (memcmp(model, "EHS5-E", sizeof("EHS5-E") - 1) == 0) { +- init_module_ehs5e(); +- } else if (memcmp(model, "TX62", sizeof("TX62") - 1) == 0) { +- init_module_tx62(); +- } else { +- tr_error("Cinterion model unsupported %s", model); +- return NSAPI_ERROR_UNSUPPORTED; +- } +- tr_info("Cinterion model %s (%d)", model, _module); + set_at_urcs(); +- + return NSAPI_ERROR_OK; + } + +-- +2.45.2 + diff --git a/patches/0257-GEMALTO-CONTERION-add-ping.patch b/patches/0257-GEMALTO-CONTERION-add-ping.patch new file mode 100644 index 000000000..de6012bdc --- /dev/null +++ b/patches/0257-GEMALTO-CONTERION-add-ping.patch @@ -0,0 +1,53 @@ +From 09a4787109efd233aded2b960fcdfa10587eec9d Mon Sep 17 00:00:00 2001 +From: pennam +Date: Thu, 14 Nov 2024 15:59:37 +0100 +Subject: [PATCH] GEMALTO CONTERION: add ping + +--- + .../GEMALTO_CINTERION_CellularStack.cpp | 17 +++++++++++++++++ + .../CINTERION/GEMALTO_CINTERION_CellularStack.h | 1 + + 2 files changed, 18 insertions(+) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +index f96ae481f0..938cdbfef2 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +@@ -224,6 +224,23 @@ void GEMALTO_CINTERION_CellularStack::PSMDisable() { + } + } + ++int GEMALTO_CINTERION_CellularStack::ping(const char *host, int ttl) ++{ ++ MBED_ASSERT(host); ++ ++ _at.lock(); ++ _at.set_at_timeout(ttl + 1000); ++ _at.cmd_start_stop("^SISX", "=", "%s%d%s%d%d", "Ping", _cid, host, 1, ttl); ++ _at.resp_start("^SISX: \"Ping\","); ++ _at.skip_param(3); //pingInfoType, conProfileId, ip-address ++ int rTT = _at.read_int(); //roundTripTime ++ _at.resp_stop(); ++ _at.clear_error(); ++ _at.restore_at_timeout(); ++ _at.unlock(); ++ return rTT; ++} ++ + nsapi_error_t GEMALTO_CINTERION_CellularStack::socket_stack_init() + { + _at.lock(); +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h +index f89da8c314..159ea68aa9 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.h +@@ -43,6 +43,7 @@ public: + void stopGNSS(); + void PSMEnable(); + void PSMDisable(); ++ int ping(const char *host, int ttl); + + protected: + +-- +2.45.2 + diff --git a/patches/0258-GEMALTO-CINTERION-fix-gethostbyname.patch b/patches/0258-GEMALTO-CINTERION-fix-gethostbyname.patch new file mode 100644 index 000000000..730a4c690 --- /dev/null +++ b/patches/0258-GEMALTO-CINTERION-fix-gethostbyname.patch @@ -0,0 +1,25 @@ +From 46b1511db274990eb52e89c31e3e26af01d48d38 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Thu, 14 Nov 2024 16:00:17 +0100 +Subject: [PATCH] GEMALTO CINTERION: fix gethostbyname() + + Add missing _at.unlock() +--- + .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +index 938cdbfef2..8f7b44818a 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +@@ -309,6 +309,7 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::gethostbyname(const char *host, S + } else { + //Null string received + tr_info("Read %d bytes. Null string", size); ++ _at.unlock(); + return NSAPI_ERROR_NO_ADDRESS; + } + } +-- +2.45.2 + diff --git a/patches/0259-CellularStateMachine-wait-and-retry-if-signal-qualit.patch b/patches/0259-CellularStateMachine-wait-and-retry-if-signal-qualit.patch new file mode 100644 index 000000000..ebe18ff8c --- /dev/null +++ b/patches/0259-CellularStateMachine-wait-and-retry-if-signal-qualit.patch @@ -0,0 +1,26 @@ +From fd40e55bb7b121a0485bec2159672673b6c9bbf4 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Thu, 14 Nov 2024 16:03:10 +0100 +Subject: [PATCH] CellularStateMachine: wait and retry if signal + quality is unknown + +--- + .../cellular/source/framework/device/CellularStateMachine.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/connectivity/cellular/source/framework/device/CellularStateMachine.cpp b/connectivity/cellular/source/framework/device/CellularStateMachine.cpp +index 37416ca72e..a87c9e0d02 100644 +--- a/connectivity/cellular/source/framework/device/CellularStateMachine.cpp ++++ b/connectivity/cellular/source/framework/device/CellularStateMachine.cpp +@@ -458,7 +458,7 @@ void CellularStateMachine::state_signal_quality() + { + _cb_data.error = _network.get_signal_quality(_signal_quality.rssi, &_signal_quality.ber); + +- if (_cb_data.error != NSAPI_ERROR_OK) { ++ if ((_cb_data.error != NSAPI_ERROR_OK) || (_signal_quality.rssi == CellularNetwork::SignalQuality::SignalQualityUnknown)) { + retry_state_or_fail(); + } else { + _cb_data.data = &_signal_quality; +-- +2.45.2 + diff --git a/patches/0260-GEMALTO-CINTERION-fix-RECV-urc-while-reading-cornerc.patch b/patches/0260-GEMALTO-CINTERION-fix-RECV-urc-while-reading-cornerc.patch new file mode 100644 index 000000000..6a9a09835 --- /dev/null +++ b/patches/0260-GEMALTO-CINTERION-fix-RECV-urc-while-reading-cornerc.patch @@ -0,0 +1,26 @@ +From b1dabe5a8983493bab170e2d8b8f2a1ba40e4199 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Fri, 15 Nov 2024 11:37:52 +0100 +Subject: [PATCH] GEMALTO CINTERION fix RECV urc while reading + cornercase + +--- + .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +index 8f7b44818a..d164f85eb2 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +@@ -598,6 +598,8 @@ sisr_retry: + if (len == 0) { + tr_debug("Socket %d no data", socket->id); + _at.resp_stop(); ++ _at.process_oob(); ++ socket->pending_bytes = 0; + RESTORE_URCs_AND_RETURN(NSAPI_ERROR_WOULD_BLOCK); + } + if (len == -1) { +-- +2.45.2 + diff --git a/patches/0261-GEMALTO-CINTERION-add-1ms-sleep-in-socket-sendto.patch b/patches/0261-GEMALTO-CINTERION-add-1ms-sleep-in-socket-sendto.patch new file mode 100644 index 000000000..41f843488 --- /dev/null +++ b/patches/0261-GEMALTO-CINTERION-add-1ms-sleep-in-socket-sendto.patch @@ -0,0 +1,33 @@ +From ec7cc4e660b366364d8b11e4ee6480c41141ff04 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Wed, 26 Mar 2025 15:08:40 +0100 +Subject: [PATCH] GEMALTO CINTERION: add 1ms sleep in socket sendto + +--- + .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +index d164f85eb2..898f81cf66 100644 +--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp ++++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp +@@ -19,6 +19,7 @@ + #include "GEMALTO_CINTERION_CellularStack.h" + #include "GEMALTO_CINTERION.h" + #include "CellularLog.h" ++#include "platform/mbed_thread.h" + #include "rtos.h" + + using namespace std::chrono_literals; +@@ -538,6 +539,8 @@ sisw_retry: + socket->tx_ready = false; + } + ++ thread_sleep_for(1); // wait for modem to process the data; ++ + return (_at.get_last_error() == NSAPI_ERROR_OK) ? accept_len : NSAPI_ERROR_DEVICE_ERROR; + } + +-- +2.47.2 + diff --git a/patches/0262-Add-Stella-target.patch b/patches/0262-Add-Stella-target.patch new file mode 100644 index 000000000..ae9d94f89 --- /dev/null +++ b/patches/0262-Add-Stella-target.patch @@ -0,0 +1,343 @@ +From 2e630587c4174fc192a1945f09300e73fc2d5b87 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Mon, 30 Jun 2025 14:15:01 +0200 +Subject: [PATCH] Add Stella target + +--- + .../TARGET_STELLA/PinNames.h | 246 ++++++++++++++++++ + .../TARGET_STELLA/device.h | 39 +++ + targets/targets.json | 19 ++ + 3 files changed, 304 insertions(+) + create mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/PinNames.h + create mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/device.h + +diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/PinNames.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/PinNames.h +new file mode 100644 +index 0000000000..b4ef8a160b +--- /dev/null ++++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/PinNames.h +@@ -0,0 +1,246 @@ ++/* ++ * Copyright (c) 2019 Arduino SA ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++/* MBED TARGET LIST: ARDUINO_NANO33BLE */ ++ ++#ifndef MBED_PINNAMES_H ++#define MBED_PINNAMES_H ++ ++#include "cmsis.h" ++#include "nrf_gpio.h" ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++typedef enum { ++ PIN_INPUT, ++ PIN_OUTPUT ++} PinDirection; ++ ++///> define macro producing for example Px_y = NRF_GPIO_PIN_MAP(x, y) ++#define PinDef(port_num, pin_num) P##port_num##_##pin_num = NRF_GPIO_PIN_MAP(port_num, pin_num) ++ ++ ++typedef enum { ++ PinDef(0 , 0), // P0_0 = 0... ++ PinDef(0 , 1), ++ PinDef(0 , 2), ++ PinDef(0 , 3), ++ PinDef(0 , 4), ++ PinDef(0 , 5), ++ PinDef(0 , 6), ++ PinDef(0 , 7), ++ PinDef(0 , 8), ++ PinDef(0 , 9), ++ PinDef(0 , 10), ++ PinDef(0 , 11), ++ PinDef(0 , 12), ++ PinDef(0 , 13), ++ PinDef(0 , 14), ++ PinDef(0 , 15), ++ PinDef(0 , 16), ++ PinDef(0 , 17), ++ PinDef(0 , 18), ++ PinDef(0 , 19), ++ PinDef(0 , 20), ++ PinDef(0 , 21), ++ PinDef(0 , 22), ++ PinDef(0 , 23), ++ PinDef(0 , 24), ++ PinDef(0 , 25), ++ PinDef(0 , 26), ++ PinDef(0 , 27), ++ PinDef(0 , 28), ++ PinDef(0 , 29), ++ PinDef(0 , 30), ++ PinDef(0 , 31), ++ ++ PinDef(1 , 0), //P1_1 = 32... ++ PinDef(1 , 1), ++ PinDef(1 , 2), ++ PinDef(1 , 3), ++ PinDef(1 , 4), ++ PinDef(1 , 5), ++ PinDef(1 , 6), ++ PinDef(1 , 7), ++ PinDef(1 , 8), ++ PinDef(1 , 9), ++ PinDef(1 , 10), ++ PinDef(1 , 11), ++ PinDef(1 , 12), ++ PinDef(1 , 13), ++ PinDef(1 , 14), ++ PinDef(1 , 15), ++ ++ // Port0 ++ p0 = P0_0, ++ p1 = P0_1, ++ p2 = P0_2, ++ p3 = P0_3, ++ p4 = P0_4, ++ p5 = P0_5, ++ p6 = P0_6, ++ p7 = P0_7, ++ p8 = P0_8, ++ p9 = P0_9, ++ p10 = P0_10, ++ p11 = P0_11, ++ p12 = P0_12, ++ p13 = P0_13, ++ p14 = P0_14, ++ p15 = P0_15, ++ p16 = P0_16, ++ p17 = P0_17, ++ p18 = P0_18, ++ p19 = P0_19, ++ p20 = P0_20, ++ p21 = P0_21, ++ p22 = P0_22, ++ p23 = P0_23, ++ p24 = P0_24, ++ p25 = P0_25, ++ p26 = P0_26, ++ p27 = P0_27, ++ p28 = P0_28, ++ p29 = P0_29, ++ p30 = P0_30, ++ p31 = P0_31, ++ ++ // Port1 ++ p32 = P1_0, ++ p33 = P1_1, ++ p34 = P1_2, ++ p35 = P1_3, ++ p36 = P1_4, ++ p37 = P1_5, ++ p38 = P1_6, ++ p39 = P1_7, ++ p40 = P1_8, ++ p41 = P1_9, ++ p42 = P1_10, ++ p43 = P1_11, ++ p44 = P1_12, ++ p45 = P1_13, ++ p46 = P1_14, ++ p47 = P1_15, ++ ++ RX_PIN_NUMBER = P1_10, ++ TX_PIN_NUMBER = P1_3, ++ ++ LED_BUILTIN = P0_13, ++ LED_POWER = P1_9, ++ ++ LED_RED = p24, ++ LED_GREEN = p16, ++ LED_BLUE = p6, ++ ++ LED1 = LED_BUILTIN, ++ LED2 = LED_RED, ++ LED3 = LED_GREEN, ++ LED4 = LED_BLUE, ++ ++ // mBed interface Pins ++ CONSOLE_TX = TX_PIN_NUMBER, ++ CONSOLE_RX = RX_PIN_NUMBER, ++#if defined(MBED_CONF_TARGET_STDIO_UART_TX) ++ STDIO_UART_TX = MBED_CONF_TARGET_STDIO_UART_TX, ++#else ++ STDIO_UART_TX = CONSOLE_TX, ++#endif ++#if defined(MBED_CONF_TARGET_STDIO_UART_RX) ++ STDIO_UART_RX = MBED_CONF_TARGET_STDIO_UART_RX, ++#else ++ STDIO_UART_RX = CONSOLE_RX, ++#endif ++ ++ SPI_PSELMOSI0 = P1_1, ++ SPI_PSELMISO0 = P1_8, ++ SPI_PSELSS0 = P1_2, ++ SPI_PSELSCK0 = P0_13, ++ ++ SPIS_PSELMOSI = P1_1, ++ SPIS_PSELMISO = P1_8, ++ SPIS_PSELSS = P1_2, ++ SPIS_PSELSCK = P0_13, ++ ++ I2C_SDA0 = p31, ++ I2C_SCL0 = p2, ++ ++#ifndef ARDUINO_ARCH_MBED ++ // Digital Pins ++ D2 = P1_11, ++ D3 = P1_12, ++ D4 = P1_15, ++ D5 = P1_13, ++ D6 = P1_14, ++ D7 = P0_23, ++ D8 = P0_21, ++ D9 = P0_27, ++ D10 = P1_2, ++ D11 = P1_1, ++ D12 = P1_8, ++ D13 = P0_13, ++ ++ // Analog Pins ++ A0 = p4, ++ A1 = p5, ++ A2 = p30, ++ A3 = p29, ++ A4 = p31, ++ A5 = p2, ++ A6 = p28, ++ A7 = p3, ++#endif ++ ++ AIN0 = p4, ++ AIN1 = p5, ++ AIN2 = p30, ++ AIN3 = p29, ++ AIN6 = p28, ++ AIN7 = p3, ++ ++ // Arduino Nano 33 BLE Sense Pins ++ VDD_ENV = p22, ++ INT_APDS = p19, ++ ++ I2C_SDA1 = p14, ++ I2C_SCL1 = p15, ++ ++ MIC_PWR = p17, ++ PDM_CLK = p26, ++ PDM_DIN = p25, ++ ++ // Not connected ++ NC = (int)0xFFFFFFFF, ++ ++ STDIO_UART_RTS = NC, ++ STDIO_UART_CTS = NC, ++ ++} PinName; ++ ++typedef enum { ++ PullNone = 0, ++ PullDown = 1, ++ PullUp = 3, ++ PullDefault = PullUp ++} PinMode; ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/device.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/device.h +new file mode 100644 +index 0000000000..a086e5b7f0 +--- /dev/null ++++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA/device.h +@@ -0,0 +1,39 @@ ++// The 'features' section in 'target.json' is now used to create the device's hardware preprocessor switches. ++// Check the 'features' section of the target description in 'targets.json' for more details. ++/* mbed Microcontroller Library ++ * Copyright (c) 2006-2013 ARM Limited ++ * SPDX-License-Identifier: Apache-2.0 ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++#ifndef MBED_DEVICE_H ++#define MBED_DEVICE_H ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++#include "objects.h" ++ ++#endif +diff --git a/targets/targets.json b/targets/targets.json +index 83fa8c930a..f69cbeef40 100644 +--- a/targets/targets.json ++++ b/targets/targets.json +@@ -7332,6 +7332,25 @@ + "CONFIG_GPIO_AS_PINRESET" + ] + }, ++ "STELLA": { ++ "inherits": [ ++ "MCU_NRF52840" ++ ], ++ "features_add": [ ++ "STORAGE" ++ ], ++ "components_remove": [ ++ "QSPIF" ++ ], ++ "device_has_add": ["WATCHDOG"], ++ "device_has_remove": [ ++ "QSPI", ++ "ITM" ++ ], ++ "macros_add": [ ++ "CONFIG_GPIO_AS_PINRESET" ++ ] ++ }, + "EDGE_CONTROL": { + "inherits": ["MCU_NRF52840"], + "features_add": ["STORAGE"], +-- +2.47.2 + diff --git a/stella.variables b/stella.variables new file mode 100644 index 000000000..50c10fea6 --- /dev/null +++ b/stella.variables @@ -0,0 +1,5 @@ +export FLAVOUR="stella" +export VARIANTS=("STELLA") +export FQBNS=("stella") +export LIBRARIES=("PDM SPI Wire MRI USBHID USBMIDI USBMSD ThreadDebug Scheduler SFU Nano33BLE_System SocketWrapper MLC") +export BOOTLOADERS=("nano33ble") diff --git a/variants/ARDUINO_NANO33BLE/defines.txt b/variants/ARDUINO_NANO33BLE/defines.txt index 8bf9cde35..cd703265d 100644 --- a/variants/ARDUINO_NANO33BLE/defines.txt +++ b/variants/ARDUINO_NANO33BLE/defines.txt @@ -34,7 +34,7 @@ -DFEATURE_STORAGE=1 -D__FPU_PRESENT=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678457.278008 +-DMBED_BUILD_TIMESTAMP=1751295810.7982233 -D__MBED_CMSIS_RTOS_CM -DMBED_MPU_CUSTOM -DMBED_TICKLESS diff --git a/variants/ARDUINO_NANO33BLE/libs/libmbed.a b/variants/ARDUINO_NANO33BLE/libs/libmbed.a index 729832d39..709f5c1bd 100644 Binary files a/variants/ARDUINO_NANO33BLE/libs/libmbed.a and b/variants/ARDUINO_NANO33BLE/libs/libmbed.a differ diff --git a/variants/EDGE_CONTROL/defines.txt b/variants/EDGE_CONTROL/defines.txt index 4fd396229..c8f7009b8 100644 --- a/variants/EDGE_CONTROL/defines.txt +++ b/variants/EDGE_CONTROL/defines.txt @@ -38,7 +38,7 @@ -DFEATURE_STORAGE=1 -D__FPU_PRESENT=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678638.4581091 +-DMBED_BUILD_TIMESTAMP=1751295976.2142034 -D__MBED_CMSIS_RTOS_CM -DMBED_MPU_CUSTOM -DMBED_TICKLESS diff --git a/variants/EDGE_CONTROL/libs/libmbed.a b/variants/EDGE_CONTROL/libs/libmbed.a index d42e1137e..0b39e325b 100644 Binary files a/variants/EDGE_CONTROL/libs/libmbed.a and b/variants/EDGE_CONTROL/libs/libmbed.a differ diff --git a/variants/GENERIC_STM32H747_M4/defines.txt b/variants/GENERIC_STM32H747_M4/defines.txt index b44c062da..d5b9717bf 100644 --- a/variants/GENERIC_STM32H747_M4/defines.txt +++ b/variants/GENERIC_STM32H747_M4/defines.txt @@ -42,7 +42,7 @@ -DFEATURE_BLE=1 -D__FPU_PRESENT=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678579.8515525 +-DMBED_BUILD_TIMESTAMP=1751295923.2991855 -D__MBED_CMSIS_RTOS_CM -DMBED_MPU_CUSTOM -DMBED_TICKLESS diff --git a/variants/GENERIC_STM32H747_M4/libs/libmbed.a b/variants/GENERIC_STM32H747_M4/libs/libmbed.a index 72951f8a2..3d42847c7 100644 Binary files a/variants/GENERIC_STM32H747_M4/libs/libmbed.a and b/variants/GENERIC_STM32H747_M4/libs/libmbed.a differ diff --git a/variants/GIGA/defines.txt b/variants/GIGA/defines.txt index 20ad512ab..136fb76db 100644 --- a/variants/GIGA/defines.txt +++ b/variants/GIGA/defines.txt @@ -44,7 +44,7 @@ -DFEATURE_BLE=1 -D__FPU_PRESENT=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678847.5982425 +-DMBED_BUILD_TIMESTAMP=1751296168.0928738 -D__MBED_CMSIS_RTOS_CM -DMBED_TICKLESS -DMBEDTLS_FS_IO diff --git a/variants/GIGA/libs/libmbed.a b/variants/GIGA/libs/libmbed.a index 589bc11d9..79c8f413a 100644 Binary files a/variants/GIGA/libs/libmbed.a and b/variants/GIGA/libs/libmbed.a differ diff --git a/variants/NANO_RP2040_CONNECT/defines.txt b/variants/NANO_RP2040_CONNECT/defines.txt index e4f955eb0..a6602e69a 100644 --- a/variants/NANO_RP2040_CONNECT/defines.txt +++ b/variants/NANO_RP2040_CONNECT/defines.txt @@ -21,7 +21,7 @@ -DDEVICE_USTICKER=1 -DDEVICE_WATCHDOG=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678431.5907538 +-DMBED_BUILD_TIMESTAMP=1751295788.6373296 -D__MBED_CMSIS_RTOS_CM -DMBED_MPU_CUSTOM -DMBEDTLS_ENTROPY_NV_SEED diff --git a/variants/NANO_RP2040_CONNECT/libs/libmbed.a b/variants/NANO_RP2040_CONNECT/libs/libmbed.a index 475e6e096..0ededd88e 100644 Binary files a/variants/NANO_RP2040_CONNECT/libs/libmbed.a and b/variants/NANO_RP2040_CONNECT/libs/libmbed.a differ diff --git a/variants/NICLA/defines.txt b/variants/NICLA/defines.txt index 2c2321141..070856ff6 100644 --- a/variants/NICLA/defines.txt +++ b/variants/NICLA/defines.txt @@ -33,7 +33,7 @@ -DFEATURE_BLE=1 -D__FPU_PRESENT=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678686.654947 +-DMBED_BUILD_TIMESTAMP=1751296019.4294596 -D__MBED_CMSIS_RTOS_CM -DMBED_MPU_CUSTOM -DMBED_TICKLESS diff --git a/variants/NICLA/libs/libmbed.a b/variants/NICLA/libs/libmbed.a index 3cd144aff..0f5cfdad2 100644 Binary files a/variants/NICLA/libs/libmbed.a and b/variants/NICLA/libs/libmbed.a differ diff --git a/variants/NICLA_VISION/defines.txt b/variants/NICLA_VISION/defines.txt index 6e2d9a947..79ccdbfd8 100644 --- a/variants/NICLA_VISION/defines.txt +++ b/variants/NICLA_VISION/defines.txt @@ -45,7 +45,7 @@ -DFLOW_SILENT -D__FPU_PRESENT=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678724.8386328 +-DMBED_BUILD_TIMESTAMP=1751296054.2534025 -D__MBED_CMSIS_RTOS_CM -DMBED_TICKLESS -DMBEDTLS_FS_IO diff --git a/variants/NICLA_VISION/libs/libmbed.a b/variants/NICLA_VISION/libs/libmbed.a index c6991a257..78b2cae39 100644 Binary files a/variants/NICLA_VISION/libs/libmbed.a and b/variants/NICLA_VISION/libs/libmbed.a differ diff --git a/variants/OPTA/defines.txt b/variants/OPTA/defines.txt index 76b04861f..e2efa0d9a 100644 --- a/variants/OPTA/defines.txt +++ b/variants/OPTA/defines.txt @@ -44,7 +44,7 @@ -DFEATURE_BLE=1 -D__FPU_PRESENT=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678787.2016976 +-DMBED_BUILD_TIMESTAMP=1751296112.1474662 -D__MBED_CMSIS_RTOS_CM -DMBED_TICKLESS -DMBEDTLS_FS_IO diff --git a/variants/OPTA/libs/libmbed.a b/variants/OPTA/libs/libmbed.a index 0dd368bf8..bf4629098 100644 Binary files a/variants/OPTA/libs/libmbed.a and b/variants/OPTA/libs/libmbed.a differ diff --git a/variants/OPTA/pins_arduino.h b/variants/OPTA/pins_arduino.h index 301ac30aa..107190dc8 100644 --- a/variants/OPTA/pins_arduino.h +++ b/variants/OPTA/pins_arduino.h @@ -68,6 +68,16 @@ static const uint8_t A6 = PIN_A6; static const uint8_t A7 = PIN_A7; #define ADC_RESOLUTION 12 +// Pin mapping to match serigraphy +static const uint8_t I1 = PIN_A0; +static const uint8_t I2 = PIN_A1; +static const uint8_t I3 = PIN_A2; +static const uint8_t I4 = PIN_A3; +static const uint8_t I5 = PIN_A4; +static const uint8_t I6 = PIN_A5; +static const uint8_t I7 = PIN_A6; +static const uint8_t I8 = PIN_A7; + // Digital pins // ----------- #define D0 (0u) diff --git a/variants/PORTENTA_H7_M7/defines.txt b/variants/PORTENTA_H7_M7/defines.txt index 24f4526bd..6296cba65 100644 --- a/variants/PORTENTA_H7_M7/defines.txt +++ b/variants/PORTENTA_H7_M7/defines.txt @@ -46,7 +46,7 @@ -D__FPU_PRESENT=1 -DLSE_STARTUP_TIMEOUT=200 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678521.1974137 +-DMBED_BUILD_TIMESTAMP=1751295869.6783228 -D__MBED_CMSIS_RTOS_CM -DMBED_TICKLESS -DMBEDTLS_FS_IO diff --git a/variants/PORTENTA_H7_M7/libs/libmbed.a b/variants/PORTENTA_H7_M7/libs/libmbed.a index 286f51da4..29612e1b2 100644 Binary files a/variants/PORTENTA_H7_M7/libs/libmbed.a and b/variants/PORTENTA_H7_M7/libs/libmbed.a differ diff --git a/variants/PORTENTA_X8/defines.txt b/variants/PORTENTA_X8/defines.txt index 84f8e1a24..c8bf9be16 100644 --- a/variants/PORTENTA_X8/defines.txt +++ b/variants/PORTENTA_X8/defines.txt @@ -34,7 +34,7 @@ -DEXTRA_IDLE_STACK_REQUIRED -D__FPU_PRESENT=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678907.604638 +-DMBED_BUILD_TIMESTAMP=1751296223.5654757 -D__MBED_CMSIS_RTOS_CM -DMBED_MPU_CUSTOM -DMBED_TICKLESS diff --git a/variants/PORTENTA_X8/libs/libmbed.a b/variants/PORTENTA_X8/libs/libmbed.a index f97d15a42..6dc74d033 100644 Binary files a/variants/PORTENTA_X8/libs/libmbed.a and b/variants/PORTENTA_X8/libs/libmbed.a differ diff --git a/variants/RASPBERRY_PI_PICO/defines.txt b/variants/RASPBERRY_PI_PICO/defines.txt index 145819bb8..43f6f22d4 100644 --- a/variants/RASPBERRY_PI_PICO/defines.txt +++ b/variants/RASPBERRY_PI_PICO/defines.txt @@ -21,7 +21,7 @@ -DDEVICE_USTICKER=1 -DDEVICE_WATCHDOG=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1738678494.5493546 +-DMBED_BUILD_TIMESTAMP=1751295845.4641042 -D__MBED_CMSIS_RTOS_CM -DMBED_MPU_CUSTOM -DMBEDTLS_ENTROPY_NV_SEED diff --git a/variants/RASPBERRY_PI_PICO/libs/libmbed.a b/variants/RASPBERRY_PI_PICO/libs/libmbed.a index 1075eec8e..2e2d98df1 100644 Binary files a/variants/RASPBERRY_PI_PICO/libs/libmbed.a and b/variants/RASPBERRY_PI_PICO/libs/libmbed.a differ diff --git a/variants/STELLA/cflags.txt b/variants/STELLA/cflags.txt new file mode 100644 index 000000000..557950364 --- /dev/null +++ b/variants/STELLA/cflags.txt @@ -0,0 +1,24 @@ +-c +-std=gnu11 +-DAPPLICATION_ADDR=0x10000 +-DAPPLICATION_SIZE=0xf0000 +-DMBED_RAM_SIZE=0x40000 +-DMBED_RAM_START=0x20000000 +-DMBED_ROM_SIZE=0x100000 +-DMBED_ROM_START=0x0 +-DMBED_TRAP_ERRORS_ENABLED=1 +-Os +-Wall +-Wextra +-Wno-missing-field-initializers +-Wno-unused-parameter +-fdata-sections +-ffunction-sections +-fmessage-length=0 +-fno-exceptions +-fomit-frame-pointer +-funsigned-char +-mcpu=cortex-m4 +-mfloat-abi=softfp +-mfpu=fpv4-sp-d16 +-mthumb diff --git a/variants/STELLA/conf/.mbedignore b/variants/STELLA/conf/.mbedignore new file mode 100644 index 000000000..3562a46dc --- /dev/null +++ b/variants/STELLA/conf/.mbedignore @@ -0,0 +1,2 @@ +mbed-os/connectivity/drivers/cellular/* +mbed-os/connectivity/nanostack/* \ No newline at end of file diff --git a/variants/STELLA/conf/mbed_app.json b/variants/STELLA/conf/mbed_app.json new file mode 100644 index 000000000..279ca8808 --- /dev/null +++ b/variants/STELLA/conf/mbed_app.json @@ -0,0 +1,19 @@ +{ + "macros": [ + "NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS=8", + "NRFX_WDT_ENABLED=1" + ], + "target_overrides": { + "*": { + "target.printf_lib": "std", + "platform.stdio-buffered-serial": false, + "platform.stdio-baud-rate": 115200, + "platform.default-serial-baud-rate": 115200, + "platform.callback-nontrivial": true, + "rtos.main-thread-stack-size": 32768, + "cordio.max-connections": 5, + "platform.all-stats-enabled": true, + "target.mbed_app_start": "0x10000" + } + } +} diff --git a/variants/STELLA/cxxflags.txt b/variants/STELLA/cxxflags.txt new file mode 100644 index 000000000..ca7f1f869 --- /dev/null +++ b/variants/STELLA/cxxflags.txt @@ -0,0 +1,26 @@ +-Wvla +-c +-fno-rtti +-std=gnu++14 +-DAPPLICATION_ADDR=0x10000 +-DAPPLICATION_SIZE=0xf0000 +-DMBED_RAM_SIZE=0x40000 +-DMBED_RAM_START=0x20000000 +-DMBED_ROM_SIZE=0x100000 +-DMBED_ROM_START=0x0 +-DMBED_TRAP_ERRORS_ENABLED=1 +-Os +-Wall +-Wextra +-Wno-missing-field-initializers +-Wno-unused-parameter +-fdata-sections +-ffunction-sections +-fmessage-length=0 +-fno-exceptions +-fomit-frame-pointer +-funsigned-char +-mcpu=cortex-m4 +-mfloat-abi=softfp +-mfpu=fpv4-sp-d16 +-mthumb diff --git a/variants/STELLA/defines.txt b/variants/STELLA/defines.txt new file mode 100644 index 000000000..8199cf727 --- /dev/null +++ b/variants/STELLA/defines.txt @@ -0,0 +1,71 @@ + +-DARM_MATH_CM4 +-DBOARD_PCA10056 +-D__CMSIS_RTOS +-DCMSIS_VECTAB_VIRTUAL +-DCMSIS_VECTAB_VIRTUAL_HEADER_FILE=\"cmsis_nvic.h\" +-DCOMPONENT_FLASHIAP=1 +-DCONFIG_GPIO_AS_PINRESET +-D__CORTEX_M4 +-DDEVICE_ANALOGIN=1 +-DDEVICE_FLASH=1 +-DDEVICE_I2C=1 +-DDEVICE_I2C_ASYNCH=1 +-DDEVICE_I2CSLAVE=1 +-DDEVICE_INTERRUPTIN=1 +-DDEVICE_LPTICKER=1 +-DDEVICE_PORTIN=1 +-DDEVICE_PORTINOUT=1 +-DDEVICE_PORTOUT=1 +-DDEVICE_PWMOUT=1 +-DDEVICE_SERIAL=1 +-DDEVICE_SERIAL_ASYNCH=1 +-DDEVICE_SERIAL_FC=1 +-DDEVICE_SLEEP=1 +-DDEVICE_SPI=1 +-DDEVICE_SPI_ASYNCH=1 +-DDEVICE_SYSTICK_CLK_OFF_DURING_SLEEP=1 +-DDEVICE_TRNG=1 +-DDEVICE_USBDEVICE=1 +-DDEVICE_USTICKER=1 +-DDEVICE_WATCHDOG=1 +-DFEATURE_BLE=1 +-DFEATURE_CRYPTOCELL310=1 +-DFEATURE_STORAGE=1 +-D__FPU_PRESENT=1 +-D__MBED__=1 +-DMBED_BUILD_TIMESTAMP=1751296267.721782 +-D__MBED_CMSIS_RTOS_CM +-DMBED_MPU_CUSTOM +-DMBED_TICKLESS +-DMBEDTLS_CONFIG_HW_SUPPORT +-DNRF52840_XXAA +-DNRF52_PAN_20 +-DSWI_DISABLE0 +-DTARGET_CORDIO +-DTARGET_CORDIO_LL +-DTARGET_CORTEX +-DTARGET_CORTEX_M +-DTARGET_LIKE_CORTEX_M4 +-DTARGET_LIKE_MBED +-DTARGET_M4 +-DTARGET_MCU_NRF52840 +-DTARGET_NAME=STELLA +-DTARGET_NORDIC +-DTARGET_NORDIC_CORDIO +-DTARGET_NRF52 +-DTARGET_NRF52840 +-DTARGET_NRF5x +-DTARGET_RELEASE +-DTARGET_RTOS_M4_M7 +-DTARGET_SDK_15_0 +-DTARGET_SOFTDEVICE_NONE +-DTARGET_STELLA +-DTOOLCHAIN_GCC +-DTOOLCHAIN_GCC_ARM +-DWSF_MAX_HANDLERS=10 +-DMBED_NO_GLOBAL_USING_DIRECTIVE=1 +-DCORE_MAJOR= +-DCORE_MINOR= +-DCORE_PATCH= +-DUSE_ARDUINO_PINOUT diff --git a/variants/STELLA/includes.txt b/variants/STELLA/includes.txt new file mode 100644 index 000000000..f04ec2f39 --- /dev/null +++ b/variants/STELLA/includes.txt @@ -0,0 +1,293 @@ +-iwithprefixbefore/mbed +-iwithprefixbefore/mbed/cmsis +-iwithprefixbefore/mbed/cmsis/CMSIS_5 +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2 +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/Include +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Config +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Include +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Include1 +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Source +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_M +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_M/Include +-iwithprefixbefore/mbed/cmsis/device +-iwithprefixbefore/mbed/cmsis/device/RTE +-iwithprefixbefore/mbed/cmsis/device/RTE/include +-iwithprefixbefore/mbed/cmsis/device/rtos +-iwithprefixbefore/mbed/cmsis/device/rtos/include +-iwithprefixbefore/mbed/connectivity +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/common +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/compatibility +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/compatibility/ble +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/driver +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/gap +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/gatt +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/include/ble/services +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/include/ble +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/include/common +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble/bb +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble/lctr +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble/lhci +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/ble/sch +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/common +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/common/bb +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/controller/sources/common/sch +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/thirdparty +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack/thirdparty/uecc +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/stack_adaptation +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/hci +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/hci/dual_chip +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/sec +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/sec/common +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/cfg +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/dm +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/hci +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/l2c +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/smp +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/platform +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/platform/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/wsf +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/wsf/include +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/libraries/cordio_stack/wsf/include/util +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/common +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/cordio +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/cordio/source +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/cordio/stack_adaptation +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/generic +-iwithprefixbefore/mbed/connectivity/FEATURE_BLE/source/pal +-iwithprefixbefore/mbed/connectivity/cellular +-iwithprefixbefore/mbed/connectivity/cellular/include +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/API +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/AT +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/common +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/device +-iwithprefixbefore/mbed/connectivity/drivers +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/atmel-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/atmel-rf-driver/atmel-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/atmel-rf-driver/source +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/mcr20a-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/mcr20a-rf-driver/mcr20a-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/mcr20a-rf-driver/source +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/stm-s2lp-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/stm-s2lp-rf-driver/source +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/ble/FEATURE_BLE/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/FEATURE_CRYPTOCELL310 +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/FEATURE_CRYPTOCELL310/TARGET_MCU_NRF52840 +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/FEATURE_CRYPTOCELL310/include +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/FEATURE_CRYPTOCELL310/include/cryptocell310 +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/FEATURE_CRYPTOCELL310/include/cryptocell310/internal +-iwithprefixbefore/mbed/connectivity/drivers/nfc +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512 +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/include +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/include/nfc +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/include/nfc/controllers +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/source +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/source/transceiver +-iwithprefixbefore/mbed/connectivity/drivers/wifi +-iwithprefixbefore/mbed/connectivity/drivers/wifi/esp8266-driver +-iwithprefixbefore/mbed/connectivity/drivers/wifi/esp8266-driver/ESP8266 +-iwithprefixbefore/mbed/connectivity/libraries +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap/mbed-coap +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap/source +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap/source/include +-iwithprefixbefore/mbed/connectivity/libraries/nanostack-libservice +-iwithprefixbefore/mbed/connectivity/libraries/nanostack-libservice/mbed-client-libservice +-iwithprefixbefore/mbed/connectivity/libraries/nanostack-libservice/mbed-client-libservice/platform +-iwithprefixbefore/mbed/connectivity/libraries/ppp +-iwithprefixbefore/mbed/connectivity/libraries/ppp/include +-iwithprefixbefore/mbed/connectivity/libraries/ppp/include/polarssl +-iwithprefixbefore/mbed/connectivity/libraries/ppp/include/ppp +-iwithprefixbefore/mbed/connectivity/lorawan +-iwithprefixbefore/mbed/connectivity/lorawan/include +-iwithprefixbefore/mbed/connectivity/lorawan/include/lorawan +-iwithprefixbefore/mbed/connectivity/lorawan/lorastack +-iwithprefixbefore/mbed/connectivity/lorawan/lorastack/mac +-iwithprefixbefore/mbed/connectivity/lorawan/lorastack/phy +-iwithprefixbefore/mbed/connectivity/lorawan/system +-iwithprefixbefore/mbed/connectivity/mbedtls +-iwithprefixbefore/mbed/connectivity/mbedtls/include +-iwithprefixbefore/mbed/connectivity/mbedtls/include/mbedtls +-iwithprefixbefore/mbed/connectivity/mbedtls/platform +-iwithprefixbefore/mbed/connectivity/mbedtls/platform/inc +-iwithprefixbefore/mbed/connectivity/mbedtls/source +-iwithprefixbefore/mbed/connectivity/netsocket +-iwithprefixbefore/mbed/connectivity/netsocket/include +-iwithprefixbefore/mbed/connectivity/netsocket/include/netsocket +-iwithprefixbefore/mbed/connectivity/nfc +-iwithprefixbefore/mbed/connectivity/nfc/include +-iwithprefixbefore/mbed/connectivity/nfc/include/nfc +-iwithprefixbefore/mbed/connectivity/nfc/include/nfc/ndef +-iwithprefixbefore/mbed/connectivity/nfc/include/nfc/ndef/common +-iwithprefixbefore/mbed/connectivity/nfc/libraries +-iwithprefixbefore/mbed/connectivity/nfc/libraries/acore +-iwithprefixbefore/mbed/connectivity/nfc/libraries/acore/acore +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/ndef +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/platform +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech/iso7816 +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech/isodep +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech/type4 +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/transceiver +-iwithprefixbefore/mbed/drivers +-iwithprefixbefore/mbed/drivers/device_key +-iwithprefixbefore/mbed/drivers/device_key/include +-iwithprefixbefore/mbed/drivers/device_key/include/device_key +-iwithprefixbefore/mbed/drivers/include +-iwithprefixbefore/mbed/drivers/include/drivers +-iwithprefixbefore/mbed/drivers/include/drivers/interfaces +-iwithprefixbefore/mbed/drivers/usb +-iwithprefixbefore/mbed/drivers/usb/include +-iwithprefixbefore/mbed/drivers/usb/include/usb +-iwithprefixbefore/mbed/drivers/usb/include/usb/internal +-iwithprefixbefore/mbed/events +-iwithprefixbefore/mbed/events/include +-iwithprefixbefore/mbed/events/include/events +-iwithprefixbefore/mbed/events/include/events/internal +-iwithprefixbefore/mbed/features +-iwithprefixbefore/mbed/features/frameworks +-iwithprefixbefore/mbed/features/frameworks/greentea-client +-iwithprefixbefore/mbed/features/frameworks/greentea-client/greentea-client +-iwithprefixbefore/mbed/features/frameworks/mbed-client-cli +-iwithprefixbefore/mbed/features/frameworks/mbed-client-cli/mbed-client-cli +-iwithprefixbefore/mbed/features/frameworks/unity +-iwithprefixbefore/mbed/features/frameworks/unity/unity +-iwithprefixbefore/mbed/features/frameworks/utest +-iwithprefixbefore/mbed/features/frameworks/utest/utest +-iwithprefixbefore/mbed/hal +-iwithprefixbefore/mbed/hal/include +-iwithprefixbefore/mbed/hal/include/hal +-iwithprefixbefore/mbed/hal/usb +-iwithprefixbefore/mbed/hal/usb/include +-iwithprefixbefore/mbed/hal/usb/include/usb +-iwithprefixbefore/mbed/platform +-iwithprefixbefore/mbed/platform/cxxsupport +-iwithprefixbefore/mbed/platform/include +-iwithprefixbefore/mbed/platform/include/platform +-iwithprefixbefore/mbed/platform/include/platform/internal +-iwithprefixbefore/mbed/platform/mbed-trace +-iwithprefixbefore/mbed/platform/mbed-trace/include +-iwithprefixbefore/mbed/platform/mbed-trace/include/mbed-trace +-iwithprefixbefore/mbed/platform/randlib +-iwithprefixbefore/mbed/platform/randlib/include +-iwithprefixbefore/mbed/platform/randlib/include/mbed-client-randlib +-iwithprefixbefore/mbed/platform/randlib/include/mbed-client-randlib/platform +-iwithprefixbefore/mbed/platform/source +-iwithprefixbefore/mbed/platform/source/minimal-printf +-iwithprefixbefore/mbed/rtos +-iwithprefixbefore/mbed/rtos/include +-iwithprefixbefore/mbed/rtos/include/rtos +-iwithprefixbefore/mbed/rtos/include/rtos/internal +-iwithprefixbefore/mbed/rtos/source +-iwithprefixbefore/mbed/storage +-iwithprefixbefore/mbed/storage/blockdevice +-iwithprefixbefore/mbed/storage/blockdevice/COMPONENT_FLASHIAP +-iwithprefixbefore/mbed/storage/blockdevice/COMPONENT_FLASHIAP/include +-iwithprefixbefore/mbed/storage/blockdevice/COMPONENT_FLASHIAP/include/FlashIAP +-iwithprefixbefore/mbed/storage/blockdevice/include +-iwithprefixbefore/mbed/storage/blockdevice/include/blockdevice +-iwithprefixbefore/mbed/storage/blockdevice/include/blockdevice/internal +-iwithprefixbefore/mbed/storage/filesystem +-iwithprefixbefore/mbed/storage/filesystem/fat +-iwithprefixbefore/mbed/storage/filesystem/fat/ChaN +-iwithprefixbefore/mbed/storage/filesystem/fat/include +-iwithprefixbefore/mbed/storage/filesystem/fat/include/fat +-iwithprefixbefore/mbed/storage/filesystem/include +-iwithprefixbefore/mbed/storage/filesystem/include/filesystem +-iwithprefixbefore/mbed/storage/filesystem/littlefs +-iwithprefixbefore/mbed/storage/filesystem/littlefs/include +-iwithprefixbefore/mbed/storage/filesystem/littlefs/include/littlefs +-iwithprefixbefore/mbed/storage/filesystem/littlefs/littlefs +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2 +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2/include +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2/include/littlefsv2 +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2/littlefs +-iwithprefixbefore/mbed/storage/kvstore +-iwithprefixbefore/mbed/storage/kvstore/direct_access_devicekey +-iwithprefixbefore/mbed/storage/kvstore/direct_access_devicekey/include +-iwithprefixbefore/mbed/storage/kvstore/direct_access_devicekey/include/direct_access_devicekey +-iwithprefixbefore/mbed/storage/kvstore/filesystemstore +-iwithprefixbefore/mbed/storage/kvstore/filesystemstore/include +-iwithprefixbefore/mbed/storage/kvstore/filesystemstore/include/filesystemstore +-iwithprefixbefore/mbed/storage/kvstore/include +-iwithprefixbefore/mbed/storage/kvstore/include/kvstore +-iwithprefixbefore/mbed/storage/kvstore/kv_config +-iwithprefixbefore/mbed/storage/kvstore/kv_config/include +-iwithprefixbefore/mbed/storage/kvstore/kv_config/include/kv_config +-iwithprefixbefore/mbed/storage/kvstore/kvstore_global_api +-iwithprefixbefore/mbed/storage/kvstore/kvstore_global_api/include +-iwithprefixbefore/mbed/storage/kvstore/kvstore_global_api/include/kvstore_global_api +-iwithprefixbefore/mbed/storage/kvstore/securestore +-iwithprefixbefore/mbed/storage/kvstore/securestore/include +-iwithprefixbefore/mbed/storage/kvstore/securestore/include/securestore +-iwithprefixbefore/mbed/storage/kvstore/tdbstore +-iwithprefixbefore/mbed/storage/kvstore/tdbstore/include +-iwithprefixbefore/mbed/storage/kvstore/tdbstore/include/tdbstore +-iwithprefixbefore/mbed/targets/TARGET_NORDIC +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52 +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840 +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_STELLA +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/config +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/device +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0 +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_NONE +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_NONE/libraries +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_NONE/libraries/fstorage +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/TARGET_SOFTDEVICE_NONE/nrf_soc_nosd +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/atomic +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/atomic_fifo +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/balloc +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/delay +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/experimental_log +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/experimental_log/src +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/experimental_memobj +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/experimental_section_vars +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/fds +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/fstorage +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/queue +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/spi_mngr +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/strerror +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/twi_mngr +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/components/libraries/util +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/integration +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/integration/nrfx +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/integration/nrfx/legacy +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/integration/nrfx/legacy/ble_flash +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/drivers +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/drivers/include +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/drivers/src +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/drivers/src/prs +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/hal +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/mdk +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/nrfx/soc +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/softdevice +-iwithprefixbefore/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_SDK_15_0/modules/softdevice/common diff --git a/variants/STELLA/ldflags.txt b/variants/STELLA/ldflags.txt new file mode 100644 index 000000000..510613aa2 --- /dev/null +++ b/variants/STELLA/ldflags.txt @@ -0,0 +1,22 @@ +-DMBED_APP_SIZE=0xf0000 +-DMBED_APP_START=0x10000 +-DMBED_BOOT_STACK_SIZE=1024 +-DMBED_RAM_SIZE=0x40000 +-DMBED_RAM_START=0x20000000 +-DMBED_ROM_SIZE=0x100000 +-DMBED_ROM_START=0x0 +-DXIP_ENABLE=0 +-Wl,--gc-sections +-Wl,--wrap,_calloc_r +-Wl,--wrap,_free_r +-Wl,--wrap,_malloc_r +-Wl,--wrap,_memalign_r +-Wl,--wrap,_realloc_r +-Wl,--wrap,atexit +-Wl,--wrap,exit +-Wl,--wrap,main +-Wl,-n +-mcpu=cortex-m4 +-mfloat-abi=softfp +-mfpu=fpv4-sp-d16 +-mthumb diff --git a/variants/STELLA/libs/libcc_310_core.a b/variants/STELLA/libs/libcc_310_core.a new file mode 100644 index 000000000..bace518f9 Binary files /dev/null and b/variants/STELLA/libs/libcc_310_core.a differ diff --git a/variants/STELLA/libs/libcc_310_ext.a b/variants/STELLA/libs/libcc_310_ext.a new file mode 100644 index 000000000..64c57cceb Binary files /dev/null and b/variants/STELLA/libs/libcc_310_ext.a differ diff --git a/variants/STELLA/libs/libcc_310_trng.a b/variants/STELLA/libs/libcc_310_trng.a new file mode 100644 index 000000000..df24c2c2c Binary files /dev/null and b/variants/STELLA/libs/libcc_310_trng.a differ diff --git a/variants/STELLA/libs/libmbed.a b/variants/STELLA/libs/libmbed.a new file mode 100644 index 000000000..de69bdf91 Binary files /dev/null and b/variants/STELLA/libs/libmbed.a differ diff --git a/variants/STELLA/linker_script.ld b/variants/STELLA/linker_script.ld new file mode 100644 index 000000000..270da6c43 --- /dev/null +++ b/variants/STELLA/linker_script.ld @@ -0,0 +1,154 @@ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x10000, LENGTH = 0xf0000 + RAM_NVIC (rwx) : ORIGIN = 0x20000000, LENGTH = 0x100 + RAM_CRASH_DATA (rwx) : ORIGIN = (0x20000000 + 0x100), LENGTH = 0x100 + RAM (rwx) : ORIGIN = ((0x20000000 + 0x100) + 0x100), LENGTH = (0x40000 - (0x100 + 0x100)) +} +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +ENTRY(Reset_Handler) +SECTIONS +{ + .text : + { + KEEP(*(.Vectors)) + *(.text*) + KEEP(*(.init)) + KEEP(*(.fini)) + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + *(.rodata*) + KEEP(*(.eh_frame*)) + } > FLASH + .sdh_soc_observers : + { + PROVIDE(__start_sdh_soc_observers = .); + KEEP(*(SORT(.sdh_soc_observers*))) + PROVIDE(__stop_sdh_soc_observers = .); + } > FLASH + .sdh_stack_observers : + { + PROVIDE(__start_sdh_stack_observers = .); + KEEP(*(SORT(.sdh_stack_observers*))) + PROVIDE(__stop_sdh_stack_observers = .); + } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH + .sdh_state_observers : + { + PROVIDE(__start_sdh_state_observers = .); + KEEP(*(SORT(.sdh_state_observers*))) + PROVIDE(__stop_sdh_state_observers = .); + } > FLASH + .sdh_ble_observers : + { + PROVIDE(__start_sdh_ble_observers = .); + KEEP(*(SORT(.sdh_ble_observers*))) + PROVIDE(__stop_sdh_ble_observers = .); + } > FLASH + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + __etext = .; + .data : AT (__etext) + { + __data_start__ = .; + *(vtable) + *(.data*) + . = ALIGN(8); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(8); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(8); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(8); + PROVIDE(__start_fs_data = .); + KEEP(*(.fs_data)) + PROVIDE(__stop_fs_data = .); + *(.jcr) + . = ALIGN(8); + __data_end__ = .; + } > RAM + __edata = .; + .nvictable (NOLOAD) : + { + PROVIDE(__start_nvictable = .); + KEEP(*(.nvictable)) + PROVIDE(__stop_nvictable = .); + } > RAM_NVIC + .crash_data_ram : + { + . = ALIGN(8); + __CRASH_DATA_RAM__ = .; + __CRASH_DATA_RAM_START__ = .; + KEEP(*(.keep.crash_data_ram)) + *(.m_crash_data_ram) + . += 0x100; + . = ALIGN(8); + __CRASH_DATA_RAM_END__ = .; + } > RAM_CRASH_DATA + .noinit (NOLOAD) : + { + PROVIDE(__start_noinit = .); + KEEP(*(.noinit)) + PROVIDE(__stop_noinit = .); + } > RAM + .bss : + { + . = ALIGN(8); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(8); + __bss_end__ = .; + } > RAM + .heap (NOLOAD): + { + __end__ = .; + end = __end__; + *(.heap*); + ASSERT(. <= (ORIGIN(RAM) + LENGTH(RAM) - 0x400), "heap region overflowed into stack"); + . = ORIGIN(RAM) + LENGTH(RAM) - 0x400; + __HeapLimit = .; + } > RAM + PROVIDE(__heap_start = ADDR(.heap)); + PROVIDE(__heap_size = SIZEOF(.heap)); + PROVIDE(__mbed_sbrk_start = ADDR(.heap)); + PROVIDE(__mbed_krbs_start = ADDR(.heap) + SIZEOF(.heap)); + .stack (NOLOAD): + { + __StackLimit = .; + *(.stack*) + . = ORIGIN(RAM) + LENGTH(RAM); + } > RAM + __StackTop = ORIGIN(RAM) + LENGTH(RAM); + __StackLimit = __StackTop - 0x400; + PROVIDE(__stack = __StackTop); +} diff --git a/variants/STELLA/mbed_config.h b/variants/STELLA/mbed_config.h new file mode 100644 index 000000000..7af2c4570 --- /dev/null +++ b/variants/STELLA/mbed_config.h @@ -0,0 +1,395 @@ +/* + * mbed SDK + * Copyright (c) 2017 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Automatically generated configuration file. +// DO NOT EDIT, content will be overwritten. + +#ifndef __MBED_CONFIG_DATA__ +#define __MBED_CONFIG_DATA__ + +// Configuration parameters +#define ATT_NUM_SIMUL_NTF 1 // set by library:cordio +#define ATT_NUM_SIMUL_WRITE_CMD 1 // set by library:cordio +#define BLE_FEATURE_EXTENDED_ADVERTISING 1 // set by library:ble +#define BLE_FEATURE_GATT_CLIENT 1 // set by library:ble +#define BLE_FEATURE_GATT_SERVER 1 // set by library:ble +#define BLE_FEATURE_PERIODIC_ADVERTISING 1 // set by library:ble +#define BLE_FEATURE_PHY_MANAGEMENT 1 // set by library:ble +#define BLE_FEATURE_PRIVACY 1 // set by library:ble +#define BLE_FEATURE_SECURE_CONNECTIONS 1 // set by library:ble +#define BLE_FEATURE_SECURITY 1 // set by library:ble +#define BLE_FEATURE_SIGNING 1 // set by library:ble +#define BLE_FEATURE_WHITELIST 1 // set by library:ble +#define BLE_GAP_HOST_BASED_PRIVATE_ADDRESS_RESOLUTION 0 // set by library:ble[MCU_NRF52840] +#define BLE_GAP_HOST_MAX_OUTSTANDING_ADVERTISING_START_COMMANDS 4 // set by library:ble +#define BLE_GAP_HOST_PRIVACY_RESOLVED_CACHE_SIZE 16 // set by library:ble +#define BLE_GAP_MAX_ADVERTISING_REPORTS_PENDING_ADDRESS_RESOLUTION 16 // set by library:ble +#define BLE_GAP_MAX_ADVERTISING_SETS 15 // set by library:ble +#define BLE_PASSKEY_DISPLAY_REVERSED_DIGITS_DEPRECATION 1 // set by library:ble +#define BLE_ROLE_BROADCASTER 1 // set by library:ble +#define BLE_ROLE_CENTRAL 1 // set by library:ble +#define BLE_ROLE_OBSERVER 1 // set by library:ble +#define BLE_ROLE_PERIPHERAL 1 // set by library:ble +#define BLE_SECURITY_DATABASE_FILESYSTEM 1 // set by library:ble +#define BLE_SECURITY_DATABASE_KVSTORE 0 // set by library:ble +#define BLE_SECURITY_DATABASE_MAX_ENTRIES 5 // set by library:ble +#define CHCI_TR_CUSTOM 1 // set by library:cordio-ll +#define CHCI_TR_UART 0 // set by library:cordio-ll +#define CORDIO_ZERO_COPY_HCI 1 // set by library:cordio-nordic-ll +#define DM_CONN_MAX 5 // set by application[*] +#define DM_NUM_ADV_SETS 3 // set by library:cordio +#define DM_NUM_PHYS 3 // set by library:cordio +#define DM_SYNC_MAX 1 // set by library:cordio +#define EATT_CONN_CHAN_MAX 1 // set by library:cordio +#define L2C_COC_CHAN_MAX 1 // set by library:cordio +#define L2C_COC_REG_MAX 1 // set by library:cordio +#define LHCI_ENABLE_VS 0 // set by library:cordio-ll +#define MBED_ALL_STATS_ENABLED 1 // set by application[*] +#define MBED_CONF_ATMEL_RF_ASSUME_SPACED_SPI 0 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_FULL_SPI_SPEED 7500000 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_FULL_SPI_SPEED_BYTE_SPACING 250 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_IRQ_THREAD_STACK_SIZE 1024 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_LOW_SPI_SPEED 3750000 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_PROVIDE_DEFAULT 0 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_USE_SPI_SPACING_API 0 // set by library:atmel-rf +#define MBED_CONF_BLE_API_IMPLEMENTATION_MAX_CCCD_COUNT 20 // set by library:ble-api-implementation +#define MBED_CONF_BLE_API_IMPLEMENTATION_MAX_CHARACTERISTIC_AUTHORISATION_COUNT 20 // set by library:ble-api-implementation +#define MBED_CONF_BLE_PRESENT 1 // set by library:ble +#define MBED_CONF_BLE_TRACE_HUMAN_READABLE_ENUMS 0 // set by library:ble +#define MBED_CONF_CELLULAR_AT_HANDLER_BUFFER_SIZE 32 // set by library:cellular +#define MBED_CONF_CELLULAR_CONTROL_PLANE_OPT 0 // set by library:cellular +#define MBED_CONF_CELLULAR_DEBUG_AT 0 // set by library:cellular +#define MBED_CONF_CELLULAR_MAX_CP_DATA_RECV_LEN 1358 // set by library:cellular +#define MBED_CONF_CELLULAR_PRESENT 1 // set by library:cellular +#define MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY 0 // set by library:cellular +#define MBED_CONF_CELLULAR_USE_APN_LOOKUP 0 // set by library:cellular +#define MBED_CONF_CELLULAR_USE_SMS 0 // set by library:cellular +#define MBED_CONF_CORDIO_DESIRED_ATT_MTU 23 // set by library:cordio +#define MBED_CONF_CORDIO_LL_DEFAULT_EXTENDED_ADVERTISING_FRAGMENTATION_SIZE 64 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_EXTENDED_ADVERTISING_SIZE 512 // set by library:cordio-ll[MCU_NRF52840] +#define MBED_CONF_CORDIO_LL_MAX_ACL_SIZE 256 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_MAX_ADVERTISING_REPORTS 4 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_MAX_ADVERTISING_SETS 3 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_MAX_SCAN_REQUEST_EVENTS 4 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_NRF52840_CRYPTOCELL310_ACCELERATION 1 // set by library:cordio-ll-nrf52840 +#define MBED_CONF_CORDIO_LL_PHY_2M_SUPPORT 1 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_PHY_CODED_SUPPORT 1 // set by library:cordio-ll[MCU_NRF52840] +#define MBED_CONF_CORDIO_LL_RX_BUFFERS 4 // set by library:cordio-ll +#define MBED_CONF_CORDIO_LL_TX_BUFFERS 4 // set by library:cordio-ll +#define MBED_CONF_CORDIO_MAX_PREPARED_WRITES 4 // set by library:cordio +#define MBED_CONF_CORDIO_NORDIC_LL_HCI_DRIVER_BUFFER_SIZE 16056 // set by library:cordio-nordic-ll[MCU_NRF52840] +#define MBED_CONF_CORDIO_NORDIC_LL_WSF_POOL_BUFFER_SIZE 4900 // set by library:cordio-nordic-ll +#define MBED_CONF_CORDIO_PREFERRED_TX_POWER 0 // set by library:cordio +#define MBED_CONF_CORDIO_ROUTE_UNHANDLED_COMMAND_COMPLETE_EVENTS 1 // set by library:cordio +#define MBED_CONF_CORDIO_RX_ACL_BUFFER_SIZE 70 // set by library:cordio +#define MBED_CONF_CORDIO_TRACE_HCI_PACKETS 0 // set by library:cordio +#define MBED_CONF_CORDIO_TRACE_PAL_ECHOES 0 // set by library:cordio +#define MBED_CONF_CRYPTOCELL310_PRESENT 1 // set by library:cryptocell310 +#define MBED_CONF_DRIVERS_OSPI_CSN OSPI_FLASH1_CSN // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_DQS OSPI_FLASH1_DQS // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO0 OSPI_FLASH1_IO0 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO1 OSPI_FLASH1_IO1 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO2 OSPI_FLASH1_IO2 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO3 OSPI_FLASH1_IO3 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO4 OSPI_FLASH1_IO4 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO5 OSPI_FLASH1_IO5 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO6 OSPI_FLASH1_IO6 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO7 OSPI_FLASH1_IO7 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_SCK OSPI_FLASH1_SCK // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_CSN QSPI_FLASH1_CSN // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO0 QSPI_FLASH1_IO0 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO1 QSPI_FLASH1_IO1 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO2 QSPI_FLASH1_IO2 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO3 QSPI_FLASH1_IO3 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_SCK QSPI_FLASH1_SCK // set by library:drivers +#define MBED_CONF_DRIVERS_UART_SERIAL_RXBUF_SIZE 256 // set by library:drivers +#define MBED_CONF_DRIVERS_UART_SERIAL_TXBUF_SIZE 256 // set by library:drivers +#define MBED_CONF_ESP8266_BUILT_IN_DNS 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_DEBUG 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_POWER_OFF_TIME_MS 3 // set by library:esp8266 +#define MBED_CONF_ESP8266_POWER_ON_POLARITY 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_POWER_ON_TIME_MS 3 // set by library:esp8266 +#define MBED_CONF_ESP8266_PROVIDE_DEFAULT 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_SERIAL_BAUDRATE 115200 // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_ENABLE 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_SERVER0 "" // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_SERVER1 "" // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_SERVER2 "" // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_TIMEZONE 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_SOCKET_BUFSIZE 8192 // set by library:esp8266 +#define MBED_CONF_EVENTS_PRESENT 1 // set by library:events +#define MBED_CONF_EVENTS_SHARED_DISPATCH_FROM_APPLICATION 0 // set by library:events +#define MBED_CONF_EVENTS_SHARED_EVENTSIZE 768 // set by library:events +#define MBED_CONF_EVENTS_SHARED_HIGHPRIO_EVENTSIZE 256 // set by library:events +#define MBED_CONF_EVENTS_SHARED_HIGHPRIO_STACKSIZE 1024 // set by library:events +#define MBED_CONF_EVENTS_SHARED_STACKSIZE 2048 // set by library:events +#define MBED_CONF_EVENTS_USE_LOWPOWER_TIMER_TICKER 0 // set by library:events +#define MBED_CONF_FAT_CHAN_FFS_DBG 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_CODE_PAGE 437 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_EXFAT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_HEAPBUF 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_LOCK 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_MINIMIZE 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_NOFSINFO 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_NORTC 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_READONLY 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_REENTRANT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_RPATH 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_TIMEOUT 1000 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_TINY 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_LFN_BUF 255 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_LFN_UNICODE 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MAX_LFN 255 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MAX_SS 4096 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MIN_SS 512 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MULTI_PARTITION 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_MDAY 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_MON 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_YEAR 2017 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_PRINT_FLOAT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_PRINT_LLI 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_SFN_BUF 12 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_STRF_ENCODE 3 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_STR_VOLUME_ID 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_SYNC_T HANDLE // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_CHMOD 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_EXPAND 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FASTSEEK 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FIND 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FORWARD 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_LABEL 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_LFN 3 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_MKFS 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_STRFUNC 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_TRIM 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_VOLUMES 4 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_VOLUME_STRS "RAM","NAND","CF","SD","SD2","USB","USB2","USB3" // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FLUSH_ON_NEW_CLUSTER 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FLUSH_ON_NEW_SECTOR 1 // set by library:fat_chan +#define MBED_CONF_FILESYSTEM_PRESENT 1 // set by library:filesystem +#define MBED_CONF_FLASHIAP_BLOCK_DEVICE_BASE_ADDRESS 0xFFFFFFFF // set by library:flashiap-block-device +#define MBED_CONF_FLASHIAP_BLOCK_DEVICE_SIZE 0 // set by library:flashiap-block-device +#define MBED_CONF_LORA_ADR_ON 1 // set by library:lora +#define MBED_CONF_LORA_APPLICATION_EUI {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_APPLICATION_KEY {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_APPSKEY {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_APP_PORT 15 // set by library:lora +#define MBED_CONF_LORA_AUTOMATIC_UPLINK_MESSAGE 1 // set by library:lora +#define MBED_CONF_LORA_DEVICE_ADDRESS 0x00000000 // set by library:lora +#define MBED_CONF_LORA_DEVICE_EUI {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_DOWNLINK_PREAMBLE_LENGTH 5 // set by library:lora +#define MBED_CONF_LORA_DUTY_CYCLE_ON 1 // set by library:lora +#define MBED_CONF_LORA_DUTY_CYCLE_ON_JOIN 1 // set by library:lora +#define MBED_CONF_LORA_FSB_MASK {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00FF} // set by library:lora +#define MBED_CONF_LORA_FSB_MASK_CHINA {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF} // set by library:lora +#define MBED_CONF_LORA_LBT_ON 0 // set by library:lora +#define MBED_CONF_LORA_MAX_SYS_RX_ERROR 5 // set by library:lora +#define MBED_CONF_LORA_NB_TRIALS 12 // set by library:lora +#define MBED_CONF_LORA_NWKSKEY {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_OVER_THE_AIR_ACTIVATION 1 // set by library:lora +#define MBED_CONF_LORA_PHY EU868 // set by library:lora +#define MBED_CONF_LORA_PHY_AS923_SUB_REGION AS1 // set by library:lora +#define MBED_CONF_LORA_PUBLIC_NETWORK 1 // set by library:lora +#define MBED_CONF_LORA_TX_MAX_SIZE 64 // set by library:lora +#define MBED_CONF_LORA_UPLINK_PREAMBLE_LENGTH 8 // set by library:lora +#define MBED_CONF_LORA_WAKEUP_TIME 5 // set by library:lora +#define MBED_CONF_LWIP_ADDR_TIMEOUT 5 // set by library:lwip +#define MBED_CONF_LWIP_ADDR_TIMEOUT_MODE 1 // set by library:lwip +#define MBED_CONF_LWIP_DEBUG_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_DEFAULT_THREAD_STACKSIZE 512 // set by library:lwip +#define MBED_CONF_LWIP_DHCP_TIMEOUT 60 // set by library:lwip +#define MBED_CONF_LWIP_ENABLE_PPP_TRACE 0 // set by library:lwip +#define MBED_CONF_LWIP_ETHERNET_ENABLED 1 // set by library:lwip +#define MBED_CONF_LWIP_IPV4_ENABLED 1 // set by library:lwip +#define MBED_CONF_LWIP_IPV6_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_IP_VER_PREF 4 // set by library:lwip +#define MBED_CONF_LWIP_L3IP_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_MBOX_SIZE 8 // set by library:lwip +#define MBED_CONF_LWIP_MEMP_NUM_TCPIP_MSG_INPKT 8 // set by library:lwip +#define MBED_CONF_LWIP_MEMP_NUM_TCP_SEG 16 // set by library:lwip +#define MBED_CONF_LWIP_MEM_SIZE 1600 // set by library:lwip +#define MBED_CONF_LWIP_ND6_QUEUEING 0 // set by library:lwip +#define MBED_CONF_LWIP_ND6_RDNSS_MAX_DNS_SERVERS 0 // set by library:lwip +#define MBED_CONF_LWIP_NETBUF_RECVINFO_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_NUM_NETBUF 8 // set by library:lwip +#define MBED_CONF_LWIP_NUM_PBUF 8 // set by library:lwip +#define MBED_CONF_LWIP_PBUF_POOL_SIZE 5 // set by library:lwip +#define MBED_CONF_LWIP_PPP_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_PPP_IPV4_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_PPP_IPV6_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_PPP_THREAD_STACKSIZE 768 // set by library:lwip +#define MBED_CONF_LWIP_PRESENT 1 // set by library:lwip +#define MBED_CONF_LWIP_RAW_SOCKET_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_SOCKET_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_TCPIP_THREAD_PRIORITY osPriorityNormal // set by library:lwip +#define MBED_CONF_LWIP_TCPIP_THREAD_STACKSIZE 1200 // set by library:lwip +#define MBED_CONF_LWIP_TCP_CLOSE_TIMEOUT 1000 // set by library:lwip +#define MBED_CONF_LWIP_TCP_ENABLED 1 // set by library:lwip +#define MBED_CONF_LWIP_TCP_MAXRTX 6 // set by library:lwip +#define MBED_CONF_LWIP_TCP_MSS 536 // set by library:lwip +#define MBED_CONF_LWIP_TCP_SERVER_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_TCP_SND_BUF (2 * TCP_MSS) // set by library:lwip +#define MBED_CONF_LWIP_TCP_SOCKET_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_TCP_SYNMAXRTX 6 // set by library:lwip +#define MBED_CONF_LWIP_TCP_WND (4 * TCP_MSS) // set by library:lwip +#define MBED_CONF_LWIP_UDP_SOCKET_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_USE_MBED_TRACE 0 // set by library:lwip +#define MBED_CONF_MCR20A_PROVIDE_DEFAULT 0 // set by library:mcr20a +#define MBED_CONF_NANOSTACK_LIBSERVICE_NSDYNMEM_TRACKER_ENABLED 0 // set by library:nanostack-libservice +#define MBED_CONF_NANOSTACK_LIBSERVICE_PRESENT 1 // set by library:nanostack-libservice +#define MBED_CONF_NORDIC_NRF_LF_CLOCK_CALIB_MODE_CONFIG 0 // set by target:MCU_NRF52840 +#define MBED_CONF_NORDIC_NRF_LF_CLOCK_CALIB_TIMER_INTERVAL 16 // set by target:MCU_NRF52840 +#define MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC NRF_LF_SRC_XTAL // set by target:MCU_NRF52840 +#define MBED_CONF_NSAPI_ADD_EVENT_LISTENER_RETURN_CHANGE 0 // set by library:nsapi +#define MBED_CONF_NSAPI_DEFAULT_MESH_TYPE THREAD // set by library:nsapi +#define MBED_CONF_NSAPI_DEFAULT_STACK LWIP // set by library:nsapi +#define MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY NONE // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_ADDRESSES_LIMIT 10 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_CACHE_SIZE 3 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_RESPONSE_WAIT_TIME 10000 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_RETRIES 1 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_TOTAL_ATTEMPTS 10 // set by library:nsapi +#define MBED_CONF_NSAPI_PRESENT 1 // set by library:nsapi +#define MBED_CONF_NSAPI_SOCKET_STATS_ENABLED 0 // set by library:nsapi +#define MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT 10 // set by library:nsapi +#define MBED_CONF_PLATFORM_CALLBACK_COMPARABLE 1 // set by library:platform +#define MBED_CONF_PLATFORM_CALLBACK_NONTRIVIAL 1 // set by application[*] +#define MBED_CONF_PLATFORM_CRASH_CAPTURE_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_CTHUNK_COUNT_MAX 8 // set by library:platform +#define MBED_CONF_PLATFORM_DEEPSLEEP_STATS_VERBOSE 1 // set by library:platform +#define MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE 115200 // set by application[*] +#define MBED_CONF_PLATFORM_ERROR_ALL_THREADS_INFO 0 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_FILENAME_CAPTURE_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_HIST_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_HIST_SIZE 4 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_REBOOT_MAX 1 // set by library:platform +#define MBED_CONF_PLATFORM_FATAL_ERROR_AUTO_REBOOT_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_MAX_ERROR_FILENAME_LEN 16 // set by library:platform +#define MBED_CONF_PLATFORM_MINIMAL_PRINTF_ENABLE_64_BIT 1 // set by library:platform +#define MBED_CONF_PLATFORM_MINIMAL_PRINTF_ENABLE_FLOATING_POINT 0 // set by library:platform +#define MBED_CONF_PLATFORM_MINIMAL_PRINTF_SET_FLOATING_POINT_MAX_DECIMALS 6 // set by library:platform +#define MBED_CONF_PLATFORM_POLL_USE_LOWPOWER_TIMER 0 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_BAUD_RATE 115200 // set by application[*] +#define MBED_CONF_PLATFORM_STDIO_BUFFERED_SERIAL 0 // set by application[*] +#define MBED_CONF_PLATFORM_STDIO_CONVERT_NEWLINES 1 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_CONVERT_TTY_NEWLINES 1 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_FLUSH_AT_EXIT 1 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY 0 // set by library:platform +#define MBED_CONF_PLATFORM_USE_MPU 1 // set by library:platform +#define MBED_CONF_PPP_ENABLED 0 // set by library:ppp +#define MBED_CONF_PPP_ENABLE_TRACE 0 // set by library:ppp +#define MBED_CONF_PPP_IPV4_ENABLED 1 // set by library:ppp +#define MBED_CONF_PPP_IPV6_ENABLED 0 // set by library:ppp +#define MBED_CONF_PPP_MBED_EVENT_QUEUE 0 // set by library:ppp +#define MBED_CONF_PPP_THREAD_STACKSIZE 816 // set by library:ppp +#define MBED_CONF_RTOS_API_PRESENT 1 // set by library:rtos-api +#define MBED_CONF_RTOS_ENABLE_ALL_RTX_EVENTS 0 // set by library:rtos +#define MBED_CONF_RTOS_EVFLAGS_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_IDLE_THREAD_STACK_SIZE 512 // set by library:rtos +#define MBED_CONF_RTOS_IDLE_THREAD_STACK_SIZE_DEBUG_EXTRA 0 // set by library:rtos +#define MBED_CONF_RTOS_IDLE_THREAD_STACK_SIZE_TICKLESS_EXTRA 256 // set by library:rtos +#define MBED_CONF_RTOS_MAIN_THREAD_STACK_SIZE 32768 // set by application[*] +#define MBED_CONF_RTOS_MSGQUEUE_DATA_SIZE 0 // set by library:rtos +#define MBED_CONF_RTOS_MSGQUEUE_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_MUTEX_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_PRESENT 1 // set by library:rtos +#define MBED_CONF_RTOS_SEMAPHORE_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_THREAD_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_THREAD_STACK_SIZE 4096 // set by library:rtos +#define MBED_CONF_RTOS_THREAD_USER_STACK_SIZE 0 // set by library:rtos +#define MBED_CONF_RTOS_TIMER_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_TIMER_THREAD_STACK_SIZE 768 // set by library:rtos +#define MBED_CONF_S2LP_PROVIDE_DEFAULT 0 // set by library:s2lp +#define MBED_CONF_STORAGE_DEFAULT_KV kv // set by library:storage +#define MBED_CONF_STORAGE_FILESYSTEM_BLOCKDEVICE default // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_EXTERNAL_SIZE 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_FILESYSTEM default // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_FOLDER_PATH kvstore // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_INTERNAL_BASE_ADDRESS 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_MOUNT_POINT kv // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_BLOCKDEVICE default // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_EXTERNAL_SIZE 0 // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_FILESYSTEM default // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_FOLDER_PATH kvstore // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_MOUNT_POINT kv // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_STORAGE_TYPE default // set by library:storage +#define MBED_CONF_STORAGE_TDB_EXTERNAL_BLOCKDEVICE default // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_SIZE 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_INTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_BLOCKDEVICE default // set by library:storage_tdb_external_no_rbp +#define MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_external_no_rbp +#define MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_EXTERNAL_SIZE 0 // set by library:storage_tdb_external_no_rbp +#define MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_INTERNAL_SIZE 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_internal +#define MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE 0 // set by library:storage_tdb_internal +#define MBED_CONF_TARGET_BOOT_STACK_SIZE 0x400 // set by library:rtos[*] +#define MBED_CONF_TARGET_CONSOLE_UART 1 // set by target:Target +#define MBED_CONF_TARGET_CUSTOM_TICKERS 1 // set by target:Target +#define MBED_CONF_TARGET_DEEP_SLEEP_LATENCY 0 // set by target:Target +#define MBED_CONF_TARGET_DEFAULT_ADC_VREF NAN // set by target:Target +#define MBED_CONF_TARGET_INIT_US_TICKER_AT_BOOT 0 // set by target:Target +#define MBED_CONF_TARGET_INTERNAL_FLASH_UNIFORM_SECTORS 1 // set by target:Target +#define MBED_CONF_TARGET_MPU_ROM_END 0x1fffffff // set by target:MCU_NRF52840 +#define MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER 0 // set by target:Target +#define MBED_CONF_TARGET_UART_0_FIFO_SIZE 32 // set by target:MCU_NRF52840 +#define MBED_CONF_TARGET_UART_1_FIFO_SIZE 32 // set by target:MCU_NRF52840 +#define MBED_CONF_TARGET_XIP_ENABLE 0 // set by target:Target +#define MBED_CRC_TABLE_SIZE 16 // set by library:drivers +#define MBED_LFS2_BLOCK_CYCLES 1024 // set by library:littlefs2 +#define MBED_LFS2_BLOCK_SIZE 512 // set by library:littlefs2 +#define MBED_LFS2_CACHE_SIZE 64 // set by library:littlefs2 +#define MBED_LFS2_ENABLE_INFO 0 // set by library:littlefs2 +#define MBED_LFS2_INTRINSICS 1 // set by library:littlefs2 +#define MBED_LFS2_LOOKAHEAD_SIZE 64 // set by library:littlefs2 +#define MBED_LFS_BLOCK_SIZE 512 // set by library:littlefs +#define MBED_LFS_ENABLE_INFO 0 // set by library:littlefs +#define MBED_LFS_INTRINSICS 1 // set by library:littlefs +#define MBED_LFS_LOOKAHEAD 512 // set by library:littlefs +#define MBED_LFS_PROG_SIZE 64 // set by library:littlefs +#define MBED_LFS_READ_SIZE 64 // set by library:littlefs +#define MBED_STACK_DUMP_ENABLED 0 // set by library:platform +#define MBED_TRACE_COLOR_THEME 0 // set by library:mbed-trace +#define MEM_ALLOC malloc // set by library:mbed-trace +#define MEM_FREE free // set by library:mbed-trace +#define PPP_DEBUG 0 // set by library:ppp +#define QSPIF_SFDP_DATA_LEN 128 // set by target:MCU_NRF52840 +#define SEC_CCM_CFG 1 // set by library:cordio +#define SMP_DB_MAX_DEVICES 3 // set by library:cordio +#define WSF_TRACE_ENABLED 0 // set by library:cordio +// Macros +#define BB_CLK_RATE_HZ 1000000 // defined by library:cordio-nordic-ll +#define INIT_BROADCASTER // defined by library:cordio-nordic-ll +#define INIT_CENTRAL // defined by library:cordio-nordic-ll +#define INIT_ENCRYPTED // defined by library:cordio-nordic-ll +#define INIT_OBSERVER // defined by library:cordio-nordic-ll +#define INIT_PERIPHERAL // defined by library:cordio-nordic-ll +#define LHCI_ENABLE_VS 0 // defined by library:cordio-nordic-ll +#define LL_MAX_PER_SCAN 3 // defined by library:cordio-nordic-ll +#define MBEDTLS_CIPHER_MODE_CTR // defined by library:SecureStore +#define NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS 8 // defined by application +#define NRFX_WDT_ENABLED 1 // defined by application +#define NSAPI_PPP_AVAILABLE (MBED_CONF_PPP_ENABLED || MBED_CONF_LWIP_PPP_ENABLED) // defined by library:ppp +#define NSDYNMEM_TRACKER_ENABLED MBED_CONF_NANOSTACK_LIBSERVICE_NSDYNMEM_TRACKER_ENABLED // defined by library:nanostack-libservice +#define UNITY_INCLUDE_CONFIG_H // defined by library:utest +#define WSF_MS_PER_TICK 1 // defined by library:cordio +#define _RTE_ // defined by library:rtos + +#endif diff --git a/variants/STELLA/pinmode_arduino.h b/variants/STELLA/pinmode_arduino.h new file mode 100644 index 000000000..9f3c481a6 --- /dev/null +++ b/variants/STELLA/pinmode_arduino.h @@ -0,0 +1,52 @@ + +/* Define mock symbols to nullify PinMode definitions */ +#define PullNone TempPullNone +#define PullDown TempPullDown +#define PullUp TempPullUp +#define PullDefault TempPullDefault + +#define INPUT TempINPUT +#define OUTPUT TempOUTPUT +#define INPUT_PULLUP TempINPUT_PULLUP +#define INPUT_PULLDOWN TempINPUT_PULLDOWN + +/* Rename symbol PinMode into MbedPinMode for all the file PinNames.h + * Functions using PinMode should be redeclared with the correct PinMode symbol */ +#define PinMode MbedPinMode +#include "mbed_config.h" +#include "PinNames.h" +#undef PinMode + +/* Rename symbol PinMode into ArduinoPinMode for all the file Common.h + * Functions using PinMode should be redeclared with the correct PinMode symbol */ +#define PinMode ArduinoPinMode +#include "api/Common.h" +#undef PinMode + +#undef PullNone +#undef PullDown +#undef PullUp +#undef PullDefault + +#undef INPUT +#undef OUTPUT +#undef INPUT_PULLUP +#undef INPUT_PULLDOWN + +typedef enum { + PullNone = TempPullNone, + PullDown = TempPullDown, + PullUp = TempPullUp, + PullDefault = TempPullDefault, + INPUT = TempINPUT, + OUTPUT = TempOUTPUT, + INPUT_PULLUP = TempINPUT_PULLUP, + INPUT_PULLDOWN = TempINPUT_PULLDOWN +} PinMode; + +#if defined(__cplusplus) + +/* Redeclare Common.h functions with the updated PinMode */ +void pinMode(pin_size_t pinNumber, PinMode pinMode); + +#endif \ No newline at end of file diff --git a/variants/STELLA/pins_arduino.h b/variants/STELLA/pins_arduino.h new file mode 100644 index 000000000..e22d186ac --- /dev/null +++ b/variants/STELLA/pins_arduino.h @@ -0,0 +1,186 @@ +#pragma once +#include +#include + +#ifndef __PINS_ARDUINO__ +#define __PINS_ARDUINO__ + +#define ANALOG_CONFIG + +/* Analog reference options + * Different possibilities available combining Reference and Gain + */ +enum _AnalogReferenceMode +{ + AR_VDD, // 3.3 V + AR_INTERNAL, // 0.6 V + AR_INTERNAL1V2, // 1.2 V + AR_INTERNAL2V4 // 2.4 V +}; + +/* Analog acquisition time options */ +enum _AnalogAcquisitionTime +{ + AT_3_US, + AT_5_US, + AT_10_US, // Default value + AT_15_US, + AT_20_US, + AT_40_US +}; + +// Frequency of the board main oscillator +#define VARIANT_MAINOSC (32768ul) + +// Master clock frequency +#define VARIANT_MCK (64000000ul) + +// Pins +// ---- + +// Number of pins defined in PinDescription array +#ifdef __cplusplus +extern "C" unsigned int PINCOUNT_fn(); +#endif +#define PINS_COUNT (PINCOUNT_fn()) +#define NUM_DIGITAL_PINS (21u) +#define NUM_ANALOG_INPUTS (8u) +#define NUM_ANALOG_OUTPUTS (0u) + +extern PinName digitalPinToPinName(pin_size_t P); + +// LEDs +// ---- +#define PIN_LED (13u) +#define LED_BUILTIN PIN_LED +#define LEDR (22u) +#define LEDG (23u) +#define LEDB (24u) +#define LED_PWR (25u) + +// Analog pins +// ----------- +#define PIN_A0 (14u) +#define PIN_A1 (15u) +#define PIN_A2 (16u) +#define PIN_A3 (17u) +#define PIN_A4 (18u) +#define PIN_A5 (19u) +#define PIN_A6 (20u) +#define PIN_A7 (21u) +static const uint8_t A0 = PIN_A0; +static const uint8_t A1 = PIN_A1; +static const uint8_t A2 = PIN_A2; +static const uint8_t A3 = PIN_A3; +static const uint8_t A4 = PIN_A4; +static const uint8_t A5 = PIN_A5; +static const uint8_t A6 = PIN_A6; +static const uint8_t A7 = PIN_A7; +#define ADC_RESOLUTION 12 + +// Digital pins +// ----------- +#define D0 (0u) +#define D1 (1u) +#define D2 (2u) +#define D3 (3u) +#define D4 (4u) +#define D5 (5u) +#define D6 (6u) +#define D7 (7u) +#define D8 (8u) +#define D9 (9u) +#define D10 (10u) +#define D11 (11u) +#define D12 (12u) +#define D13 (13u) + +/* + * Serial interfaces + */ +// Serial (EDBG) +#define PIN_SERIAL_RX (1ul) +#define PIN_SERIAL_TX (0ul) + +// SPI +#define PIN_SPI_MISO (12u) +#define PIN_SPI_MOSI (11u) +#define PIN_SPI_SCK (13u) +#define PIN_SPI_SS (10u) + +static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. +static const uint8_t MOSI = PIN_SPI_MOSI; +static const uint8_t MISO = PIN_SPI_MISO; +static const uint8_t SCK = PIN_SPI_SCK; + +// Wire +#define PIN_WIRE_SDA (18u) +#define PIN_WIRE_SCL (19u) + +#define PIN_WIRE_SDA1 (30u) +#define PIN_WIRE_SCL1 (31u) + +#define PIN_ENABLE_I2C_PULLUP (32u) +#define PIN_ENABLE_SENSORS_3V3 (33u) + +#define PIN_INT_APDS (26u) + +// PDM Interfaces +// --------------- +#define PIN_PDM_PWR (27) +#define PIN_PDM_CLK (28) +#define PIN_PDM_DIN (29) + +// These serial port names are intended to allow libraries and architecture-neutral +// sketches to automatically default to the correct port name for a particular type +// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, +// the first hardware serial port whose RX/TX pins are not dedicated to another use. +// +// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor +// +// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial +// +// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library +// +// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. +// +// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX +// pins are NOT connected to anything by default. +#define SERIAL_PORT_USBVIRTUAL SerialUSB +#define SERIAL_PORT_MONITOR SerialUSB +#define SERIAL_PORT_HARDWARE Serial1 +#define SERIAL_PORT_HARDWARE_OPEN Serial1 + + +// Mbed specific defines +#define SERIAL_HOWMANY 1 +#define SERIAL1_TX (digitalPinToPinName(PIN_SERIAL_TX)) +#define SERIAL1_RX (digitalPinToPinName(PIN_SERIAL_RX)) + +#define SERIAL_CDC 1 +#define HAS_UNIQUE_ISERIAL_DESCRIPTOR +#define BOARD_VENDORID 0x2341 +#define BOARD_PRODUCTID 0x0076 +#define BOARD_NAME "Stella" + +#define DFU_MAGIC_SERIAL_ONLY_RESET 0xb0 + +#define WIRE_HOWMANY 2 + +#define I2C_SDA (digitalPinToPinName(PIN_WIRE_SDA)) +#define I2C_SCL (digitalPinToPinName(PIN_WIRE_SCL)) +#define I2C_SDA1 (digitalPinToPinName(PIN_WIRE_SDA1)) +#define I2C_SCL1 (digitalPinToPinName(PIN_WIRE_SCL1)) + +#define SPI_HOWMANY 1 + +#define SPI_MISO (digitalPinToPinName(PIN_SPI_MISO)) +#define SPI_MOSI (digitalPinToPinName(PIN_SPI_MOSI)) +#define SPI_SCK (digitalPinToPinName(PIN_SPI_SCK)) + +#define digitalPinToPort(P) (digitalPinToPinName(P)/32) + +uint8_t getUniqueSerialNumber(uint8_t* name); +void _ontouch1200bps_(); + +#endif //__PINS_ARDUINO__ diff --git a/variants/STELLA/variant.cpp b/variants/STELLA/variant.cpp new file mode 100644 index 000000000..cbeb7fc76 --- /dev/null +++ b/variants/STELLA/variant.cpp @@ -0,0 +1,218 @@ +#include "Arduino.h" +#include "pinDefinitions.h" + +/* wiring_analog variables definition */ +/* Flag to indicate whether the ADC config has been changed from the default one */ +bool isAdcConfigChanged = false; + +/* + * Configuration used for all the active ADC channels, it is initialized with the mbed default values + * When it is changed, all the ADC channels are reconfigured accordingly + */ +analogin_config_t adcCurrentConfig = { + .resistor_p = NRF_SAADC_RESISTOR_DISABLED, + .resistor_n = NRF_SAADC_RESISTOR_DISABLED, + .gain = NRF_SAADC_GAIN1_4, + .reference = NRF_SAADC_REFERENCE_VDD4, + .acq_time = NRF_SAADC_ACQTIME_10US, + .mode = NRF_SAADC_MODE_SINGLE_ENDED, + .burst = NRF_SAADC_BURST_DISABLED, + .pin_p = NRF_SAADC_INPUT_DISABLED, + .pin_n = NRF_SAADC_INPUT_DISABLED +}; + +void analogReference(uint8_t mode) +{ + nrf_saadc_reference_t reference = NRF_SAADC_REFERENCE_VDD4; + nrf_saadc_gain_t gain = NRF_SAADC_GAIN1_4; + if (mode == AR_VDD) { + reference = NRF_SAADC_REFERENCE_VDD4; + gain = NRF_SAADC_GAIN1_4; + } else if (mode == AR_INTERNAL) { + reference = NRF_SAADC_REFERENCE_INTERNAL; + gain = NRF_SAADC_GAIN1; + } else if (mode == AR_INTERNAL1V2) { + reference = NRF_SAADC_REFERENCE_INTERNAL; + gain = NRF_SAADC_GAIN1_2; + } else if (mode == AR_INTERNAL2V4) { + reference = NRF_SAADC_REFERENCE_INTERNAL; + gain = NRF_SAADC_GAIN1_4; + } + adcCurrentConfig.reference = reference; + adcCurrentConfig.gain = gain; + analogUpdate(); +} + +void analogAcquisitionTime(uint8_t time) +{ + nrf_saadc_acqtime_t acqTime = NRF_SAADC_ACQTIME_10US; + if (time == AT_3_US) { + acqTime = NRF_SAADC_ACQTIME_3US; + } else if (time == AT_5_US) { + acqTime = NRF_SAADC_ACQTIME_5US; + } else if (time == AT_10_US) { + acqTime = NRF_SAADC_ACQTIME_10US; + } else if (time == AT_15_US) { + acqTime = NRF_SAADC_ACQTIME_15US; + } else if (time == AT_20_US) { + acqTime = NRF_SAADC_ACQTIME_20US; + } else if (time == AT_40_US) { + acqTime = NRF_SAADC_ACQTIME_40US; + } + adcCurrentConfig.acq_time = acqTime; + analogUpdate(); +} + +AnalogPinDescription g_AAnalogPinDescription[] = { + // A0 - A7 + { P0_4, NULL }, // A0 + { P0_5, NULL }, // A1 + { P0_30, NULL }, // A2 + { P0_29, NULL }, // A3 + { P0_31, NULL }, // A4/SDA + { P0_2, NULL }, // A5/SCL + { P0_28, NULL }, // A6 + { P0_3, NULL } // A7 +}; + +PinDescription g_APinDescription[] = { + // D0 - D7 + { P1_3, NULL, NULL, NULL }, // D0/TX + { P1_10, NULL, NULL, NULL }, // D1/RX + { P1_11, NULL, NULL, NULL }, // D2 + { P1_12, NULL, NULL, NULL }, // D3 + { P1_15, NULL, NULL, NULL }, // D4 + { P1_13, NULL, NULL, NULL }, // D5 + { P1_14, NULL, NULL, NULL }, // D6 + { P0_23, NULL, NULL, NULL }, // D7 + + // D8 - D13 + { P0_21, NULL, NULL, NULL }, // D8 + { P0_27, NULL, NULL, NULL }, // D9 + { P1_2, NULL, NULL, NULL }, // D10 + { P1_1, NULL, NULL, NULL }, // D11/MOSI + { P1_8, NULL, NULL, NULL }, // D12/MISO + { P0_13, NULL, NULL, NULL }, // D13/SCK/LED + + // A0 - A7 + { P0_4, NULL, NULL, NULL }, // A0 + { P0_5, NULL, NULL, NULL }, // A1 + { P0_30, NULL, NULL, NULL }, // A2 + { P0_29, NULL, NULL, NULL }, // A3 + { P0_31, NULL, NULL, NULL }, // A4/SDA + { P0_2, NULL, NULL, NULL }, // A5/SCL + { P0_28, NULL, NULL, NULL }, // A6 + { P0_3, NULL, NULL, NULL }, // A7 + + // LEDs + { P0_24, NULL, NULL, NULL }, // LED R + { P0_16, NULL, NULL, NULL }, // LED G + { P0_6, NULL, NULL, NULL }, // LED B + { P1_9, NULL, NULL, NULL }, // LED PWR + + { P0_19, NULL, NULL, NULL }, // INT APDS + + // PDM + { P0_17, NULL, NULL, NULL }, // PDM PWR + { P0_26, NULL, NULL, NULL }, // PDM CLK + { P0_25, NULL, NULL, NULL }, // PDM DIN + + // Internal I2C + { P0_14, NULL, NULL, NULL }, // SDA2 + { P0_15, NULL, NULL, NULL }, // SCL2 + + // Internal I2C + { P1_0, NULL, NULL, NULL }, // I2C_PULL + { P0_22, NULL, NULL, NULL } // VDD_ENV_ENABLE +}; + +extern "C" { + unsigned int PINCOUNT_fn() { + return (sizeof(g_APinDescription) / sizeof(g_APinDescription[0])); + } +} + +#include "nrf_rtc.h" +#include "nrf_uarte.h" +#include "nrf_uart.h" + +void initVariant() { + // turn power LED on + pinMode(LED_PWR, OUTPUT); + digitalWrite(LED_PWR, HIGH); + + // Errata Nano33BLE - I2C pullup is controlled by the SWO pin. + // Configure the TRACEMUX to disable routing SWO signal to pin. + NRF_CLOCK->TRACECONFIG = 0; + + // FIXME: bootloader enables interrupt on COMPARE[0], which we don't handle + // Disable it here to avoid getting stuck when OVERFLOW irq is triggered + nrf_rtc_event_disable(NRF_RTC1, NRF_RTC_INT_COMPARE0_MASK); + nrf_rtc_int_disable(NRF_RTC1, NRF_RTC_INT_COMPARE0_MASK); + + // FIXME: always enable I2C pullup and power @startup + // Change for maximum powersave + pinMode(PIN_ENABLE_SENSORS_3V3, OUTPUT); + pinMode(PIN_ENABLE_I2C_PULLUP, OUTPUT); + + digitalWrite(PIN_ENABLE_SENSORS_3V3, HIGH); + delay(10); + digitalWrite(PIN_ENABLE_I2C_PULLUP, HIGH); + + // Set high drive pin to properly power the bmi150 + nrf_gpio_cfg( + digitalPinToPinName(PIN_ENABLE_SENSORS_3V3), + NRF_GPIO_PIN_DIR_OUTPUT, + NRF_GPIO_PIN_INPUT_DISCONNECT, + NRF_GPIO_PIN_NOPULL, + NRF_GPIO_PIN_H0H1, + NRF_GPIO_PIN_NOSENSE); + + // Disable UARTE0 which is initially enabled by the bootloader + nrf_uarte_task_trigger(NRF_UARTE0, NRF_UARTE_TASK_STOPRX); + while (!nrf_uarte_event_check(NRF_UARTE0, NRF_UARTE_EVENT_RXTO)) ; + NRF_UARTE0->ENABLE = 0; + NRF_UART0->ENABLE = 0; + + NRF_PWM_Type* PWM[] = { + NRF_PWM0, NRF_PWM1, NRF_PWM2 +#ifdef NRF_PWM3 + ,NRF_PWM3 +#endif + }; + + for (unsigned int i = 0; i < (sizeof(PWM)/sizeof(PWM[0])); i++) { + PWM[i]->ENABLE = 0; + PWM[i]->PSEL.OUT[0] = 0xFFFFFFFFUL; + } +} + +#ifdef SERIAL_CDC + +static void utox8(uint32_t val, uint8_t* s) { + for (int i = 0; i < 16; i=i+2) { + int d = val & 0XF; + val = (val >> 4); + + s[15 - i -1] = d > 9 ? 'A' + d - 10 : '0' + d; + s[15 - i] = '\0'; + } +} + +uint8_t getUniqueSerialNumber(uint8_t* name) { + #define SERIAL_NUMBER_WORD_0 NRF_FICR->DEVICEADDR[1] + #define SERIAL_NUMBER_WORD_1 NRF_FICR->DEVICEADDR[0] + + utox8(SERIAL_NUMBER_WORD_0, &name[0]); + utox8(SERIAL_NUMBER_WORD_1, &name[16]); + + return 32; +} + +void _ontouch1200bps_() { + __disable_irq(); + NRF_POWER->GPREGRET = DFU_MAGIC_SERIAL_ONLY_RESET; + NVIC_SystemReset(); +} + +#endif pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy