mirror of https://github.com/ARMmbed/mbed-os.git
commit
96191e22b2
|
@ -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.
|
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).
|
||||||
|
|
18
README.md
18
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.
|
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:
|
Mbed OS provides a platform that includes:
|
||||||
* Security foundations.
|
|
||||||
* Cloud management services.
|
- Security foundations.
|
||||||
* Drivers for sensors, I/O devices and connectivity.
|
- Cloud management services.
|
||||||
|
- Drivers for sensors, I/O devices and connectivity.
|
||||||
|
|
||||||
## Release notes
|
## Release notes
|
||||||
The [release notes](https://os.mbed.com/releases) detail the current release. You can also find information about previous versions.
|
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
|
## 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.
|
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
|
## 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).
|
|
||||||
|
|
|
@ -897,7 +897,6 @@ int SDBlockDevice::_read(uint8_t *buffer, uint32_t length)
|
||||||
// read until start byte (0xFE)
|
// read until start byte (0xFE)
|
||||||
if (false == _wait_token(SPI_START_BLOCK)) {
|
if (false == _wait_token(SPI_START_BLOCK)) {
|
||||||
debug_if(SD_DBG, "Read timeout\n");
|
debug_if(SD_DBG, "Read timeout\n");
|
||||||
_deselect();
|
|
||||||
return SD_BLOCK_DEVICE_ERROR_NO_RESPONSE;
|
return SD_BLOCK_DEVICE_ERROR_NO_RESPONSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ void Nanostack::Interface::attach(
|
||||||
}
|
}
|
||||||
|
|
||||||
Nanostack::Interface::Interface(NanostackPhy &phy) : interface_phy(phy), interface_id(-1), _device_id(-1),
|
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();
|
mesh_system_init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -200,6 +200,7 @@ nsapi_error_t Nanostack::add_ethernet_interface(EMAC &emac, bool default_if, Nan
|
||||||
|
|
||||||
nsapi_error_t err = interface->initialize();
|
nsapi_error_t err = interface->initialize();
|
||||||
if (err) {
|
if (err) {
|
||||||
|
delete interface;
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,26 +33,26 @@ namespace rtos {
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
|
|
||||||
/** Read the current RTOS kernel millisecond tick count.
|
/** Read the current RTOS kernel millisecond tick count.
|
||||||
The tick count corresponds to the tick count used by the RTOS for timing
|
The tick count corresponds to the tick count the RTOS uses for timing
|
||||||
purposes. It increments monotonically from 0 at boot, hence effectively
|
purposes. It increments monotonically from 0 at boot, so it effectively
|
||||||
never wraps. If the underlying RTOS only provides a 32-bit tick count,
|
never wraps. If the underlying RTOS only provides a 32-bit tick count,
|
||||||
this method expands it to 64 bits.
|
this method expands it to 64 bits.
|
||||||
@return RTOS kernel current tick count
|
@return RTOS kernel current tick count
|
||||||
@note mbed OS always uses millisecond RTOS ticks, and this could only wrap
|
@note Mbed OS always uses millisecond RTOS ticks, and this could only wrap
|
||||||
after half a billion years
|
after half a billion years.
|
||||||
@note You cannot call this function from ISR context.
|
@note You cannot call this function from ISR context.
|
||||||
*/
|
*/
|
||||||
uint64_t get_ms_count();
|
uint64_t get_ms_count();
|
||||||
|
|
||||||
/** Attach a function to be called by the RTOS idle task
|
/** Attach a function to be called by the RTOS idle task.
|
||||||
@param fptr pointer to the function to be called
|
@param fptr pointer to the function to be called
|
||||||
|
|
||||||
@note You may call this function from ISR context.
|
@note You may call this function from ISR context.
|
||||||
*/
|
*/
|
||||||
void attach_idle_hook(void (*fptr)(void));
|
void attach_idle_hook(void (*fptr)(void));
|
||||||
|
|
||||||
/** Attach a function to be called when a task is killed
|
/** Attach a function to be called when a thread terminates.
|
||||||
@param fptr pointer to the function to be called
|
@param fptr pointer to the function to be called
|
||||||
|
|
||||||
@note You may call this function from ISR context.
|
@note You may call this function from ISR context.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -49,7 +49,9 @@ CORE_LABELS = {
|
||||||
"Cortex-M23": ["M23", "CORTEX_M", "LIKE_CORTEX_M23", "CORTEX"],
|
"Cortex-M23": ["M23", "CORTEX_M", "LIKE_CORTEX_M23", "CORTEX"],
|
||||||
"Cortex-M23-NS": ["M23", "M23_NS", "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": ["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 = {
|
CORE_ARCH = {
|
||||||
|
@ -66,7 +68,9 @@ CORE_ARCH = {
|
||||||
"Cortex-M23": 8,
|
"Cortex-M23": 8,
|
||||||
"Cortex-M23-NS": 8,
|
"Cortex-M23-NS": 8,
|
||||||
"Cortex-M33": 8,
|
"Cortex-M33": 8,
|
||||||
|
"Cortex-M33F": 8,
|
||||||
"Cortex-M33-NS": 8,
|
"Cortex-M33-NS": 8,
|
||||||
|
"Cortex-M33F-NS": 8,
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
|
@ -17,7 +17,7 @@ from tools.utils import NotSupportedException
|
||||||
ARMC5_CORES = ["Cortex-M0", "Cortex-M0+", "Cortex-M3", "Cortex-M4",
|
ARMC5_CORES = ["Cortex-M0", "Cortex-M0+", "Cortex-M3", "Cortex-M4",
|
||||||
"Cortex-M4F", "Cortex-M7", "Cortex-M7F", "Cortex-M7FD"]
|
"Cortex-M4F", "Cortex-M7", "Cortex-M7F", "Cortex-M7FD"]
|
||||||
ARMC6_CORES = ARMC5_CORES + ["Cortex-M23", "Cortex-M23-NS",
|
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-+"]
|
CORE_SUF_ALPHA = ["MDFNS02347-+"]
|
||||||
|
|
||||||
|
|
|
@ -75,8 +75,8 @@ class mbedToolchain:
|
||||||
"Cortex-M23": ["__CORTEX_M23", "ARM_MATH_ARMV8MBL", "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"],
|
"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-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-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-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", "__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"
|
MBED_CONFIG_FILE_NAME="mbed_config.h"
|
||||||
|
|
|
@ -363,8 +363,8 @@ class ARMC6(ARM_STD):
|
||||||
SHEBANG = "#! armclang -E --target=arm-arm-none-eabi -x c"
|
SHEBANG = "#! armclang -E --target=arm-arm-none-eabi -x c"
|
||||||
SUPPORTED_CORES = ["Cortex-M0", "Cortex-M0+", "Cortex-M3", "Cortex-M4",
|
SUPPORTED_CORES = ["Cortex-M0", "Cortex-M0+", "Cortex-M3", "Cortex-M4",
|
||||||
"Cortex-M4F", "Cortex-M7", "Cortex-M7F", "Cortex-M7FD",
|
"Cortex-M4F", "Cortex-M7", "Cortex-M7F", "Cortex-M7FD",
|
||||||
"Cortex-M23", "Cortex-M23-NS", "Cortex-M33",
|
"Cortex-M23", "Cortex-M23-NS", "Cortex-M33", "Cortex-M33F",
|
||||||
"Cortex-M33-NS", "Cortex-A9"]
|
"Cortex-M33-NS", "Cortex-M33F-NS", "Cortex-A9"]
|
||||||
ARMCC_RANGE = (LooseVersion("6.10"), LooseVersion("7.0"))
|
ARMCC_RANGE = (LooseVersion("6.10"), LooseVersion("7.0"))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -416,6 +416,9 @@ class ARMC6(ARM_STD):
|
||||||
self.flags['common'].append("-mfloat-abi=softfp")
|
self.flags['common'].append("-mfloat-abi=softfp")
|
||||||
elif target.core.startswith("Cortex-M23"):
|
elif target.core.startswith("Cortex-M23"):
|
||||||
self.flags['common'].append("-march=armv8-m.base")
|
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":
|
if target.core == "Cortex-M23" or target.core == "Cortex-M33":
|
||||||
self.flags['cxx'].append("-mcmse")
|
self.flags['cxx'].append("-mcmse")
|
||||||
|
|
|
@ -61,9 +61,9 @@ class GCC(mbedToolchain):
|
||||||
elif target.core.startswith("Cortex-M23"):
|
elif target.core.startswith("Cortex-M23"):
|
||||||
self.cpu = ["-mcpu=cortex-m23"]
|
self.cpu = ["-mcpu=cortex-m23"]
|
||||||
elif target.core.startswith("Cortex-M33F"):
|
elif target.core.startswith("Cortex-M33F"):
|
||||||
self.cpu = ["-mcpu=cortex-m33"]
|
self.cpu = ["-mcpu=cortex-m33+nodsp"]
|
||||||
elif target.core.startswith("Cortex-M33"):
|
elif target.core.startswith("Cortex-M33"):
|
||||||
self.cpu = ["-march=armv8-m.main"]
|
self.cpu = ["-mcpu=cortex-m33+nodsp+nofp"]
|
||||||
else:
|
else:
|
||||||
self.cpu = ["-mcpu={}".format(target.core.lower())]
|
self.cpu = ["-mcpu={}".format(target.core.lower())]
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ class GCC(mbedToolchain):
|
||||||
"-Wl,--cmse-implib",
|
"-Wl,--cmse-implib",
|
||||||
"-Wl,--out-implib=%s" % join(build_dir, "cmse_lib.o")
|
"-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["ld"].append("-DDOMAIN_NS=1")
|
||||||
|
|
||||||
self.flags["common"] += self.cpu
|
self.flags["common"] += self.cpu
|
||||||
|
|
|
@ -74,12 +74,12 @@ class IAR(mbedToolchain):
|
||||||
elif target.core == "Cortex-M7F":
|
elif target.core == "Cortex-M7F":
|
||||||
asm_flags_cmd += ["--fpu", "VFPv5_sp"]
|
asm_flags_cmd += ["--fpu", "VFPv5_sp"]
|
||||||
c_flags_cmd.append("--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["asm"] += ["--cmse"]
|
||||||
self.flags["common"] += ["--cmse"]
|
self.flags["common"] += ["--cmse"]
|
||||||
|
|
||||||
# Create Secure library
|
# 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")
|
secure_file = join(build_dir, "cmse_lib.o")
|
||||||
self.flags["ld"] += ["--import_cmse_lib_out=%s" % secure_file]
|
self.flags["ld"] += ["--import_cmse_lib_out=%s" % secure_file]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue