Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NRF52 target and unification with NRF51 #2211

Merged
merged 111 commits into from
Jul 27, 2016

Conversation

pan-
Copy link
Member

@pan- pan- commented Jul 21, 2016

This patch bring support of NRF52 in mbed-os.

In the process, the following changes were made:

  • The nordic SDK has been upgraded to version 11
  • The softdevice has upgraded to version 2.
  • The drivers of NRF51 and NRF52 are now unified.
  • ble implementation have been upgraded to take advantage of softdevice v2.
  • The LF clock can be configured by the config mechanism.
  • IAR support for NRF51 and NRF52

The targets impacted by this change are NRF51_DK and the new NRF52_DK.
Other NRF51 based targets are not impacted by this patch.

# show diff for every operation except files added
$ git diff --diff-filter=CDMRTUXB master
diff --git a/hal/targets.json b/hal/targets.json
index 0073fac..ad62af7 100644
--- a/hal/targets.json
+++ b/hal/targets.json
@@ -1487,7 +1487,7 @@
         "extra_labels_add": ["DELTA_DFCM_NNN40"],
         "macros_add": ["TARGET_DELTA_DFCM_NNN40", "TARGET_NRF_LFCLK_RC"]
     },
-    "NRF51_DK": {
+    "NRF51_DK_LEGACY": {
         "supported_form_factors": ["ARDUINO"],
         "inherits": ["MCU_NRF51_32K"],
         "progen": {"target": "nrf51-dk"},
@@ -1868,6 +1868,118 @@
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
         "default_build": "standard"
     },
+    "MCU_NRF51_UNIFIED": {
+        "inherits": ["Target"],
+        "core": "Cortex-M0",
+        "OVERRIDE_BOOTLOADER_FILENAME": "nrf51822_bootloader.hex",
+        "macros": [
+            "NRF51",
+            "TARGET_NRF51822",
+            "BLE_STACK_SUPPORT_REQD",
+            "SOFTDEVICE_PRESENT",
+            "S130",
+            "TARGET_MCU_NRF51822"
+        ],
+        "MERGE_BOOTLOADER": false,
+        "extra_labels": ["NORDIC", "MCU_NRF51", "MCU_NRF51822_UNIFIED", "NRF5"],
+        "OUTPUT_EXT": "hex",
+        "is_disk_virtual": true,
+        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
+        "public": false,
+        "MERGE_SOFT_DEVICE": true,
+        "EXPECTED_SOFTDEVICES_WITH_OFFSETS": [
+            {
+                "boot": "",
+                "name": "s130_nrf51_2.0.0_softdevice.hex",
+                "offset": 110592
+            }
+        ],
+        "detect_code": ["1070"],
+        "post_binary_hook": {
+            "function": "MCU_NRF51Code.binary_hook",
+            "toolchains": ["ARM_STD", "GCC_ARM", "IAR"]
+        },
+        "program_cycle_s": 6,
+        "default_build": "small",
+        "features": ["BLE"],
+        "config":{
+            "lf_clock_src": {
+                "value": "NRF_LF_SRC_XTAL",
+                "macro_name": "MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC"
+            }
+        }
+    },
+    "MCU_NRF51_32K_UNIFIED": {
+        "inherits": ["MCU_NRF51_UNIFIED"],
+        "extra_labels_add": ["MCU_NORDIC_32K", "MCU_NRF51_32K"],
+        "macros_add": ["TARGET_MCU_NORDIC_32K", "TARGET_MCU_NRF51_32K"],
+        "public": false
+    },
+    "NRF51_DK": {
+        "supported_form_factors": ["ARDUINO"],
+        "inherits": ["MCU_NRF51_32K_UNIFIED"],
+        "progen": {"target": "nrf51-dk"},
+        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPI_ASYNCH", "SPISLAVE"]
+    },
+    "MCU_NRF52": {
+        "inherits": ["Target"],
+        "core": "Cortex-M4F",
+        "macros": ["NRF52", "TARGET_NRF52832", "BLE_STACK_SUPPORT_REQD", "SOFTDEVICE_PRESENT", "S132"],
+        "extra_labels": ["NORDIC", "MCU_NRF52", "MCU_NRF52832", "NRF5"],
+        "OUTPUT_EXT": "hex",
+        "is_disk_virtual": true,
+        "supported_toolchains": ["GCC_ARM", "ARM", "IAR"],
+        "public": false,
+        "detect_code": ["1101"],
+        "program_cycle_s": 6,
+        "MERGE_SOFT_DEVICE": true,
+        "EXPECTED_SOFTDEVICES_WITH_OFFSETS": [
+            {
+                "boot": "",
+                "name": "s132_nrf52_2.0.0_softdevice.hex",
+                "offset": 114688
+            }
+        ],
+        "post_binary_hook": {
+            "function": "MCU_NRF51Code.binary_hook",
+            "toolchains": ["ARM_STD", "GCC_ARM", "IAR"]
+        },
+        "MERGE_BOOTLOADER": false,
+        "features": ["BLE"],
+        "config":{
+            "lf_clock_src": {
+                "value": "NRF_LF_SRC_XTAL",
+                "macro_name": "MBED_CONF_NORDIC_NRF_LF_CLOCK_SRC"
+            }
+        }
+    },
+    "NRF52_DK": {
+        "supported_form_factors": ["ARDUINO"],
+        "inherits": ["MCU_NRF52"],
+        "progen": {"target": "nrf52-dk"},
+        "macros_add": [
+            "BOARD_PCA10040",
+            "NRF52_PAN_12",
+            "NRF52_PAN_15",
+            "NRF52_PAN_58",
+            "NRF52_PAN_55",
+            "NRF52_PAN_54",
+            "NRF52_PAN_31",
+            "NRF52_PAN_30",
+            "NRF52_PAN_51",
+            "NRF52_PAN_36",
+            "NRF52_PAN_53",
+            "S132",
+            "CONFIG_GPIO_AS_PINRESET",
+            "BLE_STACK_SUPPORT_REQD",
+            "SWI_DISABLE0",
+            "NRF52_PAN_20",
+            "NRF52_PAN_64",
+            "NRF52_PAN_62",
+            "NRF52_PAN_63"
+        ],
+        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPI_ASYNCH", "SPISLAVE"]
+    },
     "BLUEPILL_F103C8": {
         "core": "Cortex-M3",
         "default_toolchain": "GCC_ARM",
diff --git a/rtos/rtx/TARGET_CORTEX_M/RTX_CM_lib.h b/rtos/rtx/TARGET_CORTEX_M/RTX_CM_lib.h
index 4be67e7..6e07420 100755
--- a/rtos/rtx/TARGET_CORTEX_M/RTX_CM_lib.h
+++ b/rtos/rtx/TARGET_CORTEX_M/RTX_CM_lib.h
@@ -526,6 +526,9 @@ extern uint32_t __StackTop[];
 #elif defined(TARGET_MCU_NORDIC_16K)
 #define INITIAL_SP            (0x20004000UL)

+#elif defined(TARGET_MCU_NRF52832)
+#define INITIAL_SP            (0x20010000UL)
+
 #elif (defined(TARGET_STM32F767ZI))
 #define INITIAL_SP            (0x20080000UL)

diff --git a/rtos/rtx/TARGET_CORTEX_M/RTX_Conf_CM.c b/rtos/rtx/TARGET_CORTEX_M/RTX_Conf_CM.c
index 8ffcb09..75a3031 100755
--- a/rtos/rtx/TARGET_CORTEX_M/RTX_Conf_CM.c
+++ b/rtos/rtx/TARGET_CORTEX_M/RTX_Conf_CM.c
@@ -59,7 +59,7 @@
    || defined(TARGET_STM32F103RB) || defined(TARGET_LPC824) || defined(TARGET_STM32F302R8) || defined(TARGET_STM32F334R8) || defined(TARGET_STM32F334C8) \
    || defined(TARGET_STM32L031K6) || defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) || defined(TARGET_STM32L073RZ) || defined(TARGET_STM32F072RB) || defined(TARGET_STM32F091RC) || defined(TARGET_NZ32_SC151) \
    || defined(TARGET_SSCI824)  || defined(TARGET_STM32F030R8) || defined(TARGET_STM32F070RB) \
-   || defined(TARGET_EFM32HG_STK3400) || defined(TARGET_MCU_NRF51822) || defined(TARGET_BEETLE)
+   || defined(TARGET_EFM32HG_STK3400) || defined(TARGET_MCU_NRF51822) || defined(TARGET_BEETLE) || defined(TARGET_MCU_NRF52832)
 #    define OS_TASKCNT         6
 #  else
 #    error "no target defined"
@@ -99,7 +99,7 @@
    || defined(TARGET_STM32L031K6) || defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) || defined(TARGET_STM32L073RZ) \
    || defined(TARGET_EFM32HG_STK3400) || defined(TARGET_BEETLE)
 #      define OS_MAINSTKSIZE    112
