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

static pin-map: patch for SerialBase class #12033

Merged
merged 2 commits into from
Dec 10, 2019

Conversation

mprse
Copy link
Contributor

@mprse mprse commented Dec 5, 2019

Summary of changes

Related PR: #10924

The above PR adds functions to disable/enable serial input/output. If both serial input and serial output are disabled, the peripheral is freed. If either serial input or serial output is re-enabled, the peripheral is reinitialized.

I missed this change while working on the static pin-map and unfortunately it has an impact on it. The reinitialization is a problem for static pin-map. Now the HAL init()/init_direct() function is called not only in the constructor (but also when re-enabling the peripheral). In the current version, even if static pin-map constructor was used to create an object (and init_direct() HAL API), when reinitialization is done it uses init() HAL API. This must be split.

If static pinmap constructor is used, then the peripheral must be always initialized using HAL init_direct() function. If the regular constructor is used, then the peripheral must be initialized using HAL init() function. The same split also must be done while setting flow control during reinitialization.

Documentation


Pull request type

[X] Patch update (Bug fix / Target update / Docs update / Test update / Refactor)
[] Feature update (New feature / Functionality change / New API)
[] Major update (Breaking change E.g. Return code change / API behaviour change)

Test results

[] No Tests required for this change (E.g docs only update)
[X] Covered by existing mbed-os tests (Greentea or Unittest)
[] Tests / results supplied as part of this PR

Reviewers

@jamesbeyond
@kjbracey-arm
@0xc0170


@0xc0170
Copy link
Contributor

0xc0170 commented Dec 5, 2019

This sounds like 5.15.0rc2 fix?

cc @adbridge

@mprse
Copy link
Contributor Author

mprse commented Dec 5, 2019

This sounds like 5.15.0rc2 fix?

I think so.

@ciarmcom
Copy link
Member

ciarmcom commented Dec 5, 2019

@mprse, thank you for your changes.
@0xc0170 @jamesbeyond @kjbracey-arm @ARMmbed/mbed-os-core @ARMmbed/mbed-os-maintainers please review.

@adbridge
Copy link
Contributor

adbridge commented Dec 5, 2019

Yes sounds like we should take this in

@0xc0170
Copy link
Contributor

0xc0170 commented Dec 6, 2019

CI started

@mbed-ci
Copy link

mbed-ci commented Dec 6, 2019

Test run: FAILED

Summary: 1 of 4 test jobs failed
Build number : 1
Build artifacts

Failed test jobs:

  • jenkins-ci/mbed-os-ci_build-IAR

@mprse
Copy link
Contributor Author

mprse commented Dec 6, 2019

Ups...

