2011年10月14日 星期五

Startup code

startup code是程式在正式執行main function前所執行的一段code。在一般的軟體開發中,這段code是由compiler所自動產生並安插在main執行之前。因此平常我們可能不會注意到這段code。一般軟體的startup code最主要的工作就是初始化stack。

在embedded system,startup code是開機上電後第一段會執行的程式,通常是由組合語言所寫成。大部分都叫做startup.asm或是crt0.s。他比一般PC上的軟體會多作一些事情,以下是一個embedded software startup code的流程:

1. 關掉所有的interrupt
2. 配置一塊空間給stack
3. 初始化stack pointer, frame pointer
4. 把資料從ROM搬到RAM上,通常是用DMA來搬
5. 把.bss section清空為0,因為未初始化的變數一開始皆為0
6. 打開interrupt
7. 初始化系統的一些設定
8. jump到main function,開始執行main function中的程式

沒有留言:

張貼留言