配置
本文汇总 brookesia_system_core 当前实现使用的 Kconfig、PC CMake config、宏默认值和运行时 storage 配置。
Kconfig
ESP 平台配置位于 system/brookesia_system_core/Kconfig。
配置项 |
默认值 |
说明 |
|---|---|---|
|
|
runtime app manifest 可申请的最大 |
|
|
注册 runtime async timeout 调试 probe |
|
|
打开 core 组件 debug log 总开关 |
|
|
总开关打开后,启用 system 模块 debug log |
|
|
总开关打开后,启用 service 模块 debug log |
|
|
system task scheduler worker 线程名前缀 |
|
|
system task scheduler worker 优先级 |
|
|
system task scheduler worker 栈大小 |
|
|
是否将 worker 栈放到外部内存 |
|
|
worker poll 间隔 |
|
|
worker 数量,范围 |
|
|
Worker 0 core affinity, |
|
|
Worker 1 core affinity, |
|
|
Worker 2 core affinity, |
|
|
Worker 3 core affinity, |
System 不再通过 Kconfig 指定旧式资源根目录。运行时会从 Device service 枚举存储文件系统,并建立 Android-like storage layout。
PC CMake Config
PC 平台配置位于 system/brookesia_system_core/cmake/pc_platform.cmake。
CMake 变量 |
默认值 |
说明 |
|---|---|---|
|
|
PC debug log 总开关 |
|
|
PC system debug log 默认值 |
|
|
PC service debug log 默认值 |
|
|
PC runtime async timeout 调试 probe 默认值 |
|
|
PC staged internal storage 根目录 |
|
|
PC 构建期 app staging 目录 |
|
|
PC 构建期 system resource staging 目录 |
|
|
PC runtime app manifest 可申请的最大 |
|
|
PC worker 线程名前缀 |
|
|
PC worker 优先级 |
|
|
PC worker 栈大小 |
|
|
PC worker 是否使用外部内存栈 |
|
|
PC worker poll 间隔 |
|
|
PC worker 数量 |
|
|
PC Worker 0 core affinity |
|
|
PC Worker 1 core affinity |
|
|
PC Worker 2 core affinity |
|
|
PC Worker 3 core affinity |
PC_STAGE_* 变量只用于构建期 staging。运行时 storage layout 仍由 Device service 或 System::Config::storage 覆盖确定。
macro_configs.h
公共宏位于 include/brookesia/system_core/macro_configs.h。
宏 |
当前值或来源 |
说明 |
|---|---|---|
|
|
日志 tag |
|
|
系统 service 名 |
|
|
GUI service 名 |
|
|
timer service 名 |
|
|
默认 system type |
|
|
app 默认 screen path |
|
Kconfig/PC config/默认值 |
是否注册 runtime async timeout 调试 probe |
|
Kconfig/PC config/默认值 |
runtime app manifest 可申请的最大 |
|
Kconfig/PC config/默认值 |
system task scheduler worker 配置 |
Storage Layout
System init 时通过 Device service 查询所有 storage filesystem,生成一个 internal volume 和零个或多个 external volume。
internal 自动选择优先级:
Flash + LittleFS
Flash + FATFS
SDCard + FATFS
其它 LittleFS
其它 FATFS
external 包含所有 SDCard storage volume。System::Config::storage 可覆盖 internal、external、preferred external id 和默认安装目标。
System 会自动创建以下固定目录:
internal/external:
apps、music、download、movies、pictures、documentsinternal only:
system每个 app:
apps/<manifest_id>/cache、apps/<manifest_id>/data、apps/<manifest_id>/files
runtime app 扫描目录为 internal 和所有 external 的 apps。重复 manifest id 按 internal、preferred external、其它 external 的顺序去重。
默认 runtime app 安装目标为 Auto:优先 preferred external,其次第一个 external,最后 fallback 到 internal。原生应用可通过 SystemApi::set_default_install_storage() 修改默认目标;System 会保存到 Storage KV 并在下次启动恢复。
System::Config
System::Config 是运行时配置入口:
gui_backend:GUI backend。为空时不创建 GUI runtime。environment:传给 JSON UI parser/runtime 的屏幕环境。storage:可覆盖 internal/external volume、preferred external id 和默认安装目标。system_type:默认"core"。start_service_manager:是否在 init 中启动ServiceManager。install_registered_apps:是否安装IAppProviderregistry 中的 app。install_package_apps:是否扫描 storage layout 的apps目录并安装 runtime app。enable_gui_view_debug:是否在创建 GUI runtime 后开启 view debug outline,默认关闭。enable_gui_live_preview:是否为 file-backed GUI document 自动开启 live preview,默认关闭。gui_live_preview_options:传给gui::Runtime::enable_live_preview()的选项。gui_live_preview_poll_interval_ms:system 内部 live preview poll task 的周期,默认100ms。startup_overlay:可选 system startup overlay;在 GUI runtime 创建后、app 安装和 Shell 启动前显示,start()完成后隐藏。app_launch_transition:可选 app launch transition;在 app GUI 资源注册和 document 加载前显示,可由start_app(app_id, AppStartOptions{.launch_origin_frame = ...})指定动画起点。
目录与文件接口
原生应用可通过 AppContext::system_service() 访问:
auto layout = context.system_service().get_storage_layout();
auto app_dirs = context.system_service().get_app_storage_paths();
auto public_dirs = context.system_service().get_public_storage_paths();
runtime app 通过 SystemCore service 使用同等 JSON API。文件操作必须传入 StoragePathKind、volume id 和相对路径;绝对路径和 .. 会被拒绝,无法逃逸到其它 app 的目录。