IAR IDE學(xué)習(xí)之---啟動(dòng)文件(cstartup)與輸入\輸出重定向方法
1、DLIB,我猜應(yīng)該是Dynamic Library。DLIB runtime environment就是運(yùn)行時(shí)環(huán)境。
2、什么是運(yùn)行時(shí)環(huán)境。IAR給出的官方回答是:
The runtime environment is the environment in which your applic ation executes. The?
runtime environment depends on the target ha rdware, the software environment, and the?
application code.
?
簡單說,運(yùn)行時(shí)環(huán)境為用戶的應(yīng)用程序(main函數(shù))提供以下基礎(chǔ)功能:
1)首先是實(shí)現(xiàn)C/C++標(biāo)準(zhǔn)庫,比如常見的格式化輸入/輸出;
2)應(yīng)用程序運(yùn)行前的初始化,應(yīng)用程序退出后的退出處理,比如全局靜態(tài)變量的初始化、C++全局對象的創(chuàng)建、銷毀等。
3、IAR同時(shí)提供庫形式和源代碼形式的C/C++標(biāo)準(zhǔn)庫函數(shù)的實(shí)現(xiàn),分別位于安裝目錄armlib以及armsrclib下。
4、C/C++標(biāo)準(zhǔn)庫函數(shù)的實(shí)現(xiàn)依賴于具體的目標(biāo)系統(tǒng),比如標(biāo)準(zhǔn)輸入/輸出需要具體硬件的輸入設(shè)備操作函數(shù)和輸出設(shè)備操作函數(shù)。C/C++標(biāo)準(zhǔn)庫函數(shù)使用基礎(chǔ)(低級)函數(shù)集來和目標(biāo)系統(tǒng)交換,將這些基礎(chǔ)(低級)函數(shù)集合成為“庫基礎(chǔ)接口”。為實(shí)現(xiàn)真正的C/C++標(biāo)準(zhǔn)庫,應(yīng)用程序的開發(fā)者必須重新實(shí)現(xiàn)(定義)這些基礎(chǔ)(低級)函數(shù)??芍貙懙幕A(chǔ)(低級)函數(shù)位于IAR安裝目錄armsrclib下。
5、應(yīng)用程序開發(fā)者重新實(shí)現(xiàn)基礎(chǔ)(低級)函數(shù)的方法步驟:
1)將需要修改的、IAR提供的基礎(chǔ)函數(shù)模板復(fù)制到一個(gè)新建的源文件;
2)按實(shí)際要求修改相應(yīng)函數(shù),一般不需要改動(dòng)接口定義;
3)將新建的源文件加入工程中。
按照以上方法步驟及可實(shí)現(xiàn)基礎(chǔ)(低級)函數(shù)的重新實(shí)現(xiàn)。因?yàn)橛脩糁貙懥瞬糠只A(chǔ)(低級函數(shù)),在工程編譯鏈接時(shí)優(yōu)先鏈接到用戶定義實(shí)現(xiàn)的基礎(chǔ)(低級)函數(shù)。
6、對于系統(tǒng)程序開發(fā)者而言,常常需要按照實(shí)際要求改變啟動(dòng)引導(dǎo)文件,如cstartup。在IAR中,可以將armsrclib目錄下的cstartup.s文件復(fù)制到用戶工程中,并加入工程,系統(tǒng)開發(fā)者可以根據(jù)需要修改此文件實(shí)現(xiàn)啟動(dòng)引導(dǎo)程序重寫。
總結(jié):作為系統(tǒng)開發(fā)者,最關(guān)心的是啟動(dòng)代碼在哪里?如何修改并鏈接到實(shí)際的執(zhí)行鏡像中。在IAR IDE中,啟動(dòng)代碼以DLIB庫函數(shù)形式提供,系統(tǒng)開發(fā)者可以通過在工程中加入cstartup.s 文件并重新改寫啟動(dòng)代碼即可定制自己需要的啟動(dòng)方式。此外,系統(tǒng)開發(fā)者還可以重新定義格式化輸入輸出的基礎(chǔ)(低級)函數(shù),來實(shí)現(xiàn)輸入輸出重定向到LCD或者UART中。