弄清關(guān)于啟動(dòng)代碼的幾個(gè)問(wèn)題

發(fā)布時(shí)間:2017-5-19 09:25    發(fā)布者:技術(shù)小白
關(guān)鍵詞: 代碼 , CPU , 嵌入式 , 單片機
弄清關(guān)于啟動(dòng)代碼的幾個(gè)問(wèn)題

啟動(dòng)代碼通常都燒寫(xiě)在Flash中,它是系統一上電就執行的一段程序,運行在任何用戶(hù)C代碼之前

啟動(dòng)代碼主要完成兩方面的工作,一是初始化執行環(huán)境,例如中斷向量表、堆棧、I/O等;二是初始化C庫和用戶(hù)應用程序。

關(guān)于啟動(dòng)代碼,有幾個(gè)問(wèn)題需要解解惑!

為什么啟動(dòng)代碼一定一要用匯編語(yǔ)言編寫(xiě)?

最開(kāi)始的幾行代碼要完成初始化中斷向量,堆棧什么的,這些只能用匯編做。

啟動(dòng)代碼的主要功能是什么?
CPU上電后會(huì )從IO空間的某地址取第一條指令。但此時(shí):PLL沒(méi)有啟動(dòng),CPU工作頻率為外部輸入晶振頻率,非常低;CPU工作模式、中斷設置等不確定;存儲空間的各個(gè)BANK(包括內存)都沒(méi)有驅動(dòng),內存不能使用。在這種情況下必須在第一條指令處做一些初始化工作,這段初始化程序與操作系統獨立分開(kāi),稱(chēng)之為bootloader。

一個(gè)嵌入式Bootloader最初始部分的代碼幾乎必須是用匯編語(yǔ)言寫(xiě)成的,因為開(kāi)發(fā)板剛上電后沒(méi)有準備好C程序運行環(huán)境,比如堆棧指針SP沒(méi)有指到正確的位置。匯編代碼應該完成最原始的硬件設備初始化,并準備好C運行環(huán)境,這樣后面的功能就可以用C語(yǔ)言來(lái)寫(xiě)了。
單片機不用啟動(dòng)代碼,為什么ARM要用啟動(dòng)代碼?

1. C language 沒(méi)有 SP(Stack Pointer register), CPSR, CP15 等控制指令, 若要初始化這些, 一定要用 Assembly code, 其它部分不是不能用 C language 實(shí)現, C language 的運行環(huán)境尚未準備好, 故 SP 必須先設好, Global Variable, standard library 都還不能使用。

2. 單片機沒(méi)有 OS 的觀(guān)念, 可以說(shuō)全部都是在啟動(dòng)代碼的模式。

其實(shí)單片機也是有“啟動(dòng)代碼”的。只不過(guò)這部分工作不需要單片機程序員自己來(lái)完成。

比如用Keil C編寫(xiě)單片機程序,針對指定型號的單片機啟動(dòng)代碼由Keil來(lái)完成了,不需要我們干涉。單片機程序只需要直接編寫(xiě)C部分的程序即可。
啟動(dòng)代碼和Bootloader的區別和關(guān)系是怎樣的?
啟動(dòng)代碼是系統上電或者復位后運行的第一段代碼,是進(jìn)入C 語(yǔ)言的main 函數之前需要執行的那段匯編代碼。它的作用是在用戶(hù)程序運行之前對系統硬件及軟件環(huán)境進(jìn)行必要的初始化并在最后使程序跳轉到用戶(hù)程序。它直接面對ARM 處理器內核及硬件控制器進(jìn)行編程,所執行的操作與具體的目標系統緊密相關(guān)。

C語(yǔ)言程序的運行需要具備一定的條件,如分配好外部數據空間,堆?臻g和中斷入口等。另外,匯編代碼可以更直接地對硬件進(jìn)行操作,效率更高,這對啟動(dòng)中斷等對時(shí)間要求更高的情況是非常必要的。

Bootloader 不是一段代碼,它是一個(gè)具有引導裝載功能的完整的程序,如可以引導裝載linux的vivi,uboot,以及通常PC機上的BOIS程序等。

Bootloader 也包含了相應的啟動(dòng)代碼,也就是說(shuō),啟動(dòng)代碼是Bootloader的一部分,是所有相應應用程序的一部分。


免費試聽(tīng)C語(yǔ)言、電子、PCB、STM32、Linux、FPGA、JAVA、安卓等。
想學(xué)習的你和我聯(lián)系預約就可以免費聽(tīng)課了。
宋工企鵝號:三五二四六五九零八八 Tel:173--1795--1908



本文地址:http://selenalain.com/thread-364109-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页