Build failures:
  * NUMAKER_PFM_NANO130::IAR::TESTS-MBED_HAL-MINIMUM_REQUIREMENTS
        Building project minimum_requirements (NUMAKER_PFM_NANO130, IAR)
        Scan: IAR
        Scan: minimum_requirements
        Macros: -DMBED_BUILD_TIMESTAMP=1575636185.1345503 -DDEVICE_I2CSLAVE=1 -DDEVICE_PORTOUT=1 -DDEVICE_SERIAL=1 -D__CMSIS_RTOS -D__MBED_CMSIS_RTOS_CM -DDEVICE_ANALOGIN=1 -DDEVICE_RTC=1 -DDEVICE_PORTINOUT=1 -DMBED_STACK_STATS_ENABLED=1 -DDEVICE_SPI=1 -DDEVICE_STDIO_MESSAGES=1 -DLPTICKER_DELAY_TICKS=4 -DDEVICE_I2C=1 -DCOMPONENT_PSA_SRV_EMUL=1 -DMBED_TRAP_ERRORS_ENABLED=1 -DCOMPONENT_NSPE=1 -DTARGET_M0 -DTARGET_LIKE_CORTEX_M0 -DDEVICE_PWMOUT=1 -DDEVICE_USTICKER=1 -DCMSIS_VECTAB_VIRTUAL_HEADER_FILE="cmsis_nvic.h" -DMBED_ALL_STATS_ENABLED -DDEVICE_ANALOGOUT=1 -DDEVICE_SPI_ASYNCH=1 -DDEVICE_SLEEP=1 -DTARGET_LIKE_MBED -DDEVICE_RESET_REASON=1 -DDEVICE_SERIAL_ASYNCH=1 -DTARGET_NANO100 -DTARGET_RELEASE -DARM_MATH_CM0 -DTARGET_NUMAKER_PFM_NANO130 -D__MBED__=1 -DTARGET_NAME=NUMAKER_PFM_NANO130 -DMBED_FAULT_HANDLER_DISABLED -D__CORTEX_M0 -DDEVICE_I2C_ASYNCH=1 -DMBED_HEAP_STATS_ENABLED=1 -DTOOLCHAIN_IAR -DDEVICE_INTERRUPTIN=1 -DTARGET_CORTEX -DDEVICE_SERIAL_FC=1 -DTARGET_CORTEX_M -DTARGET_NANO130KE3BN -DDEVICE_SPISLAVE=1 -DMBED_TEST_MODE -DDEVICE_WATCHDOG=1 -DDEVICE_PORTIN=1 -DSKIP_TIME_DRIFT_TESTS=1 -DCMSIS_VECTAB_VIRTUAL -DDEVICE_LPTICKER=1 -DTARGET_NUVOTON -DCOMPONENT_PSA_SRV_IMPL=1
        Link: minimum_requirements
        Link: /usr/local/IAR-BuildLx-Arm-8.32.1/bin/ilinkarm -f ./BUILD/tests/NUMAKER_PFM_NANO130/IAR/./TESTS/mbed_hal/minimum_requirements/.link_options.txt
        [DEBUG] Return: 2
        [DEBUG] Output: 
        [DEBUG] Output:    IAR ELF Linker V8.32.1.169/LNX for ARM
        [DEBUG] Output:    Copyright 2007-2018 IAR Systems AB.
        [DEBUG] Output: 
        [DEBUG] Output:   40 465 bytes of readonly  code memory
        [DEBUG] Output:    4 783 bytes of readonly  data memory
        [DEBUG] Output:    1 024 bytes of readwrite data memory
        [DEBUG] Output: 
        [DEBUG] Output: Errors: 2
        [DEBUG] Output: Warnings: none
        [DEBUG] Output: 
        [DEBUG] Output: Link time:   0.38 (CPU)   0.38 (elapsed)
        [DEBUG] Errors: Error[Lp011]: section placement failed
        [DEBUG] Errors:             unable to allocate space for sections/blocks with a total estimated
        [DEBUG] Errors:                       minimum size of 0x3c0c bytes (max align 0x8) in
        [DEBUG] Errors:                       <[0x2000'0000-0x2000'3fff]> (total uncommitted space
        [DEBUG] Errors:                       0x3c00).
        [DEBUG] Errors: Error[Lp021]: the destination for compressed initializer batch "P2-P3-1" is
        [DEBUG] Errors:           placed at an address that is dependent on the size of the batch,
        [DEBUG] Errors:           which is not allowed when using lz77 compression. Consider using
        [DEBUG] Errors:           "initialize by copy with packing = zeros" (or none) instead.

@0xc0170
Copy link
Contributor

0xc0170 commented Dec 6, 2019

@ARMmbed/team-nuvoton Can you review above ^^ ? The target seems to be on its limit. We will soon provide numbers in this PR (they should be low, so even prior this PR the size was close to the target limit?).

@0xc0170 0xc0170 requested a review from a team December 6, 2019 13:24
@mprse
Copy link
Contributor Author

mprse commented Dec 6, 2019

Memory usage statistics for this patch can be found below:

mbed test --compile -t IAR -m NUMAKER_PFM_NANO130 -n TESTS-MBED_HAL-MINIMUM_REQUIREMENTS -v