-#  elif defined(TARGET_MCU_NRF51822)
+#  elif defined(TARGET_MCU_NRF51822) ||  defined(TARGET_MCU_NRF52832)
 #      define OS_MAINSTKSIZE    512
 #  else
 #    error "no target defined"
@@ -262,6 +262,9 @@
 #elif defined(TARGET_MCU_NRF51822)
 #    define OS_CLOCK        32768

+#elif defined(TARGET_MCU_NRF52832)
+#    define OS_CLOCK        64000000
+
 #  else
 #    error "no target defined"
 #  endif

pan- and others added 30 commits June 14, 2016 22:39
A new wbase target has been added (NRF5).
In this target, commonalities between 51 and 52 will be shared.
Factorization of NRF51 and NRF52 targets.
Introduce nordic SDK v11, cleanup path and targets.
…oved nrf_drv_config.h to MCU specific targets, updated lists of device features, so non-compiling stuff is excluded from build.
PwmOut::pwm renamed to PwmOut::pwm_name
Update softdevice references.
Add BLE and softdevice related macros.
Add specific macros for NRF52_DK.
* Update softdevice offset so they match the offset of sd 2.0.
* Update RAM initialization sequence.
* Import fs_data section in final binary
Remove duplicated macro "BLE_STACK_SUPPORT_REQD" for MCU_NRF51
add macro "S132" for MCU_NRF52
Previously, .hex files were not copied when building source as a library.
This prevents builds that pre compile source as a library and then
includes the build directory as the only source (because there is no
softdevice present). This PR copies hex files when compiling source
as a library.
…pan-/mbed into refactored_serial_api

