我想了解各种C状态,C1状态下的大多数CPU都在HLT上运行,在c4状态下像c4一样转到WFI。
答案 0 :(得分:0)
这个问题没有意义。您正在混淆ARM和x86系统中的术语。
x86上存在HLT
指令;它在ARM上不存在。 WFI
是最接近的等价物,同样地,仅存在于ARM上。这两个指令在各自的体系结构上执行类似的任务。
C状态也是x86特定的术语。 ARM CPU通常具有类似的睡眠状态,但它们通常由各个硬件制造商定义,而不是由ARM本身定义。
答案 1 :(得分:0)
HLT用于JTAG,WFI和WFE,这是您通常在裸机程序中使用的
ARMv8中的HLT是与调试相关的指令,即GDB用于实现硬件断点/监视点或JTAG使用的指令类型。
与其他所有指令一样,《 ARM参考手册》中对此文档进行了说明:https://static.docs.arm.com/ddi0487/db/DDI0487D_b_armv8_arm.pdf
我不确定这是做什么的,但是手册在C6.2.84“ HLT”中将其描述为:
HLT暂停指令。 HLT指令可以生成“暂停指令”调试事件,从而导致进入“调试”状态。
H2章“调试状态”描述了调试状态的含义:
在外部调试中,调试事件允许外部调试器暂停PE。然后,PE进入调试状态。
进一步,我们看到“外部调试”意味着类似JTAG的调试方法。
因此,HLT似乎是从软件进入JTAG调试模式的一种方式,就像BRK进行GDB软件调试一样。
因此,除非您要实现此类与调试相关的功能,否则您不希望接触HLT。
以下是简约的裸机示例: