2016-07-24 44 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