Skyeye使用經驗及分析一例.

Skyeye交叉編譯環境的下載及安裝這裏有比較詳細的介紹:www.skyeye.org。下面以一個例子來分析這個open source的交叉編譯工具。下載ucosii for AT91,在Skyeye這個編譯環境下編譯以ucosii內核及基於ucosiiapplication .我們來看看ucosii_test工程目錄下的makefile文件.從makefile文件裏關鍵的字樣有:$(SAMPLE_DIR)$(KERNEL_DIR)$(ARCH_DIR)$(LIB_DIR)$(OS_DIR) 這些直接和編譯環境有關,可以在當前makefile裏找不到啊?別急,看看開始:include ../dir.make ,看到這個就明白了吧。好,看看上父目錄下的dir.make文件吧。

# define some directory information of whole project

ROOT_DIR   = ../..

ARCH_DIR    = $(ROOT_DIR)/arch/atmel-arch

LIB_DIR       = $(ROOT_DIR)/lib

KERNEL_DIR       = $(ROOT_DIR)/kernel

SAMPLE_DIR       = $(ROOT_DIR)/samples

 

 

 

# these three files are needed when test all samples

CFG_FILE = $(SAMPLE_DIR)/compiler.conf

LDS_FILE = $(SAMPLE_DIR)/samples.lds

MAP_FILE = $(PRJ_DIR)/memmap.conf

DEP_FILES = $(CFG_FILE) $(MAP_FILE) $(LDS_FILE)

這裏就是ucosii目錄裏所有基於skyeye交叉編譯環境的全部和基本配置了。

恩,到在這裏,我們可以明確很多東西,這些又利於加深我們對概念的理解,總結一下:1.skyeye是一個模擬硬件平臺,爲ARM內核提供硬件支持。2. 你一定記得下載的工具中有arm-elf-tools,這個東西就是交叉編譯工具,它產生我們需要的.elf文件,這個文件在skyeye上仿真,讓我們能夠模擬軟件在ARM內核上跑起來的感覺(爽!)。所謂交叉編譯,就是這個意思。

好,我們在進一步。硬件平臺是skyeye,我們在使用它的默認配置時,(你當然可以修改它的配置,請看相關資料)不妨認爲它對我們是透明的,這無論在硬件設計還是在軟件設計上都是一個基本原則。想想,ucosii_test要跑起來,我們硬件環境有了,還需要什麼?當然是ucosii內核,和我們自己的application!( 不是廢話哦:))。打開ucosii工程的頭文件,你一定奇怪,怎麼看不到內核相關文件哪?這些個信息都包含在makefile裏了。你可以回去看看makefile。(那個kernel字樣很顯眼的)。好,必須的“系統環境“我們已經有了。下面我們該看看main_entry.c的代碼了,看看它是如何模擬的。代碼很簡單吧。我們這裏關心的是它是why ,而不是howskyeye_printf()這裏函數看到了吧。看到skyeye字眼就又意思了。這裏調用了和依賴的模擬平臺有關的東東。恩,打開skysys_stdio.c看到skysys_printf()的實現,繼續往下看,不難發現skyeye_printf()真正調用的是AT91(這是我們現在的硬件環境)的異步串口通訊來實現字符的輸入、輸出。我們當然會繼續問:這些輸入、輸出又是由誰來實現的呢?其實我們如果是寫基於硬件平臺的軟件,那麼到這裏也就ok了。如果非要繼續往下看,那麼去看看skyeyeinclude/lib文件吧(我也沒再仔細往下研究了,至少現在:) )。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章