diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4dec4e8f59..701af04107 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,4 +2,4 @@ Mbed OS is an open-source, device software platform for the Internet of Things. Contributions are an important part of the platform, and our goal is to make it as simple as possible to become a contributor. -To encourage productive collaboration, as well as robust, consistent and maintainable code, we have a set of guidelines for contributing to Mbed OS. Please see: [contributing guidelines](https://os.mbed.com/docs/latest/reference/contributing.html). +To encourage productive collaboration, as well as robust, consistent and maintainable code, we have a set of guidelines for [contributing to Mbed OS](https://os.mbed.com/docs/latest/reference/contributing.html). diff --git a/README.md b/README.md index 778ef47831..59d8fcc7e3 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,20 @@ Arm Mbed OS is an open source embedded operating system designed specifically for the "things" in the Internet of Things. It includes all the features you need to develop a connected product based on an Arm Cortex-M microcontroller, including security, connectivity, an RTOS and drivers for sensors and I/O devices. Mbed OS provides a platform that includes: -* Security foundations. -* Cloud management services. -* Drivers for sensors, I/O devices and connectivity. + +- Security foundations. +- Cloud management services. +- Drivers for sensors, I/O devices and connectivity. ## Release notes The [release notes](https://os.mbed.com/releases) detail the current release. You can also find information about previous versions. +## License and contributions + +The software is provided under [Apache-2.0 license](LICENSE). Contributions to this project are accepted under the same license. Please see [contributing.md](CONTRIBUTING.md) for more info. + +This project contains code from other projects. The original license text is included in those source files. They must comply with our [license guide](https://os.mbed.com/docs/latest/reference/license.html) + ## Getting started for developers We have a [developer website](https://os.mbed.com) for asking questions, engaging with others, finding information on boards and components, using an online IDE and compiler, reading the documentation and learning about what's new and what's coming next in Mbed OS. @@ -36,6 +43,7 @@ We also have a [contributing and publishing guide](https://os.mbed.com/contribut ## Documentation -For more information about Mbed OS, please see [our published documentation](https://os.mbed.com/docs/latest). It includes published Doxygen for our APIs, step-by-step tutorials, porting information and background reference materials about our architecture and tools. +For more information about Mbed OS, please see [our published documentation](https://os.mbed.com/docs/latest). It includes Doxygen for our APIs, step-by-step tutorials, porting information and background reference materials about our architecture and tools. + +To contribute to this documentation, please see the [mbed-os-5-docs repository](https://github.com/ARMmbed/mbed-os-5-docs). -To contribute to this documentation, please see the [mbed-os-5-docs repo](https://github.com/ARMmbed/mbed-os-5-docs). diff --git a/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.cpp b/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.cpp index 3caf04bafd..b8217c7568 100644 --- a/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.cpp +++ b/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.cpp @@ -897,7 +897,6 @@ int SDBlockDevice::_read(uint8_t *buffer, uint32_t length) // read until start byte (0xFE) if (false == _wait_token(SPI_START_BLOCK)) { debug_if(SD_DBG, "Read timeout\n"); - _deselect(); return SD_BLOCK_DEVICE_ERROR_NO_RESPONSE; } diff --git a/features/nanostack/mbed-mesh-api/source/MeshInterfaceNanostack.cpp b/features/nanostack/mbed-mesh-api/source/MeshInterfaceNanostack.cpp index 0a50086304..72702dd2bc 100644 --- a/features/nanostack/mbed-mesh-api/source/MeshInterfaceNanostack.cpp +++ b/features/nanostack/mbed-mesh-api/source/MeshInterfaceNanostack.cpp @@ -69,7 +69,7 @@ void Nanostack::Interface::attach( } Nanostack::Interface::Interface(NanostackPhy &phy) : interface_phy(phy), interface_id(-1), _device_id(-1), - _connect_status(NSAPI_STATUS_DISCONNECTED), _blocking(true), _previous_connection_status(NSAPI_STATUS_DISCONNECTED) + _connect_status(NSAPI_STATUS_DISCONNECTED), _previous_connection_status(NSAPI_STATUS_DISCONNECTED), _blocking(true) { mesh_system_init(); } diff --git a/features/nanostack/mbed-mesh-api/source/NanostackEMACInterface.cpp b/features/nanostack/mbed-mesh-api/source/NanostackEMACInterface.cpp index 29c4d7c3e5..37e047a230 100644 --- a/features/nanostack/mbed-mesh-api/source/NanostackEMACInterface.cpp +++ b/features/nanostack/mbed-mesh-api/source/NanostackEMACInterface.cpp @@ -200,6 +200,7 @@ nsapi_error_t Nanostack::add_ethernet_interface(EMAC &emac, bool default_if, Nan nsapi_error_t err = interface->initialize(); if (err) { + delete interface; return err; } diff --git a/rtos/Kernel.h b/rtos/Kernel.h index bd123def7f..851dfb688e 100644 --- a/rtos/Kernel.h +++ b/rtos/Kernel.h @@ -33,26 +33,26 @@ namespace rtos { namespace Kernel { /** Read the current RTOS kernel millisecond tick count. - The tick count corresponds to the tick count used by the RTOS for timing - purposes. It increments monotonically from 0 at boot, hence effectively + The tick count corresponds to the tick count the RTOS uses for timing + purposes. It increments monotonically from 0 at boot, so it effectively never wraps. If the underlying RTOS only provides a 32-bit tick count, this method expands it to 64 bits. @return RTOS kernel current tick count - @note mbed OS always uses millisecond RTOS ticks, and this could only wrap - after half a billion years + @note Mbed OS always uses millisecond RTOS ticks, and this could only wrap + after half a billion years. @note You cannot call this function from ISR context. */ uint64_t get_ms_count(); -/** Attach a function to be called by the RTOS idle task - @param fptr pointer to the function to be called +/** Attach a function to be called by the RTOS idle task. + @param fptr pointer to the function to be called @note You may call this function from ISR context. */ void attach_idle_hook(void (*fptr)(void)); -/** Attach a function to be called when a task is killed - @param fptr pointer to the function to be called +/** Attach a function to be called when a thread terminates. + @param fptr pointer to the function to be called @note You may call this function from ISR context. */ diff --git a/tools/targets/__init__.py b/tools/targets/__init__.py index 42677cadf0..1441faee5e 100644 --- a/tools/targets/__init__.py +++ b/tools/targets/__init__.py @@ -49,7 +49,9 @@ CORE_LABELS = { "Cortex-M23": ["M23", "CORTEX_M", "LIKE_CORTEX_M23", "CORTEX"], "Cortex-M23-NS": ["M23", "M23_NS", "CORTEX_M", "LIKE_CORTEX_M23", "CORTEX"], "Cortex-M33": ["M33", "CORTEX_M", "LIKE_CORTEX_M33", "CORTEX"], - "Cortex-M33-NS": ["M33", "M33_NS", "CORTEX_M", "LIKE_CORTEX_M33", "CORTEX"] + "Cortex-M33-NS": ["M33", "M33_NS", "CORTEX_M", "LIKE_CORTEX_M33", "CORTEX"], + "Cortex-M33F": ["M33", "CORTEX_M", "LIKE_CORTEX_M33", "CORTEX"], + "Cortex-M33F-NS": ["M33", "M33_NS", "CORTEX_M", "LIKE_CORTEX_M33", "CORTEX"] } CORE_ARCH = { @@ -66,7 +68,9 @@ CORE_ARCH = { "Cortex-M23": 8, "Cortex-M23-NS": 8, "Cortex-M33": 8, + "Cortex-M33F": 8, "Cortex-M33-NS": 8, + "Cortex-M33F-NS": 8, } ################################################################################ diff --git a/tools/test/toolchains/arm_support_test.py b/tools/test/toolchains/arm_support_test.py index f26935a8f7..b32bd7ab82 100644 --- a/tools/test/toolchains/arm_support_test.py +++ b/tools/test/toolchains/arm_support_test.py @@ -17,7 +17,7 @@ from tools.utils import NotSupportedException ARMC5_CORES = ["Cortex-M0", "Cortex-M0+", "Cortex-M3", "Cortex-M4", "Cortex-M4F", "Cortex-M7", "Cortex-M7F", "Cortex-M7FD"] ARMC6_CORES = ARMC5_CORES + ["Cortex-M23", "Cortex-M23-NS", - "Cortex-M33", "CortexM33-NS"] + "Cortex-M33", "Cortex-M33-NS", "Cortex-M33F", "Cortex-M33F-NS"] CORE_SUF_ALPHA = ["MDFNS02347-+"] diff --git a/tools/toolchains/__init__.py b/tools/toolchains/__init__.py index 5c973538a2..dbb177e2f7 100644 --- a/tools/toolchains/__init__.py +++ b/tools/toolchains/__init__.py @@ -75,8 +75,8 @@ class mbedToolchain: "Cortex-M23": ["__CORTEX_M23", "ARM_MATH_ARMV8MBL", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"], "Cortex-M33-NS": ["__CORTEX_M33", "ARM_MATH_ARMV8MML", "DOMAIN_NS=1", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"], "Cortex-M33": ["__CORTEX_M33", "ARM_MATH_ARMV8MML", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"], - "Cortex-M33F-NS": ["__CORTEX_M33", "ARM_MATH_ARMV8MML", "DOMAIN_NS=1", "__FPU_PRESENT", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"], - "Cortex-M33F": ["__CORTEX_M33", "ARM_MATH_ARMV8MML", "__FPU_PRESENT", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"], + "Cortex-M33F-NS": ["__CORTEX_M33", "ARM_MATH_ARMV8MML", "DOMAIN_NS=1", "__FPU_PRESENT=1U", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"], + "Cortex-M33F": ["__CORTEX_M33", "ARM_MATH_ARMV8MML", "__FPU_PRESENT=1U", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"], } MBED_CONFIG_FILE_NAME="mbed_config.h" diff --git a/tools/toolchains/arm.py b/tools/toolchains/arm.py index 525b7171d1..15b844ddeb 100644 --- a/tools/toolchains/arm.py +++ b/tools/toolchains/arm.py @@ -363,8 +363,8 @@ class ARMC6(ARM_STD): SHEBANG = "#! armclang -E --target=arm-arm-none-eabi -x c" SUPPORTED_CORES = ["Cortex-M0", "Cortex-M0+", "Cortex-M3", "Cortex-M4", "Cortex-M4F", "Cortex-M7", "Cortex-M7F", "Cortex-M7FD", - "Cortex-M23", "Cortex-M23-NS", "Cortex-M33", - "Cortex-M33-NS", "Cortex-A9"] + "Cortex-M23", "Cortex-M23-NS", "Cortex-M33", "Cortex-M33F", + "Cortex-M33-NS", "Cortex-M33F-NS", "Cortex-A9"] ARMCC_RANGE = (LooseVersion("6.10"), LooseVersion("7.0")) @staticmethod @@ -416,6 +416,9 @@ class ARMC6(ARM_STD): self.flags['common'].append("-mfloat-abi=softfp") elif target.core.startswith("Cortex-M23"): self.flags['common'].append("-march=armv8-m.base") + elif target.core.startswith("Cortex-M33F"): + self.flags['common'].append("-mfpu=fpv5-sp-d16") + self.flags['common'].append("-mfloat-abi=softfp") if target.core == "Cortex-M23" or target.core == "Cortex-M33": self.flags['cxx'].append("-mcmse") diff --git a/tools/toolchains/gcc.py b/tools/toolchains/gcc.py index 1ec8d8146b..b8adde954b 100644 --- a/tools/toolchains/gcc.py +++ b/tools/toolchains/gcc.py @@ -61,9 +61,9 @@ class GCC(mbedToolchain): elif target.core.startswith("Cortex-M23"): self.cpu = ["-mcpu=cortex-m23"] elif target.core.startswith("Cortex-M33F"): - self.cpu = ["-mcpu=cortex-m33"] + self.cpu = ["-mcpu=cortex-m33+nodsp"] elif target.core.startswith("Cortex-M33"): - self.cpu = ["-march=armv8-m.main"] + self.cpu = ["-mcpu=cortex-m33+nodsp+nofp"] else: self.cpu = ["-mcpu={}".format(target.core.lower())] @@ -97,7 +97,7 @@ class GCC(mbedToolchain): "-Wl,--cmse-implib", "-Wl,--out-implib=%s" % join(build_dir, "cmse_lib.o") ]) - elif target.core == "Cortex-M23-NS" or target.core == "Cortex-M33-NS": + elif target.core == "Cortex-M23-NS" or target.core == "Cortex-M33-NS" or target.core == "Cortex-M33F-NS": self.flags["ld"].append("-DDOMAIN_NS=1") self.flags["common"] += self.cpu diff --git a/tools/toolchains/iar.py b/tools/toolchains/iar.py index a56c8ad29c..c94d5f089d 100644 --- a/tools/toolchains/iar.py +++ b/tools/toolchains/iar.py @@ -74,12 +74,12 @@ class IAR(mbedToolchain): elif target.core == "Cortex-M7F": asm_flags_cmd += ["--fpu", "VFPv5_sp"] c_flags_cmd.append("--fpu=VFPv5_sp") - elif target.core == "Cortex-M23" or target.core == "Cortex-M33": + elif target.core == "Cortex-M23" or target.core == "Cortex-M33" or target.core == "Cortex-M33F": self.flags["asm"] += ["--cmse"] self.flags["common"] += ["--cmse"] # Create Secure library - if target.core == "Cortex-M23" or self.target.core == "Cortex-M33": + if target.core == "Cortex-M23" or self.target.core == "Cortex-M33" or self.target.core == "Cortex-M33F": secure_file = join(build_dir, "cmse_lib.o") self.flags["ld"] += ["--import_cmse_lib_out=%s" % secure_file]