| Module                          |       .text |    .data |       .bss |
|---------------------------------|-------------|----------|------------|
| TESTS\mbed_hal                  |     294(+0) |    0(+0) |   2148(+0) |
| [lib]\dl6M_tlf.a                |   10320(+0) |  376(+0) |    700(+0) |
| [lib]\dlpp6M_tl_fc.a            |      80(+0) |    0(+0) |      0(+0) |
| [lib]\m6M_tl.a                  |    1240(+0) |    0(+0) |      0(+0) |
| [lib]\rt6M_tl.a                 |     772(+0) |    0(+0) |      0(+0) |
| [lib]\th6M_tlf.a                |     288(+0) |    0(+0) |     16(+0) |
| [misc]                          |     332(-1) |    0(+0) |      0(+0) |
| drivers\source                  |  1418(+140) |    0(+0) |      0(+0) |
| events\source                   |     102(+0) |    0(+0) |      0(+0) |
| features\frameworks             |    5868(+0) |  196(+0) |   480(+16) |
| features\nanostack              |     200(+0) |    0(+0) |      0(+0) |
| features\netsocket              |      62(+0) |    0(+0) |      0(+0) |
| hal\LowPowerTickerWrapper.o     |    1090(+0) |    0(+0) |      0(+0) |
| hal\mbed_critical_section_api.o |     172(+0) |    0(+0) |      2(+0) |
| hal\mbed_gpio.o                 |     224(+0) |    0(+0) |      0(+0) |
| hal\mbed_lp_ticker_api.o        |      76(+0) |    4(+0) |     64(+0) |
| hal\mbed_lp_ticker_wrapper.o    |     228(+0) |    0(+0) |    120(+0) |
| hal\mbed_pinmap_common.o        |     252(+0) |    0(+0) |      0(+0) |
| hal\mbed_ticker_api.o           |    1308(+0) |    0(+0) |      0(+0) |
| hal\mbed_us_ticker_api.o        |     108(+0) |    4(+0) |     65(+0) |
| hal\static_pinmap.o             |      12(+0) |    0(+0) |      0(+0) |
| platform\source                 |    2974(+0) |  112(+0) |    131(+0) |
| rtos\source                     |    7494(+0) |  168(+0) |   6325(+0) |
| targets\TARGET_NUVOTON          |    7242(+0) |  184(+0) |    228(+0) |
| Subtotals                       | 42156(+139) | 1044(+0) | 10279(+16) |
Total Static RAM memory (data + bss): 11323(+16) bytes
Total Flash memory (text + data): 43200(+139) bytes



Related PR:

ARMmbed#10924

The above PR adds functions to disable/enable serial input/output. If both serial input and serial output are disabled, the peripheral is freed. If either serial input or serial output is re-enabled, the peripheral is reinitialized.

I missed this change while working on the static pinmap and unfortunately it has an impact on it. The reinitialization is a problem for static pinmap. Now the HAL init()/init_direct() function is called not only in the constructor (but also when re-enabling the peripheral). In the current version, even if static pinmap constructor was used to create an object (and init_direct() HAL API), when reinitialization is done it uses init() HAL API. This must be split.

If static pinmap constructor is used, then the peripheral must be always initialized using HAL init_direct() function. If regular the constructor is used, then the peripheral must be initialized using HAL init() function. The same split also must be done while setting flow control during reinitialization.
@mprse
Copy link
Contributor Author

mprse commented Dec 9, 2019

Commit (b6c25b1) ensures that Serial Flow Control related functions (class members, HAL functions, pin-maps) are pulled into the image only if Flow Control is used.
The memory usages stats with b6c25b1 below:

| Module                          |       .text |    .data |       .bss |
|---------------------------------|-------------|----------|------------|
| TESTS\mbed_hal                  |     294(+0) |    0(+0) |   2148(+0) |
| [lib]\dl6M_tlf.a                |   10320(+0) |  376(+0) |    700(+0) |
| [lib]\dlpp6M_tl_fc.a            |      80(+0) |    0(+0) |      0(+0) |
| [lib]\m6M_tl.a                  |    1240(+0) |    0(+0) |      0(+0) |
| [lib]\rt6M_tl.a                 |     772(+0) |    0(+0) |      0(+0) |
| [lib]\th6M_tlf.a                |     288(+0) |    0(+0) |     16(+0) |
| [misc]                          |     332(+0) |    0(+0) |      0(+0) |
| drivers\source                  |  1298(-120) |    0(+0) |      0(+0) |
| events\source                   |     102(+0) |    0(+0) |      0(+0) |
| features\frameworks             |    5868(+0) |  196(+0) |   496(+16) |
| features\nanostack              |     200(+0) |    0(+0) |      0(+0) |
| features\netsocket              |      62(+0) |    0(+0) |      0(+0) |
| hal\LowPowerTickerWrapper.o     |    1090(+0) |    0(+0) |      0(+0) |
| hal\mbed_critical_section_api.o |     172(+0) |    0(+0) |      2(+0) |
| hal\mbed_gpio.o                 |     224(+0) |    0(+0) |      0(+0) |
| hal\mbed_lp_ticker_api.o        |      76(+0) |    4(+0) |     64(+0) |
| hal\mbed_lp_ticker_wrapper.o    |     228(+0) |    0(+0) |    120(+0) |
| hal\mbed_pinmap_common.o        |     252(+0) |    0(+0) |      0(+0) |
| hal\mbed_ticker_api.o           |    1308(+0) |    0(+0) |      0(+0) |
| hal\mbed_us_ticker_api.o        |     108(+0) |    4(+0) |     65(+0) |
| hal\static_pinmap.o             |      12(+0) |    0(+0) |      0(+0) |
| platform\source                 |    2974(+0) |  112(+0) |    131(+0) |
| rtos\source                     |    7494(+0) |  168(+0) |   6325(+0) |
| targets\TARGET_NUVOTON          |  6802(-440) |  184(+0) |    228(+0) |
| Subtotals                       | 41596(-560) | 1044(+0) | 10295(+16) |
Total Static RAM memory (data + bss): 11339(+16) bytes
Total Flash memory (text + data): 42640(-560) bytes

Checked that this fix works also for GCC and ARM compilers. This should also give extra savings to cloud client example.

@ccli8
Copy link
Contributor

ccli8 commented Dec 9, 2019

For #12033 (comment), I cannot re-produce on my environment (IAR version has been the same). But according to the log, I create #12047 to try to address relevant error. Please inform me of the compile result regarding the above error.

@0xc0170
Copy link
Contributor

0xc0170 commented Dec 9, 2019

For #12033 (comment), I cannot re-produce on my environment (IAR version has been the same). But according to the log, I create #12047 to try to address relevant error. Please inform me of the compile result regarding the above error.

Have you enabled logging and stats? -DMBED_HEAP_STATS_ENABLED=1 -DMBED_STACK_STATS_ENABLED=1 -DMBED_TRAP_ERRORS_ENABLED=1 -DMBED_ALL_STATS_ENABLED -DMBED_CPU_STATS_ENABLED=1

@0xc0170
Copy link
Contributor

0xc0170 commented Dec 9, 2019

CI started while reviews are completed

@mprse
Copy link
Contributor Author

mprse commented Dec 9, 2019

@ccli8 Thanks for checking this. Please run the following command to reproduce the failure:
mbed test --compile -m NUMAKER_PFM_NANO130 -t IAR --build-data BUILD/tests/build_data.json -DMBED_HEAP_STATS_ENABLED=1 -DMBED_STACK_STATS_ENABLED=1 -DMBED_ALL_STATS_ENABLED -DMBED_TRAP_ERRORS_ENABLED=1 -DSKIP_TIME_DRIFT_TESTS=1 -n TESTS-MBED_HAL-MINIMUM_REQUIREMENTS -v

