summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTENGZIJUN <[email protected]>2026-11-05 16:31:33 +0800
committerRbb666 <[email protected]>2026-11-05 22:26:23 +0800
commit89c70abccd0359f9f7ba9df2e81dbe764d3e78d3 (patch)
tree0cfa957a6d4d0f113c1ba5b8d0ef1046b9644889
parentcbadbdf1bff3430bdb2f3fa6c52e7308ad1ac016 (diff)
kconfig部分搬至arm/kconfigHEADmaster
-rw-r--r--documentation/4.tool/scons/libcpu_kconfig_arm_split.md90
-rw-r--r--libcpu/Kconfig174
-rw-r--r--libcpu/arm/Kconfig176
3 files changed, 267 insertions, 173 deletions
diff --git a/documentation/4.tool/scons/libcpu_kconfig_arm_split.md b/documentation/4.tool/scons/libcpu_kconfig_arm_split.md
new file mode 100644
index 0000000000..862c6fe37c
--- /dev/null
+++ b/documentation/4.tool/scons/libcpu_kconfig_arm_split.md
@@ -0,0 +1,90 @@
+# libcpu Kconfig 的 ARM 配置拆分说明
+
+## 目的与范围
+
+`libcpu/Kconfig` 原来同时包含 CPU 公共能力、跨架构内存管理、ARM 配置、其他架构配置及子配置文件入口。本次将 ARM 专属配置集中到 `libcpu/arm/Kconfig`,便于按架构维护。
+
+本次只搬迁 ARM 配置,保留配置符号、类型、提示文字、默认值、依赖、选择关系和原有条件,不拆分其他架构,不新增菜单,不修改 BSP 配置。
+
+## 文件职责
+
+| 文件 | 职责 |
+| --- | --- |
+| `libcpu/Kconfig` | CPU 公共能力、跨架构内存管理、其他架构配置,以及子文件引用 |
+| `libcpu/arm/Kconfig` | ARM 架构标识、内核型号及 ARM 专属能力 |
+| `libcpu/aarch64/Kconfig` | 原有 AArch64 详细配置,本次不修改 |
+| `libcpu/risc-v/Kconfig` | 原有 RISC-V 详细配置,本次不修改 |
+
+新增文件沿用仓库已有的 `Kconfig` 大小写命名。
+
+## 搬迁内容
+
+- ARM 架构及内核标识:`ARCH_ARM`、所有 `ARCH_ARM_CORTEX_*`、`ARCH_ARM_ARM9`、`ARCH_ARM_ARM11` 和 `ARCH_ARMV8`。
+- ARM 专属能力:`ARCH_ARM_BOOTWITH_FLUSH_CACHE`、`ARCH_ARM_MMU`、`ARCH_ARM_MPU` 和 `ARCH_ARM_SECURE_MODE`。
+- Cortex-A 配套选项:`RT_SMP_AUTO_BOOT`、`RT_USING_GIC_V2`、`RT_USING_GIC_V3` 和 `RT_NO_USING_GIC`。
+- 当前依赖 Cortex-A 的选项:`RT_IOREMAP_LATE` 和 `RT_BACKTRACE_FUNCTION_NAME`。
+
+ARM 条目在新文件内保留原先的相对顺序。
+
+## 引用与依赖处理
+
+`libcpu/Kconfig` 在原 `ARCH_ARM_BOOTWITH_FLUSH_CACHE` 定义的位置无条件引入 ARM 子文件:
+
+```kconfig
+rsource "arm/Kconfig"
+```
+
+`rsource` 按当前 Kconfig 文件所在目录解析相对路径,且目标文件缺失时会报错。BSP 继续通过原有入口加载 `libcpu/Kconfig`,无需逐个调整引用。
+
+引用外不增加 `if ARCH_ARM`。子文件本身定义 `ARCH_ARM`,各内核型号通过 `select` 选择该符号;额外增加条件会改变依赖关系,并可能形成循环依赖。
+
+以下配置保留在公共文件:
+
+- CPU 位宽、大小端、缓存、原子操作、栈方向和 FFS 等公共能力。
+- `ARCH_MM_MMU`、`ARCH_MM_MPU`、`ARCH_REMAP_KERNEL`、`ARCH_USING_ASID` 等跨架构能力。
+- `KERNEL_VADDR_START`:同时包含 ARM、ARMv8 和 RISC-V 的地址默认值,继续保留在 `if RT_USING_SMART` 内。
+
+`RT_IOREMAP_LATE` 搬迁后单独保留 `if RT_USING_SMART`,并保留原有的 Cortex-A、MMU 依赖。GIC 等选项继续位于原有的 `if ARCH_ARM_CORTEX_A` 内。
+
+`ARCH_ARMV8` 作为 ARM 架构标识一起搬迁;原有 `ARCH_ARMV8 && ARCH_CPU_64BIT` 条件下的 AArch64 子文件入口保持原样。
+
+原文件中两处 `ARCH_ARM_CORTEX_R` 定义一起原样搬迁,不在此次合并;公共配置中重复的 `ARCH_CPU_STACK_GROWS_UPWARD` 也保持原样。
+
+## 验证结果
+
+使用 Kconfiglib 14.1.0,基于以下 BSP 工作区已有的 `.config`,比较搬迁前后的解析结果:
+
+| BSP | 覆盖范围 | 比较结果 |
+| --- | --- | --- |
+| `bsp/frdm-k64f` | Cortex-M4 | 一致 |
+| `bsp/qemu-vexpress-a9` | Cortex-A9、MMU、GIC | 一致 |
+| `bsp/renesas/rzt2m_rsk` | Cortex-R52 | 一致 |
+| `bsp/qemu-virt64-aarch64` | ARMv8、64 位及 AArch64 子配置 | 一致 |
+| `bsp/qemu-virt64-riscv` | RISC-V 和公共配置 | 一致 |
+
+比较覆盖全部解析符号的值、类型、可见性、可赋值范围、默认值、直接依赖、反向依赖,以及各定义节点的提示、依赖、`select` 和 `imply`。忽略文件路径及行号变化后,解析警告也与搬迁前一致,没有新增警告。
+
+此外,在内存中为 Cortex-A9、AArch64 和 RISC-V BSP 启用 `RT_USING_SMART` 后再次比较,结果一致:
+
+- Cortex-A9 的 `KERNEL_VADDR_START` 为 `0xc0000000`,并验证 `RT_IOREMAP_LATE` 可启用。
+- AArch64 的 `KERNEL_VADDR_START` 为 `0xffff000000000000`。
+- RISC-V 的 `KERNEL_VADDR_START` 为 `0xffffffc000000000`。
+
+验证仅加载配置及在内存中调整选项,没有写入 BSP 的 `.config` 或 `rtconfig.h`,没有进行固件编译或运行验证。
+
+## 后续验证方式
+
+在已安装 Kconfiglib 的 Python 环境中,从待验证 BSP 的目录运行以下命令,可以检查配置解析及主要架构符号;该命令不写回配置文件:
+
+```sh
+python3 - <<'PY'
+import kconfiglib
+
+config = kconfiglib.Kconfig("Kconfig")
+config.load_config(".config")
+for name in ("ARCH_ARM", "ARCH_ARMV8", "ARCH_CPU_64BIT", "ARCH_RISCV"):
+ print("{}={}".format(name, config.syms[name].str_value))
+PY
+```
+
+需要复查等价性时,应在变更前后使用同一份 BSP 配置和同一版本的解析器,比较上述符号属性,并排除搬迁导致的诊断位置变化。上述简短命令只用于解析检查,不能替代完整的前后比较。
diff --git a/libcpu/Kconfig b/libcpu/Kconfig
index 3b1edab250..ead8d14794 100644
--- a/libcpu/Kconfig
+++ b/libcpu/Kconfig
@@ -24,9 +24,7 @@ config ARCH_USING_HW_ATOMIC_16
config ARCH_CPU_BIG_ENDIAN
bool
-config ARCH_ARM_BOOTWITH_FLUSH_CACHE
- bool
- default n
+rsource "arm/Kconfig"
config ARCH_CPU_STACK_GROWS_UPWARD
bool
@@ -42,97 +40,6 @@ config ARCH_MM_MMU
config ARCH_MM_MPU
bool
-config ARCH_ARM
- bool
-
-config ARCH_ARM_CORTEX_M
- bool
- select ARCH_ARM
-
-config ARCH_ARM_CORTEX_R
- bool
- select ARCH_ARM
-
-config ARCH_ARM_CORTEX_FPU
- bool
-
-config ARCH_ARM_CORTEX_SECURE
- bool
-
-config ARCH_ARM_CORTEX_M0
- bool
- select ARCH_ARM_CORTEX_M
-
-config ARCH_ARM_CORTEX_M3
- bool
- select ARCH_ARM_CORTEX_M
- select RT_USING_CPU_FFS
- select RT_USING_HW_ATOMIC
- select ARCH_USING_HW_ATOMIC_8
- select ARCH_USING_HW_ATOMIC_16
-
-config ARCH_ARM_MPU
- bool
- depends on ARCH_ARM
- select ARCH_MM_MPU
-
-config ARCH_ARM_CORTEX_M4
- bool
- select ARCH_ARM_CORTEX_M
- select RT_USING_CPU_FFS
- select RT_USING_HW_ATOMIC
- select ARCH_USING_HW_ATOMIC_8
- select ARCH_USING_HW_ATOMIC_16
-
-config ARCH_ARM_CORTEX_M7
- bool
- select ARCH_ARM_CORTEX_M
- select RT_USING_CPU_FFS
- select RT_USING_CACHE
- select RT_USING_HW_ATOMIC
- select ARCH_USING_HW_ATOMIC_8
- select ARCH_USING_HW_ATOMIC_16
-
-config ARCH_ARM_CORTEX_M85
- bool
- select ARCH_ARM_CORTEX_M
- select RT_USING_CPU_FFS
- select RT_USING_HW_ATOMIC
- select ARCH_USING_HW_ATOMIC_8
- select ARCH_USING_HW_ATOMIC_16
-
-config ARCH_ARM_CORTEX_M23
- bool
- select ARCH_ARM_CORTEX_M
- select RT_USING_HW_ATOMIC
- select ARCH_USING_HW_ATOMIC_8
- select ARCH_USING_HW_ATOMIC_16
-
-config ARCH_ARM_CORTEX_M33
- bool
- select ARCH_ARM_CORTEX_M
- select RT_USING_CPU_FFS
- select RT_USING_HW_ATOMIC
- select ARCH_USING_HW_ATOMIC_8
- select ARCH_USING_HW_ATOMIC_16
-
-config ARCH_ARM_CORTEX_R
- bool
- select ARCH_ARM
- select RT_USING_HW_ATOMIC
- select ARCH_USING_HW_ATOMIC_8
- select ARCH_USING_HW_ATOMIC_16
-
-config ARCH_ARM_CORTEX_R52
- bool
- select ARCH_ARM_CORTEX_R
-
-config ARCH_ARM_MMU
- bool
- select RT_USING_CACHE
- select ARCH_MM_MMU
- depends on ARCH_ARM
-
if RT_USING_SMART
config KERNEL_VADDR_START
hex "The virtural address of kernel start"
@@ -141,87 +48,8 @@ if RT_USING_SMART
default 0xffffffc000000000 if ARCH_RISCV && ARCH_REMAP_KERNEL
default 0x80000000 if ARCH_RISCV
depends on ARCH_MM_MMU
-
- config RT_IOREMAP_LATE
- bool "Support to create IO mapping in the kernel address space after system initlalization."
- default n
- depends on ARCH_ARM_CORTEX_A
- depends on ARCH_MM_MMU
endif
-config ARCH_ARM_ARM9
- bool
- select ARCH_ARM
-
-config ARCH_ARM_ARM11
- bool
- select ARCH_ARM
-
-config ARCH_ARM_CORTEX_A
- bool
- select ARCH_ARM
- select ARCH_ARM_MMU
- select RT_USING_CPU_FFS
- select RT_USING_HW_ATOMIC
- select ARCH_USING_HW_ATOMIC_8
- select ARCH_USING_HW_ATOMIC_16
-
- if ARCH_ARM_CORTEX_A
- config RT_SMP_AUTO_BOOT
- bool
- default n
-
- config RT_USING_GIC_V2
- bool
- default n
-
- config RT_USING_GIC_V3
- bool
- default n
-
- config RT_NO_USING_GIC
- bool
- default y if !RT_USING_GIC_V2 && !RT_USING_GIC_V3
- endif
-
-config ARCH_ARM_CORTEX_A5
- bool
- select ARCH_ARM_CORTEX_A
-
-config ARCH_ARM_CORTEX_A7
- bool
- select ARCH_ARM_CORTEX_A
-
-config ARCH_ARM_CORTEX_A8
- bool
- select ARCH_ARM_CORTEX_A
-
-config ARCH_ARM_CORTEX_A9
- bool
- select ARCH_ARM_CORTEX_A
-
-config ARCH_ARM_CORTEX_A55
- bool
- select ARCH_ARM_CORTEX_A
-
-config ARCH_ARM_SECURE_MODE
- bool "Running in secure mode [ARM Cortex-A]"
- default n
- depends on ARCH_ARM_CORTEX_A
-
-config RT_BACKTRACE_FUNCTION_NAME
- bool "To show function name when backtrace."
- default n
- depends on ARCH_ARM_CORTEX_A
-
-config ARCH_ARMV8
- bool
- select ARCH_ARM
- select ARCH_ARM_MMU
- select RT_USING_CPU_FFS
- select ARCH_USING_ASID
- select ARCH_USING_IRQ_CTX_LIST
-
config ARCH_MIPS
bool
diff --git a/libcpu/arm/Kconfig b/libcpu/arm/Kconfig
new file mode 100644
index 0000000000..80a52ec350
--- /dev/null
+++ b/libcpu/arm/Kconfig
@@ -0,0 +1,176 @@
+config ARCH_ARM_BOOTWITH_FLUSH_CACHE
+ bool
+ default n
+
+config ARCH_ARM
+ bool
+
+config ARCH_ARM_CORTEX_M
+ bool
+ select ARCH_ARM
+
+config ARCH_ARM_CORTEX_R
+ bool
+ select ARCH_ARM
+
+config ARCH_ARM_CORTEX_FPU
+ bool
+
+config ARCH_ARM_CORTEX_SECURE
+ bool
+
+config ARCH_ARM_CORTEX_M0
+ bool
+ select ARCH_ARM_CORTEX_M
+
+config ARCH_ARM_CORTEX_M3
+ bool
+ select ARCH_ARM_CORTEX_M
+ select RT_USING_CPU_FFS
+ select RT_USING_HW_ATOMIC
+ select ARCH_USING_HW_ATOMIC_8
+ select ARCH_USING_HW_ATOMIC_16
+
+config ARCH_ARM_MPU
+ bool
+ depends on ARCH_ARM
+ select ARCH_MM_MPU
+
+config ARCH_ARM_CORTEX_M4
+ bool
+ select ARCH_ARM_CORTEX_M
+ select RT_USING_CPU_FFS
+ select RT_USING_HW_ATOMIC
+ select ARCH_USING_HW_ATOMIC_8
+ select ARCH_USING_HW_ATOMIC_16
+
+config ARCH_ARM_CORTEX_M7
+ bool
+ select ARCH_ARM_CORTEX_M
+ select RT_USING_CPU_FFS
+ select RT_USING_CACHE
+ select RT_USING_HW_ATOMIC
+ select ARCH_USING_HW_ATOMIC_8
+ select ARCH_USING_HW_ATOMIC_16
+
+config ARCH_ARM_CORTEX_M85
+ bool
+ select ARCH_ARM_CORTEX_M
+ select RT_USING_CPU_FFS
+ select RT_USING_HW_ATOMIC
+ select ARCH_USING_HW_ATOMIC_8
+ select ARCH_USING_HW_ATOMIC_16
+
+config ARCH_ARM_CORTEX_M23
+ bool
+ select ARCH_ARM_CORTEX_M
+ select RT_USING_HW_ATOMIC
+ select ARCH_USING_HW_ATOMIC_8
+ select ARCH_USING_HW_ATOMIC_16
+
+config ARCH_ARM_CORTEX_M33
+ bool
+ select ARCH_ARM_CORTEX_M
+ select RT_USING_CPU_FFS
+ select RT_USING_HW_ATOMIC
+ select ARCH_USING_HW_ATOMIC_8
+ select ARCH_USING_HW_ATOMIC_16
+
+config ARCH_ARM_CORTEX_R
+ bool
+ select ARCH_ARM
+ select RT_USING_HW_ATOMIC
+ select ARCH_USING_HW_ATOMIC_8
+ select ARCH_USING_HW_ATOMIC_16
+
+config ARCH_ARM_CORTEX_R52
+ bool
+ select ARCH_ARM_CORTEX_R
+
+config ARCH_ARM_MMU
+ bool
+ select RT_USING_CACHE
+ select ARCH_MM_MMU
+ depends on ARCH_ARM
+
+if RT_USING_SMART
+ config RT_IOREMAP_LATE
+ bool "Support to create IO mapping in the kernel address space after system initlalization."
+ default n
+ depends on ARCH_ARM_CORTEX_A
+ depends on ARCH_MM_MMU
+endif
+
+config ARCH_ARM_ARM9
+ bool
+ select ARCH_ARM
+
+config ARCH_ARM_ARM11
+ bool
+ select ARCH_ARM
+
+config ARCH_ARM_CORTEX_A
+ bool
+ select ARCH_ARM
+ select ARCH_ARM_MMU
+ select RT_USING_CPU_FFS
+ select RT_USING_HW_ATOMIC
+ select ARCH_USING_HW_ATOMIC_8
+ select ARCH_USING_HW_ATOMIC_16
+
+ if ARCH_ARM_CORTEX_A
+ config RT_SMP_AUTO_BOOT
+ bool
+ default n
+
+ config RT_USING_GIC_V2
+ bool
+ default n
+
+ config RT_USING_GIC_V3
+ bool
+ default n
+
+ config RT_NO_USING_GIC
+ bool
+ default y if !RT_USING_GIC_V2 && !RT_USING_GIC_V3
+ endif
+
+config ARCH_ARM_CORTEX_A5
+ bool
+ select ARCH_ARM_CORTEX_A
+
+config ARCH_ARM_CORTEX_A7
+ bool
+ select ARCH_ARM_CORTEX_A
+
+config ARCH_ARM_CORTEX_A8
+ bool
+ select ARCH_ARM_CORTEX_A
+
+config ARCH_ARM_CORTEX_A9
+ bool
+ select ARCH_ARM_CORTEX_A
+
+config ARCH_ARM_CORTEX_A55
+ bool
+ select ARCH_ARM_CORTEX_A
+
+config ARCH_ARM_SECURE_MODE
+ bool "Running in secure mode [ARM Cortex-A]"
+ default n
+ depends on ARCH_ARM_CORTEX_A
+
+config RT_BACKTRACE_FUNCTION_NAME
+ bool "To show function name when backtrace."
+ default n
+ depends on ARCH_ARM_CORTEX_A
+
+config ARCH_ARMV8
+ bool
+ select ARCH_ARM
+ select ARCH_ARM_MMU
+ select RT_USING_CPU_FFS
+ select ARCH_USING_ASID
+ select ARCH_USING_IRQ_CTX_LIST
+