Merged
Conversation
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.
This PR introduces new tier 3 targets for SOLID embedded development platform by Kyoto Microcomputer Co., Ltd.
target_archtarget_vendortarget_osaarch64-kmc-solid_asp3aarch64kmcsolid_asp3armv7a-kmc-solid_asp3-eabiarmkmcsolid_asp3armv7a-kmc-solid_asp3-eabihfarmkmcsolid_asp3Related PRs
libc: Add SOLID target support libc#2227cc: https://github.com/alexcrichton/cc-rs/pull/609Non-blocking Issues
Thread::unparkdirectly, but this property is not utilized because the underlying kernel feature is used to implementCondvarand it's unclear whetherstdshould guarantee that parking tokens are not clobbered by other synchronization primitives.Tier 3 Target Policy
As tier 3 targets, the new targets are required to adhere to the tier 3 target policy requirements. This section quotes each requirement in entirety and describes how they are met.
See
src/doc/rustc/src/platform-support/kmc-solid.md.The new target names follow this format:
$ARCH-$VENDOR-$OS-$ABI, which is already adopted by most existing targets.$ARCHand$ABIfollow the convention:aarch64-*for AArch64,armv7a-*-eabifor Armv7-A with EABI.$OSis used to distinguish multiple variations of the platform in a somewhat similar way to the Apple targets, though we are only adding one variation in this PR.$VENDORdenotes the platform vendor name similarly to the Apple, Solaris, SGX, and VxWorks targets.$OScorresponds to the value oftarget_osand takes the formatsolid-$KERNEL. The inclusion of a hyphen prevents unique decomposition of target names, though the mapping between target names and target attributes isn't trivial in the first place, e.g., because of the Android targets.More targets may be added later, as we support other base kernels (there are at least three at the point of writing) and are interested in supporting other processor architectures in the future.
We intend to make the contribution fully available under the standard Rust license with no additional legal restrictions whatsoever. This PR does not introduce any new dependency less permissive than the Rust license policy, and we are willing to ensure this doesn't happen for future contributions regarding the new targets.
The new targets don't support building host tools.
Although the new targets use a platform-provided C compiler toolchain, it can be substituted by GNU Arm Embedded Toolchain for testing purposes.
Most features are implemented. The following features are not implemented due to the lack of native support:
fs::File::{file_attr, truncate, duplicate, set_permissions}fs::{symlink, link, canonicalize}Networking is not implemented yet, and we intend to add it as soon as it's ready.Edit (2021-07-07): Networking is now implemented.
Backtrace generation is not really a good fit for embedded targets, so it's intentionally left unimplemented. Unwinding is functional, however.
See
src/doc/rustc/src/platform-support/kmc-solid.md. Running tests is not supported.We acknowledge these requirements and intend to ensure they are met.
There are no closely related targets at the moment.