I got the following results on my side.

  1. Without b6c25b1 :
        [DEBUG] Output:    IAR ELF Linker V8.32.1.169/W32 for ARM
        [DEBUG] Output:    Copyright 2007-2018 IAR Systems AB.
        [DEBUG] Output:
        [DEBUG] Output:   40 465 bytes of readonly  code memory
        [DEBUG] Output:    4 735 bytes of readonly  data memory
        [DEBUG] Output:    1 024 bytes of readwrite data memory
        [DEBUG] Output:
        [DEBUG] Output: Errors: 2
        [DEBUG] Output: Warnings: none
        [DEBUG] Output:
        [DEBUG] Output: Link time:   2.39 (CPU)   2.46 (elapsed)
        [DEBUG] Errors: Error[Lp011]: section placement failed
        [DEBUG] Errors:             unable to allocate space for sections/blocks with a total estimated
        [DEBUG] Errors:                       minimum size of 0x3c0c bytes (max align 0x8) in
        [DEBUG] Errors:                       <[0x2000'0000-0x2000'3fff]> (total uncommitted space
        [DEBUG] Errors:                       0x3c00).
        [DEBUG] Errors: Error[Lp021]: the destination for compressed initializer batch "P2-P3-1" is
        [DEBUG] Errors:           placed at an address that is dependent on the size of the batch,
        [DEBUG] Errors:           which is not allowed when using lz77 compression. Consider using
        [DEBUG] Errors:           "initialize by copy with packing = zeros" (or none) instead.
  1. With b6c25b1 :
        [Warning] MbedCRC.h@546,0: [Pe061]: integer operation result is out of range
        [DEBUG] Return: 0
        [DEBUG] Output:
        [DEBUG] Output:           return (uint32_t)((uint32_t)2U << (width - 1)) - 1U;
        [DEBUG] Output:                                          ^
        [DEBUG] Output: "C:\Projects\mbed-os\BUILD\tests\NUMAKER_PFM_NANO130\IAR\drivers\MbedCRC.h",546  Warning[Pe061]: integer operation result is out of range
        [DEBUG] Output:           detected during:
        [DEBUG] Output:             instantiation of "inline __interwork __softfp uint32_t mbed::impl::MbedCRC<polynomial, width, mode>::get_crc_mask() [with polynomial=79764919U, width=(uint8_t)' ', mode=mbed::CrcMode::TABLE]" at line 493
        [DEBUG] Output:             instantiation of "inline __interwork __softfp uint32_t mbed::impl::MbedCRC<polynomial, width, mode>::adjust_initial_value(uint32_t, bool) [with polynomial=79764919U, width=(uint8_t)' ', mode=mbed::CrcMode::TABLE]" at line 283
        [DEBUG] Output:             instantiation of "inline mbed::impl::MbedCRC<polynomial, width, mode>::MbedCRC(uint32_t, uint32_t, bool, bool) [with polynomial=79764919U, width=(uint8_t)' ', mode=mbed::CrcMode::TABLE]" at line 180
        [DEBUG] Output:             instantiation of "inline mbed::MbedCRC<polynomial, width, mode_limit>::MbedCRC(uint32_t, uint32_t, bool, bool) [with polynomial=79764919U, width=(uint8_t)' ', mode_limit=mbed::CrcMode::HARDWARE]" at line 804
        Link: minimum_requirements
        Link: C:\Programs\IAR Systems\Embedded Workbench 8.2\arm\bin\ilinkarm -f .\BUILD\tests\NUMAKER_PFM_NANO130\IAR\.\TESTS\mbed_hal\minimum_requirements\.link_options.txt
        [DEBUG] Return: 2
        [DEBUG] Output:
        [DEBUG] Output:    IAR ELF Linker V8.32.1.169/W32 for ARM
        [DEBUG] Output:    Copyright 2007-2018 IAR Systems AB.
        [DEBUG] Output:
        [DEBUG] Output:   40 025 bytes of readonly  code memory
        [DEBUG] Output:    4 615 bytes of readonly  data memory
        [DEBUG] Output:    1 024 bytes of readwrite data memory
        [DEBUG] Output:
        [DEBUG] Output: Errors: 2
        [DEBUG] Output: Warnings: none
        [DEBUG] Output:
        [DEBUG] Output: Link time:   2.25 (CPU)   2.30 (elapsed)
        [DEBUG] Errors: Error[Lp011]: section placement failed
        [DEBUG] Errors:             unable to allocate space for sections/blocks with a total estimated
        [DEBUG] Errors:                       minimum size of 0x3c1c bytes (max align 0x8) in
        [DEBUG] Errors:                       <[0x2000'0000-0x2000'3fff]> (total uncommitted space
        [DEBUG] Errors:                       0x3c00).
        [DEBUG] Errors: Error[Lp021]: the destination for compressed initializer batch "P2-P3-1" is
        [DEBUG] Errors:           placed at an address that is dependent on the size of the batch,
        [DEBUG] Errors:           which is not allowed when using lz77 compression. Consider using
        [DEBUG] Errors:           "initialize by copy with packing = zeros" (or none) instead.

  1. With 6df5eea
        [DEBUG] Output:    IAR ELF Linker V8.32.1.169/W32 for ARM
        [DEBUG] Output:    Copyright 2007-2018 IAR Systems AB.
        [DEBUG] Output:
        [DEBUG] Output:   39 949 bytes of readonly  code memory
        [DEBUG] Output:    5 039 bytes of readonly  data memory
        [DEBUG] Output:   16 411 bytes of readwrite data memory
        [DEBUG] Output:
        [DEBUG] Output: Errors: 1
        [DEBUG] Output: Warnings: none
        [DEBUG] Output:
        [DEBUG] Output: Link time:   2.39 (CPU)   2.47 (elapsed)
        [DEBUG] Errors: Error[Lp011]: section placement failed
        [DEBUG] Errors:             unable to allocate space for sections/blocks with a total estimated
        [DEBUG] Errors:                       minimum size of 0x3c1c bytes (max align 0x8) in
        [DEBUG] Errors:                       <[0x2000'0000-0x2000'3fff]> (total uncommitted space
        [DEBUG] Errors:                       0x3c00).

