1. 程式人生 > >IAR IDE學習之---啟動檔案(cstartup)與輸入\輸出重定向方法

IAR IDE學習之---啟動檔案(cstartup)與輸入\輸出重定向方法

1、DLIB,我猜應該是Dynamic Library。DLIB runtime environment就是執行時環境。

2、什麼是執行時環境。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.

簡單說,執行時環境為使用者的應用程式(main函式)提供以下基礎功能:

1)首先是實現C/C++標準庫,比如常見的格式化輸入/輸出;

2)應用程式執行前的初始化,應用程式退出後的退出處理,比如全域性靜態變數的初始化、C++全域性物件的建立、銷燬等。

3、IAR同時提供庫形式和原始碼形式的C/C++標準庫函式的實現,分別位於安裝目錄arm\lib以及arm\src\lib下。

4、C/C++標準庫函式的實現依賴於具體的目標系統,比如標準輸入/輸出需要具體硬體的輸入裝置操作函式和輸出裝置操作函式。C/C++標準庫函式使用基礎(低階)函式集來和目標系統交換,將這些基礎(低階)函式集合成為“庫基礎介面”。為實現真正的C/C++標準庫,應用程式的開發者必須重新實現(定義)這些基礎(低階)函式。可重寫的基礎(低階)函式位於IAR安裝目錄arm\src\lib下。

5、應用程式開發者重新實現基礎(低階)函式的方法步驟:

1)將需要修改的、IAR提供的基礎函式模板複製到一個新建的原始檔;

2)按實際要求修改相應函式,一般不需要改動介面定義;

3)將新建的原始檔加入工程中。

按照以上方法步驟及可實現基礎(低階)函式的重新實現。因為使用者重寫了部分基礎(低階函式),在工程編譯連結時優先連結到使用者定義實現的基礎(低階)函式。

6、對於系統程式開發者而言,常常需要按照實際要求改變啟動引導檔案,如cstartup。在IAR中,可以將arm\src\lib目錄下的cstartup.s檔案複製到使用者工程中,並加入工程,系統開發者可以根據需要修改此檔案實現啟動載入程式重寫。

總結:作為系統開發者,最關心的是啟動程式碼在哪裡?如何修改並連結到實際的執行映象中。在IAR IDE中,啟動程式碼以DLIB庫函式形式提供,系統開發者可以通過在工程中加入cstartup.s 檔案並重新改寫啟動程式碼即可定製自己需要的啟動方式。此外,系統開發者還可以重新定義格式化輸入\輸出的基礎(低階)函式,來實現輸入\輸出重定向到LCD或者UART中。