Project Configuration
Relevant source files
This document covers the comprehensive project configuration for the riscv_goldfish crate as defined in the Cargo.toml manifest. It details package metadata, licensing strategy, target platform specifications, and dependency management that enable cross-platform RTC driver functionality within the ArceOS ecosystem.
For implementation details of the RTC driver itself, see RTC Driver Implementation. For CI/CD build matrix and testing procedures, see CI/CD Pipeline.
Package Metadata and Identity
The project configuration establishes the fundamental identity and purpose of the riscv_goldfish crate through standardized Cargo package metadata.
Core Package Definition
flowchart TD
subgraph subGraph2["External References"]
HOMEPAGE["homepage: arceos GitHub"]
REPOSITORY["repository: riscv_goldfish GitHub"]
DOCUMENTATION["documentation: docs.rs"]
end
subgraph subGraph1["Project Description"]
DESC["description: System Real Time Clock Drivers"]
KEYWORDS["keywords: [arceos, riscv, rtc]"]
CATEGORIES["categories: [os, hardware-support, no-std]"]
end
subgraph subGraph0["Package Identity"]
NAME["name: riscv_goldfish"]
VERSION["version: 0.1.1"]
EDITION["edition: 2021"]
AUTHOR["authors: Keyang Hu"]
end
CATEGORIES --> DOCUMENTATION
DESC --> HOMEPAGE
EDITION --> CATEGORIES
KEYWORDS --> REPOSITORY
NAME --> DESC
VERSION --> KEYWORDS
Package Metadata Configuration
| Field | Value | Purpose |
|---|---|---|
| name | riscv_goldfish | Crate identifier for Cargo registry |
| version | 0.1.1 | Semantic versioning for API compatibility |
| edition | 2021 | Rust language edition compatibility |
| authors | Keyang Hu keyang.hu@qq.com | Primary maintainer contact |
The package name follows Rust naming conventions using underscores and clearly indicates both the target architecture (riscv) and hardware platform (goldfish). The version 0.1.1 indicates this is an early release with patch-level updates from the initial 0.1.0 version.
Sources: Cargo.toml(L1 - L6)
Project Classification and Discovery
The configuration includes strategic metadata for package discovery and classification within the Rust ecosystem.
flowchart TD
subgraph subGraph2["Use Case Categories"]
OS_DEV["Operating Systems"]
HW_SUPPORT["Hardware Support"]
NOSTD_EMBEDDED["no-std Embedded"]
end
subgraph subGraph1["Target Audiences"]
ARCEOS_USERS["ArceOS Developers"]
RISCV_DEVS["RISC-V Engineers"]
RTC_DEVS["RTC Driver Authors"]
end
subgraph subGraph0["Discovery Metadata"]
KEYWORDS["keywords"]
CATEGORIES["categories"]
DESCRIPTION["description"]
end
CATEGORIES --> HW_SUPPORT
CATEGORIES --> NOSTD_EMBEDDED
CATEGORIES --> OS_DEV
DESCRIPTION --> CATEGORIES
DESCRIPTION --> KEYWORDS
KEYWORDS --> ARCEOS_USERS
KEYWORDS --> RISCV_DEVS
KEYWORDS --> RTC_DEVS
The categories field strategically positions the crate in three key areas:
os: Operating system components and kernel-level drivershardware-support: Low-level hardware interface librariesno-std: Embedded and bare-metal compatible crates
The keywords array enables discovery by ArceOS ecosystem users (arceos), RISC-V developers (riscv), and those seeking RTC functionality (rtc).
Sources: Cargo.toml(L6 - L12)
Licensing and Legal Framework
The project employs a triple licensing strategy to maximize compatibility across different legal and organizational requirements.
Multi-License Configuration
flowchart TD
subgraph subGraph2["Use Cases"]
OPEN_SOURCE["Open Source Projects"]
COMMERCIAL["Commercial Integration"]
CHINA_MARKET["Chinese Organizations"]
end
subgraph subGraph1["License Options"]
GPL["GPL-3.0-or-laterCopyleft Protection"]
APACHE["Apache-2.0Commercial Friendly"]
MULAN["MulanPSL-2.0Chinese Legal Framework"]
end
subgraph subGraph0["Triple License Strategy"]
LICENSE_FIELD["license: GPL-3.0-or-later OR Apache-2.0 OR MulanPSL-2.0"]
end
APACHE --> COMMERCIAL
GPL --> OPEN_SOURCE
LICENSE_FIELD --> APACHE
LICENSE_FIELD --> GPL
LICENSE_FIELD --> MULAN
MULAN --> CHINA_MARKET
The OR operator in the license field allows users to choose any of the three licenses based on their specific requirements:
- GPL-3.0-or-later: Ensures derivative works remain open source
- Apache-2.0: Permits commercial use with patent grant protections
- MulanPSL-2.0: Provides compatibility with Chinese legal frameworks
This licensing strategy is particularly important for operating system components that may be integrated into diverse software stacks with varying legal requirements.
Sources: Cargo.toml(L7)
Target Platform and Architecture Support
The configuration enables cross-platform compatibility through careful dependency management and metadata specification.
No-Standard Library Configuration
flowchart TD
subgraph subGraph2["Supported Architectures"]
X86_64["x86_64-unknown-linux-gnu"]
X86_NONE["x86_64-unknown-none"]
RISCV["riscv64gc-unknown-none-elf"]
ARM64["aarch64-unknown-none-softfloat"]
end
subgraph subGraph1["Target Compatibility"]
NOSTD["no-std Category"]
BARE_METAL["Bare Metal Targets"]
EMBEDDED["Embedded Systems"]
end
subgraph subGraph0["Dependencies Configuration"]
EMPTY_DEPS["[dependencies](empty section)"]
end
BARE_METAL --> ARM64
BARE_METAL --> RISCV
BARE_METAL --> X86_64
BARE_METAL --> X86_NONE
EMPTY_DEPS --> NOSTD
NOSTD --> BARE_METAL
NOSTD --> EMBEDDED
The absence of dependencies in the [dependencies] section is intentional and critical for the crate's design:
- Zero Dependencies: Enables compilation for bare-metal targets without standard library
- no-std Compatibility: Listed in categories to indicate embedded system support
- Cross-Compilation: Supports multiple architecture targets through pure Rust implementation
This configuration allows the RTC driver to function in resource-constrained environments where the standard library is unavailable or undesirable.
Sources: Cargo.toml(L12 - L15)
Repository and Documentation Links
The configuration establishes clear pathways for users to access source code, documentation, and project information.
| Link Type | URL | Purpose |
|---|---|---|
| homepage | https://github.com/arceos-org/arceos | ArceOS project ecosystem |
| repository | https://github.com/arceos-org/riscv_goldfish | Source code repository |
| documentation | https://docs.rs/riscv_goldfish | API documentation |
The homepage points to the broader ArceOS ecosystem, indicating this crate's role as a component within a larger operating system project. The repository field provides direct access to source code, while documentation enables automatic API documentation generation and hosting on docs.rs.
Sources: Cargo.toml(L8 - L10)
Configuration Impact on Build System
The Cargo.toml configuration directly influences the build system's behavior and capabilities across different target platforms.
flowchart TD
subgraph subGraph2["CI/CD Integration"]
MULTIPLE_TARGETS["cargo build --target"]
NO_STD_CHECK["no-std Validation"]
DOC_GENERATION["cargo doc Generation"]
end
subgraph subGraph1["Build System Effects"]
CROSS_COMPILE["Cross-Compilation Support"]
TARGET_MATRIX["Multi-Target Building"]
FEATURE_SET["Core Library Only"]
end
subgraph subGraph0["Cargo.toml Configuration"]
NO_DEPS["Empty Dependencies"]
NOSTD_CAT["no-std Category"]
EDITION_2021["edition = 2021"]
end
CROSS_COMPILE --> MULTIPLE_TARGETS
FEATURE_SET --> DOC_GENERATION
NOSTD_CAT --> TARGET_MATRIX
NO_DEPS --> CROSS_COMPILE
TARGET_MATRIX --> NO_STD_CHECK
The configuration enables several critical build system behaviors:
- Dependency-Free Building: Empty dependencies section allows compilation without external crates
- Target Flexibility: no-std category signals compatibility with embedded toolchains
- Modern Rust: Edition 2021 ensures access to latest language features while maintaining compatibility
This configuration is essential for the CI/CD pipeline's ability to validate the driver across multiple architectures and deployment scenarios.
Sources: Cargo.toml(L4 - L15)