It looks like its maybe not related to the ROM usage. b6c25b1 should give extra 600 bytes of ROM savings and it does not help. It's even worse: 0x3c0c -> 0x3c1c.

@mbed-ci
Copy link

mbed-ci commented Dec 9, 2019

Test run: FAILED

Summary: 1 of 4 test jobs failed
Build number : 2
Build artifacts

Failed test jobs:

  • jenkins-ci/mbed-os-ci_build-IAR

@ccli8
Copy link
Contributor

ccli8 commented Dec 9, 2019

@mprse I can re-produce the error now. It is caused by static SRAM OOM on IAR, on which heap configuration cannot be adjusted according to static SRAM usage. I will tune heap configuration on IAR to fix the issue, though it is resource limit issue.

@hugueskamba
Copy link
Collaborator

hugueskamba commented Dec 9, 2019

@0xc0170
I am having the same memory problem for that board. Can we consider lowering the hard coded HEAP space (to say 0xB00) in order to solve this issue?

@mprse
Copy link
Contributor Author

mprse commented Dec 9, 2019

@ccli8 @hugueskamba I confirm that reducing HEAP or BOOT STACK SIZE in .icf file solves the problem. At least for now...

@ccli8
Copy link
Contributor

ccli8 commented Dec 9, 2019

I update #12047 to fix #12033 (comment) on NUMAKER_PFM_NANO130/IAR:

  1. Confine packing algorithm to none to avoid extra SRAM overhead.
  2. Reduce heap configuration from 3KiB to 2.75KiB.

@adbridge
Copy link
Contributor

adbridge commented Dec 9, 2019

@0xc0170 is this ready for CI again now ?

@0xc0170
Copy link
Contributor

0xc0170 commented Dec 9, 2019

@0xc0170 is this ready for CI again now ?

#12047 is in CI, needed here. Once that one is in, this can go to CI

@hugueskamba
Copy link
Collaborator

hugueskamba commented Dec 9, 2019

I update #12047 to fix #12033 (comment) on NUMAKER_PFM_NANO130/IAR:

  1. Confine packing algorithm to none to avoid extra SRAM overhead.
  2. Reduce heap configuration from 3KiB to 2.75KiB.

@ccli8
Is 0xB00 the optimum value or can we go lower? I am asking because the present PR needs more RAM but my PR will also need more RAM. If I change it to 0xB00 it works but I am not sure if it will be enough when both our PRs are merged.

@0xc0170
Copy link
Contributor

0xc0170 commented Dec 9, 2019

@hugueskamba I suggested to start using dynamic heap (minimum size, so should be possible to get it lower). The PR fixes the issue but another PR should make it future proof.

PR integrated, restarting CI

@mbed-ci
Copy link

mbed-ci commented Dec 9, 2019

Test run: FAILED

Summary: 1 of 11 test jobs failed
Build number : 3
Build artifacts

Failed test jobs:

  • jenkins-ci/mbed-os-ci_greentea-test

@ccli8
Copy link
Contributor

ccli8 commented Dec 10, 2019

@mprse @0xc0170 @hugueskamba I create #12061 to add IAR dynamic heap configuration support to NANO130.

@mprse
Copy link
Contributor Author

mprse commented Dec 10, 2019

Test run: FAILED

No failed test, but DISCO_L475VG_IOT01A is in error directory.
cc @0xc0170

@0xc0170
Copy link
Contributor

0xc0170 commented Dec 10, 2019

Restarted tests, the boards had some issues yesterday

@0xc0170 0xc0170 removed the needs: CI label Dec 10, 2019
@0xc0170 0xc0170 merged commit 94ac6b9 into ARMmbed:master Dec 10, 2019
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.

10 participants