注意:很多初學(xué)者總是將啟動(dòng)代碼和Bootloader聯(lián)系在一起,這是錯(cuò)誤的什么是啟動(dòng)代碼?
啟動(dòng)代碼是系統(tǒng)上電或者復(fù)位后運(yùn)行的第一段代碼,是進(jìn)入C 語(yǔ)言的main 函數(shù)之前需要執(zhí)行的那段匯編代碼。
啟動(dòng)代碼有何用?
它的作用是在用戶程序運(yùn)行之前對(duì)系統(tǒng)硬件及軟件環(huán)境進(jìn)行必要的初始化并在最后使程序跳轉(zhuǎn)到用戶程序。它直接面對(duì)arm 處理器內(nèi)核及硬件控制器進(jìn)行編程,所執(zhí)行的操作與具體的目標(biāo)系統(tǒng)緊密相關(guān)。
C語(yǔ)言程序的運(yùn)行需要具備一定的條件,如分配好外部數(shù)據(jù)空間,堆??臻g和中斷入口等。另外,匯編代碼可以更直接地對(duì)硬件進(jìn)行操作,效率更高,這對(duì)啟動(dòng)中斷等對(duì)時(shí)間要求更高的情況是非常必要的什么是Bootloader?
Bootloader 不是一段代碼,它是一個(gè)具有引導(dǎo)裝載功能的完整的程序,如可以引導(dǎo)裝載linux的vivi,uboot,以及通常PC機(jī)上的BOIS程序等。
啟動(dòng)代碼和Bootloader關(guān)系?
Bootloader 也包含了相應(yīng)的啟動(dòng)代碼,也就是說(shuō),啟動(dòng)代碼是Bootloader的一部分,是所有相應(yīng)應(yīng)用程序的一部分。