# Conflicts:
#	hal/targets/hal/TARGET_NORDIC/TARGET_NRF5/sdk/drivers_nrf/uart/nrf_drv_uart.c
@pan-
Copy link
Member Author

pan- commented Jul 25, 2016

@sg- @bridadan I don't know what I should do here, as said earlier, the RTOS is build in SINGLE THREAD mode for those targets (build small), it make sense if the RTOS tests fail.

I would also add that the tests for mbed-os, are not identical to the tests in mbed-micro. For instance, in the Semaphore test in mbed micro the stack has been adjusted, this is not the case with the test for mbed os.

I can do a separate PR to bring those adjustments to the mbed os tests but there is nothing to do in this PR in my opinion.

@pan-
Copy link
Member Author

pan- commented Jul 25, 2016

I've made two PR (here and there )to bring mbed OS RTOS tests to the same level as mbed classic RTOS tests.

It will help with RTOS tests.

Refactored serial_api implementation.
@bridadan
Copy link
Contributor

@pan- Thanks for making those PRs, looks like they've been merged. I'll go ahead and rerun your PR. This should test both the NRF51_DK and the NRF52_DK.

/morph test

@mbed-bot
Copy link

Result: FAILURE

Your command has finished executing! Here's what you wrote!

/morph test

Output

mbed Build Number: 513

Test failed!

@pan-
Copy link
Member Author

pan- commented Jul 25, 2016

Ok, so after a quick look at the output:

