【发布时间】:2015-12-29 20:55:07
【问题描述】:
我正在开发基于 TI Jacinto6(ARM CortexA15) 的开发板。我正在了解 U-boot 源。 根据 start.S 文件,执行以下汇编指令以禁用 L1 I/D 缓存和 TLB。此说明来自 start.s(http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/start.S;h=fedd7c8f7e00d0427405173849e6c0743d6b886f;hb=524123a70761110c5cf3ccc5f52f6d4da071b959)
mov r0, #0 @ set up for MCR
mcr p15, 0, r0, c8, c7, 0 @ invalidate TLBs
mcr p15, 0, r0, c7, c5, 0 @ invalidate icache
mcr p15, 0, r0, c7, c5, 6 @ invalidate BP array
mcr p15, 0, r0, c7, c10, 4 @ DSB
mcr p15, 0, r0, c7, c5, 4 @ ISB
根据 ARM 文档,CortexA15 有 4 个内核。 上面的代码将禁用它正在运行的内核上的缓存和 TLB,那么其他内核的缓存和 TLB 呢? U-boot 源代码会仅在一个内核上运行吗?如果是这样,那么如何禁用其他核心?
【问题讨论】:
-
通常在处理器/系统重置后,仅启用一个内核;其他一切都是静止的或禁用的。检查您提到的 ARM 文档。 U-Boot 将仅在一个内核上执行
-
“根据 ARM 文档,CortexA15 有 4 个内核” - 你确定吗? Cortex-A15 设计可能支持每个集群最多 4 个内核的配置,但我在 TI 网站上看到的所有内容都表明 Jacinto 6 实现了双内核配置。
-
@sawdust 感谢您的信息。那么内核会在启动时启用其他内核吗?请您分享启用其他内核的内核源链接(git)。
-
@Notlikethat CortexA15 根据图表 @arm.com/products/processors/cortex-a/cortex-a15.php 有 4 个内核。 Jacinto 6 有 CortexA15 和 Cortex M4,您能否分享一下说明 Jacinto 6 使用两个内核运行的 TI 链接。
标签: arm embedded-linux u-boot smp