forked from ARMmbed/mbed-os
-
Notifications
You must be signed in to change notification settings - Fork 21
Merge upstream changes into mbed-ce #117
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
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
NominalPrescaler value needs to be as high as possible to ensure a good approximation of the target CAN speed. Previous usage of macro IS_FDCAN_DATA_TSEG1 refers to (unsupported by Mbed ) FDCAN CAN controller settings and leads to too low prescaler values. Usage Macro IS_FDCAN_NOMINAL_TSEG1 yields optimum results. See also correct macro usage in line #158.
RFC3315 specifies the following: "The relay agent MAY send the Interface-id option to identify the interface on which the client message was received. If a relay agent receives a Relay-reply message with an Interface-id option, the relay agent relays the message to the client through the interface identified by the option." The current implementation of the DHCP relay reply handling, the interface ID field from the server response is ignored. Managing the interface ID is very important especially as DHCP requests/replies use link-local addresses. The consequence of this is that the interface must always be specified because the routing layer cannot guess the correct interface. Moreover, Mbed provides a mechanism to enable/disable the interface ID option on a DHCP relay instance, so it is important to fully support it. The reason why this issue has not been discoverd until now is that the DHCP relay is mainly used on systems that use only one interface (such as Wi-SUN routers). By default, when no interface ID is specified for the socket, the latter will choose 6loWPAN interface by default. This means that if two interfaces are used on the same device, the 6loWPAN interface is always selected. The commit adds code to retrieve the interface-id value contained within the DHCP relay reply message and write it to a control message header that is added to the socket message. This tells the socket which interface to choose. If the interface-id option is not enabled on the relay, this procedure is simply ignored.
1. Based on alpha version BSP (85564a2716548e7b6d6a79a490c6d94a24cf9bcf) 2. Continuing above, tweak BSP: (1) Add EPWM_ConfigOutputChannel2() to enable below 1Hz and below 1% duty cycle for PWM output (m460_epwm.h/c). (2) Add dummy RTC_WaitAccessEnable() for consistency with previous ports (m460_rtc.h). 3. Target NuMaker-M467HJ V0.1 board temporarily 4. Support Arduino UNO form factor for NUMAKER_IOT_M467 target 5. Enable export to Keil/IAR project - tools/arm_pack_manager/index.json - tools/export/iar/iar_definitions.json
HRESETRF is combined reset flag. Filter it out to avoid interference with reset reason check.
1. For GCC, support multi-block .data/.bss initialization 2. HyperRAM is mapped to two regions: 0x0A000000 and 0x80000000 According to default system address map, 0x0A000000 is located at 'Code' region and 0x80000000 at 'RAM' region. With MPU enabled on Mbed OS, 'Code' region is write-never and 'RAM' region execute-never. 0x80000000 is chosen because 'RAM' regioin is naturally for HyperRAM. 3. Configurable multi-function pins for HBI 4. To locate code/data at external HyperRAM: - Specify __attribute__((section(".text.nu.exthyperram"))) for RO/.text/readonly section type Invoke mbed_mpu_manager_lock_ram_execution()/mbed_mpu_manager_unlock_ram_execution() to run HyperRAM code - Specify __attribute__((section(".data.nu.exthyperram"))) for RW/.data/readwrite section type - Specify __attribute__((section(".bss.nu.exthyperram"))) for ZI/.bss/zeroinit section type 5. Add readme
1. Prepare crypto common code 2. Support list - SHA - ECC NOTE: AES/RSA are to support in other works NOTE: Compared to M487, M467's SHA supports context save & restore (DMA Cascade mode) and so no software fallback is needed. NOTE: M467's ECC, following M487, goes partial-module replacement and it can just improve primitives e.g. point addition/doubling by 2X, and cannot improve high level point multiplication because MbedTLS doesn’t open it. To improve performance best, full-module replacement is needed. NOTE: Continuing above, add support for Montgomery curve
Add crypto_xxx_wait2 helper routine to replace crypto_xxx_wait for Crypto H/W control
According to TRM, it is suggested PRNG be seeded by TRNG on every Crypto H/W reset.
1. Crypto RSA H/W supports 1024/2048/3072/4096 key bits. Fall back to software implementation for other key bits. 2. For decrypt, if MBEDTLS_RSA_NO_CRT isn't defined, go CRT, or normal. 3. For decrypt, when blinding (f_rng != NULL), enable SCAP mode. 4. Recover from Crypto RSA H/W failure: (1) Enable timed-out wait to escape from RSA H/W trap (2) On RSA H/W timeout, stop this RSA H/W operation (3) Fall back to S/W implementation on failure NOTE: RSA 4096 key bits can fail with default mbedtls configuration MBEDTLS_MPI_MAX_SIZE. Enlarge MBEDTLS_MPI_MAX_SIZE to 1024 or larger if this feature is required. NOTE: Fixed in BSP RSA driver, for non-CRT+SCAP mode, temporary buffer for MADDR6 requires to be key length plus 128 bits. NOTE: Fixed in BSP RSA driver, DMA buffer must be 4-word aligned, or RSA H/W will trap.
1. Replace ecp.c full-module, and other ec modules dependent on ecp.c (ecdh.c/ecdsa.c/ecjpake.c) will improve followingly. 2. Recover from Crypto ECC H/W failure: (1) Enable timed-out wait to escape from ECC H/W trap (2) On ECC H/W timeout, stop this ECC H/W operation (3) Fall back to S/W implementation on failure 3. Support Short Weierstrass curve 4. Support Montgomery curve Montgomery curve has the form: B y^2 = x^3 + A x^2 + x (1) In S/W impl, A is used as (A + 2) / 4. Figure out its original value for engine. https://github.com/ARMmbed/mbed-os/blob/2eb06e76208588afc6cb7580a8dd64c5429a10ce/connectivity/mbedtls/include/mbedtls/ecp.h#L219-L220 (2) In S/W impl, B is unused. Actually, B is 1 for Curve25519/Curve448 and needs to configure to engine. https://github.com/ARMmbed/mbed-os/blob/2eb06e76208588afc6cb7580a8dd64c5429a10ce/connectivity/mbedtls/include/mbedtls/ecp.h#L221-L222 (3) In S/W impl, y-coord is absent, but engine needs it. Deduce it from x-coord following: https://tools.ietf.org/id/draft-jivsov-ecc-compact-05.html https://www.rieselprime.de/ziki/Modular_square_root NOTE: Fix Curve448 has wrong order value Mbed-TLS/mbedtls#5811
This is to follow designer's resolution.
Guard from null argument passed to mbedtls_ecp_point_cmp() in ECC H/W port
Some M460 chips don't support AES/SHA/ECC/RSA H/W. Make them removable from mbedtls H/W port through '"target.macros_remove": ["MBEDTLS_CONFIG_HW_SUPPORT"]'.
New Platform for Toshiba Added
Fix in i2c_do_trsn(), interrupt doesn't change back to enabled due to premature return.
UNO D8/D9/D10/D11/D12/D13 can wire to on-board SPI flash. Exclude these pins from FPGA CI Test Shield test.
Pinout comparison between NuMaker-M467HJ and NuMaker-IoT-M467 boards: 1. UNO are unchanged 2. LEDs are unchanged 3. Buttons are unchanged, except button names 4. NuMaker-M467HJ has HBI but NuMaker-IoT-M467 does 5. NuMaker-M467HJ doesn't have ESP8266 but NuMaker-IoT-M467 does 6. SDHC are unchanged
Fix for calculating CAN timing settings for STM32
Nuvoton: Support new target NUMAKER_IOT_M467
Limit NUCLEO_H723ZG toolchain to GCC_ARM only. This is the only toolchain this target has been tested with yet. Signed-off-by: Daniel Starke <daniel-email@gmx.net>
…723zg Add proper support for NUCLEO-H723ZG.
M2354: Support FS-USBD
New Platform for Toshiba Added
…2-i2c-hal Rethink STM32 I2C v2 HAL
Add TMPM4GR Platform
Signed-off-by: Martin Kojtal <martin.kojtal@arm.com>
…cancode-error-version scancode: Limit click version to <8
multiplemonomials
previously approved these changes
Dec 27, 2022
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, rubber stamping since these are all reviewed upstream changes
22137f2
to
d967459
Compare
CI is failing due to aboutcode-org/scancode-toolkit#3179. Lemme merge #118 with a fix. |
multiplemonomials
approved these changes
Jan 1, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary of changes
Documentation
None
Pull request type
Test results
Reviewers
@multiplemonomials