IAR NRF52/NRF51:

  • tests-mbedmicro-rtos-mbed-threads and tests-mbedmicro-rtos-mbed-semaphore: Thread stack issue. => can patch the test code to define a stack size more appropriate (nothing was defined for NRF52 in all our RTOS tests and nothing was defined in threads tests for all targets).
  • tests-mbed_drivers-stl_features: I'm not able to reproduce it with IAR 7.70, it is reproducible with older versions (sometimes combined with a format failure in cstring float tests), it looks highly dependent on the version of IAR. Any help is welcome.

NRF51_DK:

  • tests-mbedmicro-mbed-cpp: what is the failure here ?

@sg- @bridadan What is the next step ?

@bridadan
Copy link
Contributor

@pan- The tests-mbedmicro-mbed-cpp failure seems to be erroneous, the test looks fine. It looks like an issue in the tools side.

@PrzemekWirkus @mazimkhan do you guys have any idea why this is being reported as a failure? Here's the full output from that test:

16:03:08 mbedgt: checking for 'host_tests' directory above image directory structure
16:03:08    'host_tests' directory not found: two directory levels above image path checked
16:03:08 mbedgt: selecting test case observer...
16:03:08    calling mbedhtrun: mbedhtrun -m NRF51_DK -p /dev/ttyACM4:9600 -f ".build/tests/NRF51_DK/ARM/TESTS/mbedmicro-mbed/cpp/tests-mbedmicro-mbed-cpp.hex" -d /media/platform-3f980000_usb-usb-0_1_3_1_4_1_0-scsi-0_0_0_0 -C 4 -c shell -t 110000004420312054434a38323035313532303397969903
16:03:08 mbedgt: mbed-host-test-runner: started
16:03:08 [1469480746.77][HTST][INF] host test executor ver. 1.1.0
16:03:08 [1469480746.77][HTST][INF] copy image onto target...
16:03:08 [1469480746.77][COPY][INF] Waiting up to 60 sec for '110000004420312054434a38323035313532303397969903' mount point (current is '/media/platform-3f980000_usb-usb-0_1_3_1_4_1_0-scsi-0_0_0_0')...
16:03:08 error: Timeout waiting to acquire lock for /home/pi/.mbed-ls/mbedls-lock
16:03:08 [1469480769.03][HTST][INF] starting host test process...
16:03:08 [1469480769.04][CONN][INF] starting connection process...
16:03:08 [1469480769.05][CONN][INF] notify event queue about extra 60 sec timeout for serial port pooling
16:03:08 [1469480769.05][CONN][INF] initializing serial port listener...
16:03:08 [1469480769.05][SERI][INF] serial(port=/dev/ttyACM4, baudrate=9600, timeout=0)
16:03:08 [1469480769.05][PLGN][INF] Waiting up to 60 sec for '110000004420312054434a38323035313532303397969903' serial port (current is '/dev/ttyACM4')...
16:03:08 [1469480769.06][HTST][INF] setting timeout to: 60 sec
16:03:08 error: Timeout waiting to acquire lock for /home/pi/.mbed-ls/mbedls-lock
16:03:08 [1469480769.75][SERI][INF] reset device using 'default' plugin...
16:03:08 [1469480769.86][SERI][INF] waiting 1.00 sec after reset
16:03:08 [1469480770.87][SERI][INF] wait for it...
16:03:08 [1469480770.87][SERI][TXD] mbedmbedmbedmbedmbedmbedmbedmbedmbedmbed
16:03:08 [1469480770.87][CONN][INF] sending up to 2 __sync packets (specified with --sync=2)
16:03:08 [1469480770.87][CONN][INF] sending preamble '51e7535a-d956-48a6-a58b-8cb6fb6eb489'
16:03:08 [1469480770.87][SERI][TXD] {{__sync;51e7535a-d956-48a6-a58b-8cb6fb6eb489}}
16:03:08 [1469480770.87][CONN][RXD] Static::init
16:03:08 [1469480771.02][CONN][RXD] {{__sync;51e7535a-d956-48a6-a58b-8cb6fb6eb489}}
16:03:08 [1469480771.03][CONN][INF] found SYNC in stream: {{__sync;51e7535a-d956-48a6-a58b-8cb6fb6eb489}} it is #0 sent, queued...
16:03:08 [1469480771.04][HTST][INF] sync KV found, uuid=51e7535a-d956-48a6-a58b-8cb6fb6eb489, timestamp=1469480771.025302
16:03:08 [1469480771.05][CONN][RXD] {{__version;1.3.0}}
16:03:08 [1469480771.05][CONN][INF] found KV pair in stream: {{__version;1.3.0}}, queued...
16:03:08 [1469480771.06][CONN][RXD] {{__timeout;10}}
16:03:08 [1469480771.06][HTST][INF] DUT greentea-client version: 1.3.0
16:03:08 [1469480771.07][CONN][INF] found KV pair in stream: {{__timeout;10}}, queued...
16:03:08 [1469480771.07][HTST][INF] setting timeout to: 10 sec
16:03:08 [1469480771.09][CONN][RXD] {{__host_test_name;default_auto}}
16:03:08 [1469480771.09][CONN][INF] found KV pair in stream: {{__host_test_name;default_auto}}, queued...
16:03:08 [1469480771.10][HTST][INF] host test class: '<class 'mbed_host_tests.host_tests.default_auto.DefaultAuto'>'
16:03:08 [1469480771.10][HTST][INF] host test setup() call...
16:03:08 [1469480771.10][HTST][INF] CALLBACKs updated
16:03:08 [1469480771.10][HTST][INF] host test detected: default_auto
16:03:08 [1469480771.11][CONN][RXD] Static::stack_test
16:03:08 [1469480771.14][CONN][RXD] Stack::init
16:03:08 [1469480771.14][CONN][RXD] Stack::hello
16:03:08 [1469480771.16][CONN][RXD] Stack::destroy
16:03:08 [1469480771.18][CONN][RXD] Static::check_init: OK
16:03:08 [1469480771.19][CONN][RXD] Heap::init
16:03:08 [1469480771.21][CONN][RXD] Heap::hello
16:03:08 [1469480771.23][CONN][RXD] Heap::check_init: OK
16:03:08 [1469480771.24][CONN][RXD] Heap::destroy
16:03:08 [1469480771.28][CONN][RXD] {{end;success}}
16:03:08 [1469480771.28][CONN][RXD] {{__exit;0}}
16:03:08 [1469480771.28][CONN][INF] found KV pair in stream: {{end;success}}, queued...
16:03:08 [1469480771.28][CONN][INF] found KV pair in stream: {{__exit;0}}, queued...
16:03:08 [1469480771.29][HTST][INF] __exit(0)
16:03:08 [1469480771.29][HTST][INF] test suite run finished after 0.22 sec...
16:03:08 [1469480771.29][CONN][INF] received special even '__host_test_finished' value='True', finishing
16:03:08 [1469480771.29][HTST][INF] CONN exited with code: 0
16:03:08 [1469480771.29][HTST][INF] No events in queue
16:03:08 [1469480771.30][HTST][INF] stopped consuming events
16:03:08 [1469480771.30][HTST][INF] host test result(): None
16:03:08 [1469480771.30][HTST][INF] calling blocking teardown()
16:03:08 [1469480771.30][HTST][INF] teardown() finished
16:03:08 [1469480771.30][HTST][INF] {{result;error}}
16:03:08 mbedgt: checking for GCOV data...
16:03:08 mbedgt: mbed-host-test-runner: stopped and returned 'ERROR'
16:03:09 mbedgt: test case summary event not found
16:03:09    no test case report present, assuming test suite to be a single test case!
16:03:09    test suite: tests-mbedmicro-mbed-cpp
16:03:09    test case: tests-mbedmicro-mbed-cpp
16:03:09 mbedgt: test on hardware with target id: 110000004420312054434a38323035313532303397969903
16:03:09 mbedgt: test suite 'tests-mbedmicro-mbed-cpp' ........................................................ ERROR in 25.47 sec
16:03:09    test case: 'tests-mbedmicro-mbed-cpp' ........................................................ ERROR in 25.47 sec
16:03:09 mbedgt: test case summary: 0 passes, 1 failure

