回覆列表
  • 1 # 喬觀影像

    環境配置指定eCos repository和所需編譯器的路徑(其實這個也是要編譯eCos庫檔案必須做的一個步驟)PATH="/opt/ecos/gnutools/arm-eabi/bin:${PATH}" ;PATH="/opt/ecos/ecos-tools/bin:${PATH}" ;ECOS_REPOSITORY="/opt/ecos/ecos-hg/packages" ;選擇應用程式模板在eCos的軟體包中有一個examples目錄opt/ecos/ecos-hg/examples裡面有hello serial simple-alarm twothreads等幾個參考應用程式,我們可以把這個目錄copy到一個你想要開始eCos的一個地方。我們現在看一下這個目錄中的Makefile檔案# Mostly written by Jonathan Larmour, Red Hat, Inc.# Reference to ecos.mak added by John Dallaway, eCosCentric Limited, 2003-01-20# This file is in the public domain and may be used for any purpose# Usage: make INSTALL_DIR=/path/to/ecos/installINSTALL_DIR=$$(INSTALL_DIR) # override on make command lineinclude $(INSTALL_DIR)/include/pkgconf/ecos.makXCC = $(ECOS_COMMAND_PREFIX)gccXCXX = $(XCC)XLD = $(XCC)CFLAGS = -I$(INSTALL_DIR)/includeCXXFLAGS = $(CFLAGS)LDFLAGS = -nostartfiles -L$(INSTALL_DIR)/lib -Ttarget.ld# RULES.PHONY: all cleanall: hello twothreads simple-alarm serialclean:-rm -f hello hello.o twothreads twothreads.o-rm -f simple-alarm simple-alarm.o serial serial.o-rm -f instrument-test instrument-test.o%.o: %.c$(XCC) -c -o $*.o $(CFLAGS) $(ECOS_GLOBAL_CFLAGS) $<%.o: %.cxx$(XCXX) -c -o $*.o $(CXXFLAGS) $(ECOS_GLOBAL_CFLAGS) $<%.o: %.C$(XCXX) -c -o $*.o $(CXXFLAGS) $(ECOS_GLOBAL_CFLAGS) $<%.o: %.cc$(XCXX) -c -o $*.o $(CXXFLAGS) $(ECOS_GLOBAL_CFLAGS) $<hello: hello.o$(XLD) $(LDFLAGS) $(ECOS_GLOBAL_LDFLAGS) -o $@ [email protected]: twothreads.o$(XLD) $(LDFLAGS) $(ECOS_GLOBAL_LDFLAGS) -o $@ [email protected]: simple-alarm.o$(XLD) $(LDFLAGS) $(ECOS_GLOBAL_LDFLAGS) -o $@ [email protected]: serial.o$(XLD) $(LDFLAGS) $(ECOS_GLOBAL_LDFLAGS) -o $@ [email protected]: instrument-test.o$(XLD) $(LDFLAGS) $(ECOS_GLOBAL_LDFLAGS) -o $@ [email protected]只要在編譯的時候 make INSTALL_DIR=your_ecos_install_folder(指你編譯好的ecos install的目錄)就可以編譯以上幾個應用程式了。其中 instrument-test是對eCos的kernel的一個測試,如果要編譯這個應用程式需要你在eCos的配置中開打kernel測試選項。如果你的ecos的install目錄指定正確就可以生成hello twothreads simple-alarm serial幾個可執行性檔案了。簡單分析下面幾句話表示會把Makefile所在目錄的.c,.cxx,.C,.cc檔案編譯成名字和原名相同副檔名為.o的目標檔案(object file)%.o: %.c$(XCC) -c -o $*.o $(CFLAGS) $(ECOS_GLOBAL_CFLAGS) $<%.o: %.cxx$(XCXX) -c -o $*.o $(CXXFLAGS) $(ECOS_GLOBAL_CFLAGS) $<%.o: %.C$(XCXX) -c -o $*.o $(CXXFLAGS) $(ECOS_GLOBAL_CFLAGS) $<%.o: %.cc$(XCXX) -c -o $*.o $(CXXFLAGS) $(ECOS_GLOBAL_CFLAGS) $<分析一下hello這個target,需要稍微的學下Makefile的規則,Makefile中以target為執行單元並且是頂行寫的。那麼hello就是一個target,當Makefile順序的執行到hello這裡的時候會透過hello下面的這個以tab開始的命令串連線hello後面指定的.o檔案。如果你的專案中有多個檔案,那麼就應該寫hello1.o hello2.o$@ 表示最後生成的可執行檔案的名字就是hellohello: hello.o$(XLD) $(LDFLAGS) $(ECOS_GLOBAL_LDFLAGS) -o $@ [email protected]在QEMU中測試首先參考emboslab中的qemu編譯方法編譯出 qemu-system-arm.exe然後可以寫一個簡單的bat指令碼(這是一個cygwin在windows上qemu執行ecos的推薦方法)qemu-system-arm.exe -M mini2440 -kernel %1 -show-cursor -serial file:CON我們把它儲存成run-mini2440.bat這樣當我們要模擬某個程式的時候只要 run-mini2440.bat 後面跟上你要執行的程式就可以了,不過這裡有點需要注意。因為在windows上我們要想從終端中看到程式的執行結果,必須在cmd終端上,意思就是說不能用xterm和mintty。

  • 中秋節和大豐收的關聯?
  • 戴助聽器的效果取決於助聽器價格嗎?