Skip to content

Latest commit

 

History

History
75 lines (61 loc) · 2.89 KB

PlatformDependencies.md

File metadata and controls

75 lines (61 loc) · 2.89 KB

目标平台依赖

sel4-config机制用于导入seL4内核配置,只有在编译Rust代码时才会动态设置功能。 目标平台依赖项(如设备驱动程序)通过将顶层功能通过cargo命令行传递来处理cargo依赖项进程。 例如,在DebugConsole/cantrip-debug-console/Cargo.toml中,针对命令行解释器的平台特定UART支持的配置是这样完成的:

[features]
default = [
    "autostart_support",
]
autostart_support = ["default-uart-client"]
# Target platform support
CONFIG_PLAT_BCM2837 = []
CONFIG_PLAT_SPARROW = ["cantrip-uart-client"]

CONFIG_PLAT_*功能与seL4内核配置参数相对应,可用于选择可选依赖项:

[dependencies]
...
default-uart-client = { path = "../default-uart-client", optional = true }
...
cantrip-uart-client = { path = "../cantrip-uart-client", optional = true }

平台功能通过build/cantrip.mk中的以下内容注入到构建过程中:

cmake ... -DRUST_GLOBAL_FEATURES=${CONFIG_PLATFORM} ...

除了在构建过程中包含平台依赖项,它们还可能需要包含在CAmkES组装中;这通过使system.camkes文件特定于平台来完成。 例如,platforms/sparrow/system.camkes连接了UARTDriver、MlCoordinator、MailboxDriver和TimerService组件。

一些系统服务(如SDKRuntime)已准备好条件包含依赖服务; 例如,如果不存在MlCoordinator服务,则所有与模型相关的SDK调用都会返回SDKError::NoPlatformSupport。 这样做是为了让应用程序拥有稳定的ABI。