-
Notifications
You must be signed in to change notification settings - Fork 99
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
Add targets upstream for new ARM Cortex chips #88
Comments
I have been working on a R5F for an year and a half with Rust without any problem. I want to start working on other targets of the Cortex-R family so that I can PR and add official support for them. thumbv7em, thumbv8em are not the only targets we would need pursuing. Remember that the ARMv7 instruction set differs a lot between their subset ( ARMv7-A, ARMv7-R, ARMv7E-M, ARMv7-M ); In order to support what is now commercially available we would need (for what regards the Cortex-R architecture):
I have been working with the TMS570LC4357, which is probably the most unique R5F processor in the market, as it is the only one that has a R5F architecture and is big endian. Cortex-R chips on the marketCortex-R4Texas Instruments: RM41Lx, RM42Lx, TMS570LS02x, TMS570LS03x, TMS570LS04x Cortex-R4FTexas Instruments: RM44Lx, RM46Lx, RM48Lx, TMS570LS07x, TMS570LS09x, TMS570LS11x, TMS570LS12x, TMS570LS21x, TMS570LS31x Cortex-R5Cypress: S6J31x Cortex-R5FCypress: S6J32x, S6J33x, S6J34x, S6J35x Cortex-R5F Big EndianTexas Instruments: TMS570LC4357x, RM57Lx I personally don't know about the R7(F), R8(F), R52(F). Maybe if anybody knows any better they can add to them to this list. I have a R5F Big Endian (TMS570LC4357) and an R4 (Artik055s), so I could work to add support for those. A word about the TMS570LC4357: |
Here https://github.com/paoloteti/ti-hercules-bsp you can find a board support package + JSON for TI TMS570LS3xx (tested on TMS570LS3137) that is a BigEndian Cortex-R4F (in LockStep mode). Linaro toolchain ( I already sent patches on Only the F021 flash memory need the TI F021 SDK because the algorithm is proprietary and the overall logic it is totally different form other flash memories. Mainly to ensure a set of safety constraints at silicon level. Here you can find a Rust binding. I don't have time at the moment to add/integrate my work on upstream, but I can test on real hardware on my spare time. BTW do not compare Cortex-R with Cortex-M: it is a different beast. |
Cortex R4F/R5F (BE, ARM mode) is now upstream (PR 50813) |
It seems like some of the thumbv8em chips are now shipping. |
I don't know if these devices are already available but I also heard about : Nuvoton M2351https://www.cnx-software.com/2017/03/21/numicro-m2351-trustzone-enabled-arm-cortex-m23-mcu-is-designed-for-fingerprint-applications/ Arm Musca A1https://developer.arm.com/products/system-design/development-boards/iot-test-chips-and-boards/musca-a-test-chip-board |
I was looking at the LLVM features for the ARMv8-M architecture and there are two ATM: |
Exactly, infact |
NXP has a Cortex-M33 MCU in pre-production now: https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/lpc-cortex-m-mcus/lpc5500-series/high-efficiency-arm-cortex-m33-based-microcontroller-family:LPC55S6x |
I opened a PR to add a target for baseline armv8-m rust-lang/rust#55041 |
Nice! Thanks @evq! |
@evq is there any chance you might be able to share the test code you have for the SAM L11? |
@thejpster sure, I will upload later today. I have an svd2rust crate with LED example code for the SAM L11 as well as needed changes to the |
Awesome, thanks @evq ! |
@thejpster You can find the svd2rust crate with example code here - https://github.com/evq/atsaml11xxx |
Armv8-M is trendy! I have been working with Rust and Armv8-M at Arm for the past few months and just made a pull-request for Mainline support rust-lang/rust#56000 ! |
FWIW, the LPC55S69-EVK development board from NXP which has two Cortex-M33 cores is now shipping as well. Things appear to work well including basic peripheral functionality, and only required a few mild modifications to the svd file. By the way, it seems that out of the three thumbv8m targets, only thumbv8m.main-none-eabi is included in the manifests (and can be installed with rustup). Wasn't sure if that's intentional. |
@codido I think
|
Thanks @hug-dev, missed those cortex-m-rt PRs, guess I don't need to push my version :) |
All the Armv8-M targets are now available with
|
Will |
I assume it's riding the release train, and will turn up in two stable releases time? |
Any news for the armv8-r for the R52? |
It won't happen until someone both needs it and has the ability to do it and has the time or the funding to do it and has the appropriate hardware or simulator to run it on, sadly. Cortex-R is a bit specialist compared to Cortex-M. |
I believe these targets are all available now, including |
We should consider adding target JSONs and build rust-std compenents for the following targets before the 2018 era lands:
This may also require updates to low level crates like
cortex-m
, maybecompiler_builtins
, though we should probably open separate issues for that.We likely will need physical chips to verify functionality before adding them upstream, which may be difficult for chips based on thumbv8em, as they are not currently retailing at the moment (as far as I know, the Nordic nRF91 is the only one shipping, and it is only in a limited sample release).
The text was updated successfully, but these errors were encountered: