Linux Booting Angel启动

时间:2016-07-24 09:48:07

标签: linux arm

我正在阅读有关linux / arch / arm / boot / compressed / head.S的文章。

我想出了angel boot。这是我第一次谈论这个词

#ifndef CONFIG_CPU_V7M
        /*
         * Booting from Angel - need to enter SVC mode and disable
         * FIQs/IRQs (numeric definitions from angel arm.h source).
         * We only do this if we were in user mode on entry.
         */
        mrs r2, cpsr        @ get current mode
        tst r2, #3          @ not user?
        bne not_angel
        mov r0, #0x17       @ angel_SWIreason_EnterSVC
 ARM(       swi 0x123456    )   @ angel_SWI_ARM
 THUMB(     svc 0xab        )   @ angel_SWI_THUMB
not_angel:
        safe_svcmode_maskall r0
        msr spsr_cxsf, r9       @ Save the CPU boot mode in
                        @ SPSR
#endif

所以我用谷歌搜索并阅读linux/Documentation/arm/Booting

中的linux文档

在任何网站上都没有关于天使启动的明确定义,而linux文档中只提到像天使一样的天使

  For CPUs which do not include the ARM virtualization extensions, the
  CPU must be in SVC mode.  (A special exception exists for Angel)

所以我想知道关于天使启动的明确定义

感谢您的回答

1 个答案:

答案 0 :(得分:1)

指ARM信息中心的内容," Angel是一个调试监视器,可以快速开发和调试在基于ARM的硬件上运行的应用程序。" http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0066d/Babdcdih.html

似乎你可以使用像gdb这样的调试器通过Angel来调试你的软件 - 当你的主板设置为Angel时。

它提供了一个名为"半主机" - 板主机输入/输出桥接。它是在SWI上下文中完成的。 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0058d/CIHDICHH.html