I looked through the rest of the test logs and saw that no other results had the following two keys queued at the same time:

16:03:08 [1469480771.28][CONN][INF] found KV pair in stream: {{end;success}}, queued...
16:03:08 [1469480771.28][CONN][INF] found KV pair in stream: {{__exit;0}}, queued...

Is it possible that this timing is causing an issue?

@PrzemekWirkus
Copy link
Contributor

PrzemekWirkus commented Jul 26, 2016

It definitely can be something with the test tools! Maybe an exception we can't see (suppressed). No idea. For sure mbed-ls was unhappy with the access to some directories to create lock:

16:03:08 error: Timeout waiting to acquire lock for /home/pi/.mbed-ls/mbedls-lock

@bridadan n Which version of mbed-ls you have there installed on this PI?

Brian, you may need to delete content of the directory /home/pi/.mbed-ls/. which stores global lockfile for mbed-ls. This is a new feature where we lock in $HOME folder configuration e.g. for mocking.

@PrzemekWirkus
Copy link
Contributor

So I checked it and looks like __notify_complete did not reach event loop from host test.
Few other prints are missing from this scenario so it looks like host test exploded silently or it';s ebcause mbed-ls exploded with Exception: error: Timeout waiting to acquire lock for /home/pi/.mbed-ls/mbedls-lock

