2016-07-24 41 views
0

我读关于Linux /弓/ ARM /开机/压缩/ head.S中引导Linux天使引导

我想通了有关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 

所以我用Google搜索和阅读位于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

稍微棘手的连接是,天使是ARM标准的旧名称[外部调试器的半主机接口](http://infocenter.arm.com/help/topic/com.arm.doc.dui0471m /pge1358787046598.html)。 – Notlikethat

+0

天使是StrongARM CPU(2000年左右)提供的极为古老的技术。我会忽略它;这就是为什么没有人记录它。 –

+0

谢谢你的回答。 –

回答

1

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

看来你可以通过使用gdb等调试器来调试你的软件 - 当你的电路板安装了天使。

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