@bridadan
Copy link
Contributor

@PrzemekWirkus Thanks for the feedback. I was using 1.1.3 which looks like you've since patched. I've corrected the steps to use the latest release now. I'll let you know if something else crops up!

@bridadan
Copy link
Contributor

I'll go ahead and run this again. We're currently using IAR v7.40 in the CI, so this may be why the tests-mbed_drivers-stl_features test is having issues.

/morph test

@mbed-bot
Copy link

Result: FAILURE

Your command has finished executing! Here's what you wrote!

/morph test

Output

mbed Build Number: 525

Test failed!

@pan-
Copy link
Member Author

pan- commented Jul 26, 2016

@sg- I have solved IAR issues.
Please test once #2248 and #2247 have been integrated.

c1728p9 added a commit to c1728p9/mbed-os that referenced this pull request Jul 26, 2016
In cmsis_os.h OS_TIMERS is undefined unless the timer thread is
disabled, in which case it is defined to 0. When comparing against
an undefined value, the undefined value will evaluate as if it were
0. Because of this the MAIN_THREAD_ID was always set to 0x1.
This patch fixes that problem by checking if OS_TIMERS is defined
before comparing it to 0.

This problem only effects IAR since it has a different heap/stack
layout. GCC_ARM and ARM have a dedicated stack region so
the presence of a guard word and stack checking does not cause
problems.

This problem manifested on the NRF51_DK in the pull request
ARMmbed#2211
as a c_strings test failure on floating point. This is because the
guard word of the main stack overlapped with standard library
data used by sprintf and corrupted it.
@sg-
Copy link
Contributor

sg- commented Jul 27, 2016

@mbed-bot: TEST

HOST_OSES=windows
BUILD_TOOLCHAINS=GCC_ARM,ARM,IAR
TARGETS=K64F,NRF51_DK,NRF51_MICROBIT,NUCLEO_F411RE

@sg-
Copy link
Contributor

sg- commented Jul 27, 2016

/morph test

@mbed-bot
Copy link

[Build ${MBED_BUILD_ID}]
FAILURE: Something went wrong when building and testing.

@sg-
Copy link
Contributor

sg- commented Jul 27, 2016

@mbed-bot: TEST

HOST_OSES=windows
BUILD_TOOLCHAINS=GCC_ARM,ARM,IAR
TARGETS=K64F,NRF51_DK,NRF51_MICROBIT,NUCLEO_F411RE

@mbed-bot
Copy link

[Build 723]
SUCCESS: Building succeeded and tests were run! Be sure to check the test results

@mbed-bot
Copy link

Result: FAILURE

Your command has finished executing! Here's what you wrote!

/morph test

Output

mbed Build Number: 541

Test failed!

@sg- sg- merged commit 90fa585 into ARMmbed:master Jul 27, 2016
@pan- pan- deleted the nrf52_nrf51_unified_integration branch September 27, 2016 13:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants