ecos第一個程序怎麼編譯
『壹』 嵌入式c語言重點知識點
嵌入式C語言重點知識點
嵌入式linux
嵌入式Linux 是將日益流行的Linux操作系統進行裁剪修改,使之能在嵌入式計算機系統上運行的一種操作系統。Linux做嵌入式的優勢,首先,Linux是開放源代碼;其次,Linux的內核小、效率高,可以定製,其系統內核最小隻有約134KB;第三,Linux是免費的OS,Linux還有著嵌入式操作系統所需要的很多特色,突出的就是Linux適應於多種CPU和多種硬體平台而且性能穩定,裁剪性很好,開發和使用都很容易。同時,Linux內核的結構在網路方面是非常完整的,Linux對網路中最常用的TCP/IP協議有最完備的支持。提供了包括十兆、百兆、千兆的乙太網絡,以及無線網路,Token Ring(令牌環網)、光纖甚至衛星的支持。
移植步驟:
1.Bootloader的移植;
2.嵌入式Linux操作系統內核的移植;
3.嵌入式Linux操作系統根文件系統的創建;
4.電路板上外設Linux驅動程序的編寫。
WinCE
WinCE是微軟公司嵌入式、移動計算平台的基礎,它是一個開放的、可升級的32位嵌入式操作系統,是基於掌上型電腦類的電子設備操作系統,它是精簡的Windows 95,Win CE的圖形用戶界面相當出色。WinCE是從整體上為有限資源的平台設計的多線程、完整優先權、多任務的操作系統。它的模塊化設計允許它對於從掌上電腦到專用的工業控制器的用戶電子設備進行定製。操作系統的基本內核需要至少200K的ROM。
一般來說,一個WinCE系統包括四層結構:應用程序、WinCE內核映像、板級支持包(BSP)、硬體平台。而基本軟體平台則主要由WinCE系統內核映像(OS Image)和板卡支持包(BSP)兩部分組成。因為WinCE系統是一個軟硬體緊密結合的系統,因此即使CPU處理器相同,但是如果開發板上的外圍硬體不相同,這個時候還是需要修改BSP來完成一個新的BSP。因此換句話說,就是WinCE的移植過程主要是改寫BSP的過程。
Android
Android 是一個包括操作系統,中間件以及一些重要應用程序的專門針對移動設備的層次結構的軟體集。Android 作為一個完全開源的.操作系統,是由操作系統Linux、中間件以及核心應用程序組成的軟體棧。通過 android SDK 提供的 API 以及相應的開發工具, 程序員可以很方便的開發android平台上的應用程序。其整個系統由應用程序,應用程序框架,應用程序庫,Android運行庫,Linux內核(Linux Kernel)五個部分組成。Android操作系統內置了一部分應用程序, 包括電子郵件客戶端、SMS程序、日歷、地圖、瀏覽器、通訊錄以及其他的程序,值得一提的是這些所有的程序都是用java編寫的。
移植的主要的工作是驅動,硬體抽象層的移植。為了更好地理解和調試系統,也應該適當地了解上層對硬體抽象層的調用情況。
TinyOS
TinyOS是一個開源的嵌入式操作系統,它是由加州大學的伯利克分校開發出來的,主要應用於無線感測器網路方面。程序採用的是模塊化設計,所以它的程序核心往往都很小,一般來說核心代碼和數據大概在400 Bytes左右,能夠突破感測器存儲資源少的限制。TinyOS提供一系列可重用的組件,一個應用程序可以通過連接配置文件(A Wiring Specification)將各種組件連接起來,以完成它所需要的功能。
嵌入式實時操作系統(RTOS)
在工業控制、 軍事設備、航空航天等領域對系統的響應時間有苛刻的要求,這就需要使用實時系統。當外界事件或數據產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統作出快速響應,並控制所有實時任務協調一致運行的嵌入式操作系統。故對嵌入式實時操作系統的理解應該建立在對嵌入式系統的理解之上加入對響應時間的要求。
FreeRTOS
FreeRTOS是一個迷你操作系統內核的小型嵌入式系統。作為一個輕量級的操作系統,功能包括:任務管理、時間管理、信號量、消息隊列、內存管理、記錄功能等,可基本滿足較小系統的需要。FreeRTOS任務可選擇是否共享堆棧,並且沒有任務數限制,多個任務可以分配相同的優先權。相同優先順序任務的輪轉調度,同時可設成可剝奪內核或不可剝奪內核。
FreeRTOS 的移植主要需要改寫如下三個文件。
1.portmacro.h
2.port.c
3. port.asm
μTenux
μTenux基於ARM微控制器平台,對uT最適用於ARM Cortex M0-M4系列的微控制器,代碼開源、免費,是一個功能強大的搶占式實時多任務操作系統。μTenux除具有實時嵌入式操作系統的一般特性:可移植性,可固化,可裁剪等特性以外,它還具有如下優點:
(1)微內核。無MMU, ROM/RAM佔用量小,所佔ROM最大60KB,最小10KB;RAM最大12KB,最小2KB;
(2)開源免費;
(3)支持所有32位ARM7/9和Cortex M系列的微控制器;
(4)可配置多達到256個任務以及140個任務優先順序;
(5)有良好的商業支持, T-Engine論壇進行總的維護。
移植主要包括:晶元系統時鍾移植,外設移植和通用輸出/輸入埠的移植以及看門狗模塊移植。由於考慮到內核代碼的重要性以及其在整個移植中的重要意義,且為了整個系統有更好的實時性,可選用匯編語言編寫操作系統的啟動代碼。
VxWorks
VxWorks系統提供多處理器間和任務間高效的信號燈、消息隊列、管道、網路透明的套接字。實時系統的另一關鍵特性是硬體中斷處理。為了獲得最快速可靠的中斷響應,VxWorks系統的中斷服務程序ISR有自己的上下文。VxWorks實時操作系統由400多個相對獨立的、短小精煉的目標模塊組成,用戶可根據需要選擇適當模塊來裁剪和配置系統,這有效地保證了系統的安全性和可靠性。系統的鏈接器可按應用的需要自動鏈接一些目標模塊。這樣,通過目標模塊之間的按需組合,可得到許多滿足功能需求的應用。
移植過程可以參考網路上一些BSP代碼,BSP的英文全稱為board support package,即板級支持包,它的作用是針對特殊的硬體平台,為VxWorks內核提供操作的介面。
μClinux
嵌入式Linux作為一個開放源代碼的操作系統,以價格低廉、功能強大又易移植的特性正在被廣泛應用,μClinux是專門針對沒有MMU的處理器而設計的嵌入式Linux,非常適合中低端嵌入式系統的需求。 在GNU通用公共許可證的授權下,μClinux操作系統的用戶可以使用幾乎所有Linux的API函數,不會因為沒有內存管理單元MMU而受到影響;而且,μClinux在標準的Linux基礎上進行了適當的裁剪和優化,形成了一個高度優化的、代碼緊湊的嵌入式Linux,體積小了,但是仍然保留了Linux的大多數的優點,比如穩定性好、強大的網路功能、良好的可移植性、完備的文件系統支持功能、以及標准豐富的應用程序介面API等,可以支持類似ARM7TDMI等類型多的小巧玲瓏的中央處理器。
eCos
eCos中文翻譯為嵌入式可配置操作系統或嵌入式可配置實時操作系統。適合於深度嵌入式應用,主要應用對象包括消費電子、電信、車載設備、手持設備以及其他一些低成本和攜帶型應用。eCos是一種開發源代碼軟體,無任何版權費用。 eCos最大的特點是模塊化,內核可配置。如果說嵌入式Linux太龐大了,那麼eCos可能就能夠滿足要求。它是一個針對16位、32位和64位處理器的可移植開放源代碼的嵌入式RTOS。和嵌入式Linux不同,它是由專門設計嵌入式系統的工作組設計的。eCos具有相當豐富的特性和一個配置工具,後者能夠讓你選取你所需要的特性。
eCos的軟體分了若乾的模塊,移植工作主要在他的hal層進行,所謂hal(硬體抽象層)就是把和硬體相關的軟體湊到一起。
μC/OS-II
μC/OS-II是一個完整的、可移植、可固化、可裁剪的佔先式實時多任務內核。μC/OS-II絕大部分的代碼是用ANSI的C語言編寫的,包含一小部分匯編代碼,使之可供不同架構的微處理器使用。其結構小巧簡潔且支持搶占式的多任務調度與管理。此實時操作系統管理任務數多達64個,且提供內部程序存儲器管理、系統運行時間管理、多任務實時調度與管理等功能。由於它的作者佔用和保留了8個任務,所以留給用戶應用程序最多可有56個任務。賦予各個任務的優先順序必須是不相同的。這意味著μC/OS-II不支持時間片輪轉調度法。μC/OS-II為每個任務設置獨立的堆棧空間,可以快速實現任務切換。
將μC/OS-II操作系統移植到目標處理器上,需要從硬體和軟體兩方面來考慮。硬體方面,目標處理器需滿足以下條件:
①處理器的C編譯器能產生可重入代碼;
②用C語言可以開/關中斷;
③處理器支持中斷,並且能夠產生定時中斷(通常在10~1000 Hz之間);
④處理器能夠支持容納一定量數據的硬體堆棧;
⑤處理器有將堆棧指針和其他寄存器讀出和存儲到堆棧或內存中的指令。
軟體方面,主要是一些與處理器相關的代碼移植,其分布在OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM這3個不同的文件中。
『貳』 cygin不會用啊!幫忙!
它是在Windows下的編譯環境,在LINUX下沒用過。
ARM編譯環境建立說明
安裝需要的文件
Ecos目錄和ecos_tools目桐啟錄.
其中ecos_tools目錄中包括cygwin安裝目錄,ecosV1.3.1目錄,arm-elf編譯環境.
安裝建議
1. 建議cygwin和ecos安裝路徑都單獨安裝在硬碟的盤符的根目錄下,例如:d:\cygwin,d:\ecos
2. 安裝cygwin和ecos需要大概800M左右空間.
安裝cygwin
1. 進入ecos_tools目錄下面的cygwin目錄,運行setup.exe.
2. 點擊下一步,在(圖一)所示的選項中選擇第三項(install from local directory)
(圖一)
3. 點擊下一步,在(圖二)所示的窗口中填入安裝路徑,Default Text File Type選擇局族如DOS即可,然後點擊下一步,安裝的源路徑默認即可.
4. 點擊下一步,出現的窗口讓用戶選擇安裝哪些包,這些包主要是確定開發環境,編譯工具等,如果不能確定具體需要哪些包的話,而硬碟空間足夠的情況下,就選擇全部安裝。在出現的對話框的''All''的右邊點擊''Default'',直到變成''Install'',如(圖三)所示,然後進行安裝即可.
(圖三)
安裝cygwin下的ARM-elf編譯環境
1. 在安裝好的cygwin目錄里建立tools目錄,例如安裝的路徑穗搜為d:\cygwin,那麼建立tools目錄即為d:\cygwin\tools.
2. 進入ecos_tools目錄下的toolchain目錄,解壓縮arm-elf-big-endian.zip文件壓縮包,然後把解壓縮的arm-elf整個目錄拷貝到安裝的cygwin目錄下的tools目錄中,形成比如d:\cygwin\tools\arm-elf.
3. 打開安裝的cygwin目錄ect目錄下面的profile文件,找到export PATH="/usr/local/bin:/usr/bin:/bin:$PATH",然後修改為export PATH="/usr/local/bin:/usr/bin:/bin:/tools/arm-elf/bin:$PATH"即可.
安裝ECOS環境
1. 運行ecos_tools目錄下1.3.1目錄中的eCos131.exe.根據安裝提示安裝ECOSV1.3.1
2. 安裝完畢後,把ecos目錄中所有內容拷貝到安裝後的ecos目錄中進行覆蓋.
3. 拷貝ecos_tools目錄中的tcl82.dll文件到安裝的cygwin目錄的bin目錄中.
4. 拷貝ecos_tools目錄中x文件和rpx文件到安裝後的ecos目錄中.
5. 運行windows程序菜單中的Red Hat eCos裡面的Configuration Tool,出現如(圖四)所示的配置窗口.
(圖四)
6. 選擇build菜單中的Repository,在如(圖五)所示的彈出的窗口中配置目錄,點擊browse按鈕,選擇安裝的ecos目錄,然後點擊ok按鈕.
(圖五)
7. 選擇tools菜單中的paths菜單,選擇paths菜單中的build tools子菜單,在如(圖六)所示的彈出窗口中配置目錄,點擊browse按鈕,選擇安裝的cygwin目錄中的tools目錄下面的arm-elf目錄下的bin目錄,然後點擊Ok按鈕.
(圖六)
8. 選擇tools菜單中的paths菜單,選擇paths菜單中的user tools子菜單,在如(圖七)所示的彈出窗口中配置目錄,點擊browse按鈕,選擇安裝的cygwin目錄中bin目錄,然後點擊Ok按鈕.
(圖七)
9. 選擇tools菜單中的shell子菜單,如果能彈出類似dos窗口的窗口,那麼說明第6,7,8步配置正確,否則請重新設置路徑.
10. eCos使用「/c」、「/d」等表示硬碟「c:」和「d:」,因此必須在選擇shell菜單彈出窗口中執行下述命令:$ mount –f c:/ /c
$ mount –f d:/ /d
可以使用下述命令進入相應得硬碟:
$ cd /c
$ cd /d
11. 另外1.3.1版本的ecos配置工具產生的Makefile中的目錄路徑總是帶雙斜杠,如//D/eCos之類,可以用rpx這個script來校正;重新編輯rpx文件,修改安裝eCos的目錄,save退出。
12. 在shell中進入eCos目錄./x,然後回車; ./rpx回車。注意:每次修改eCos程序進行編譯之前,都要運行./rpx,否則出現//D/eCos目錄帶雙斜杠的錯誤。
13. 在eCos目錄下,新建一個文件夾,把boot.ecc和download.ecc文件拷到此文件夾目錄下。
14. 運行Red Hat eCos,調用boot.ecc,如果此時./rpx,然後編譯boot.ecc,就會出現錯誤,如找不到hal.h等文件,因此要先改動boot.ecc的一個選項,然後再改回,就是說讓它有一個存檔的操作,eCos配置工具就會自動在boot.ecc的同一個目錄下生成boot_build、boot_install、boot_mlt文件夾。然後編譯就不會出錯誤了。
15. boot_build文件夾里存放著用於對eCos進行編譯時所生成的文件,包括makefile文件、目標文件和其他一些文件;boot_install存放用於編譯eCos應用程序的所有文件,包括庫文件libtrget.a和頭文件;boot_mlt存放內存布局文件。
16. 更改應用程序的makefile文件,把PKG_INSTALL_DIR指到boot_install目錄,然後在shell中make,把生成的bin文件燒到片子里就可以了。到此ok。
注意:1、應用程序有兩種運行方式,寫片子方式和下載方式。(1)應用程序和操作系統捆綁運行,也就是把應用程序文件夾中的makefile文件修改,makefile文件中的PKG_INSTALL_DIR指到boot.ecc生成的boot_install文件夾,存檔;在shell中,進入應用程序目錄,make後回車,編譯生成的bin文件燒到片子里運行即可。(2)用/ecos/boot目錄下的makefile文件,更改此文件中的PKG_INSTALL_DIR指到boot.ecc生成的boot_install文件夾;用make編譯生成的bin文件燒到片子里運行,此時片子里沒有應用程序;然後更改應用程序所在目錄的makefile文件,修改此文件使PKG_INSTALL_DIR指到download_install文件夾,存檔,在shell下進入應用程序文件夾,make後回車,把生成的bin文件拷到ecos目錄下,通過fftp.exe工具下載應用程序到板子上。
2、用make成功編譯一次後,就會生成.o等過程文件,當下次再make時,就會出錯,因此需要make clean,清除編譯過程文件。
3、用fftp.exe工具下載時,一定去掉防火牆。
『叄』 嵌入式實時操作系統的特點
嵌入式實時操作系統應用十分廣泛,包括數據通信、信息家電、航空航天、工業控制、生物醫學電子、船舶工程、計算機外設、電信設備、交通運輸、國防武器控制等領域,已經形成IT產業爭奪的重點領域,它所帶來的工業年產值已超過1萬億美元。在嵌入式系統開發中使用嵌入式實時操作系統已成為一種不可逆轉的潮流與時尚。
1 背景
隨著計算機技術的迅速發展和晶元製造工藝的不斷進步,嵌入式系統的應用日益廣泛:從民用的電視、手機等電路設備到軍用的飛機、坦克等武器系統,到處都有嵌入式系統的身影。在嵌入式系統的應用開發中,采和嵌入式實時操作系統(簡稱RTOS)能夠支持多任務,使得程序開發更加容易,便於維護,同時能夠提高系統的穩定性和可靠性。這已逐漸成為嵌入式系統開發的一個發展方向。
2 嵌入式操作系統概述
嵌入式操作系統是一種支持嵌入式系統應用的操作系統軟體。它是嵌入式系統(包括硬、軟體系統)極為重要的組成部分,通常包括與硬體相關的底層驅動軟體、系統內核、設備驅動介面、通信協議、圖形界面、標准化瀏覽器Browser等。嵌入式操作系統具有通用操作系統的基本特點,如能夠有效管理越來越復雜的系統資源;能夠把硬體虛擬化,使得開發人員從繁忙的驅動程序移植和維護中解脫出來;能夠提供庫函數、標准設備驅動程序以及工具集等。與通用操作系統相比較,嵌入式操作系統在系統實時高效性、硬體的相關依賴性、軟體固態化以及應用的專用性等方面具有較為突出的特點。
嵌入式系統的出現至今已經有30多年的歷史。縱觀嵌入式技術的發展過程,大致經歷了四個階段。
(1)無操作系統的嵌入式演算法階段
這一階段的嵌入式系統是以單晶元為核心的系統,具有與一些監測、伺服、指示設備相配合的功能。一般沒有明顯的操作系統支持,而是通過匯編語言編程對系統進行直接控制。主要特點是系統結構和功能都相對單一,針對性強,無操作系統支持,幾乎沒有用戶介面。
(2)簡單監控式的實時操作系統階段
這一階段的嵌入式系統主要以嵌入式式器為基礎、以簡單監控式操作系統為核心。系統的特點是:處理器種類繁多,通用性比較弱;開銷小,效率高;一般配備系統模擬器,具有一定的兼容性和擴展性;用戶界面不夠友好,主要用來控制系統負載以及監控應用程序運行。
(3)通用的嵌入式實時操作系統階段
以通用型嵌入式實時操作系統為標志的嵌入式系統,如VxWorks、pSos、Windows CE就是這一階段的典型代表。這一階段嵌入式系統的特點是:能運行在各種不同的微處理器上;具有強大的能用型操作系統的功能,如具備了文件和目錄管理、多任務、設備驅動支持、網路支持、圖形窗口以及用戶界面等功能;具有豐富的API和嵌入式應用軟體。
(4)以Internet為標志的嵌入式系統
伴隨著通用型嵌入式實時操作系統的發展,面向Internet網路和特定應用的嵌入式操作系統正日益引起人們的重視,成為重要的發展方向。嵌入式系統與Internet的真正結合、嵌入式操作系統與應用設備的無縫結合代表著嵌入式操作系統發展的未來。
3 兩種源碼開放的RTOS
嵌入式實時操作系統有很多,如VxWorks、PalmOS、WindowsCE等。這些操作系統均屬於商品化產品,價格昂貴且由於源泉代碼不公開導致了諸如對設備的支持、應用軟體的移植等一系列的問題;而開放源碼的RTOS在成本和技術上有其特有的優勢,在RTOS領域佔有越來越重要的地位,本文將介紹μC/OS-II和eCos兩種優秀的源碼公開的實時操作系統,通過對它們各自的特點和性能進行分析和比較,給出相關的數據,為選擇一種合適的RTOS提供參考。
3.1 μC/OS-II
μC/OS-II的前射是μC/OS,最早出自於1992年美國嵌入式系統專家Jean J.Labrosse在《嵌入式系統編程》雜志的5月和6月刊上刊登的文章連載,並把μC/OS的源碼發布在該雜志的BBS上。當時就有500多人下載了這份源碼。世界上數以千計的工程技術人員將μC/OS應用到了各個領域,如照相機業、發動機控制、網路接入設備、高速公路電話系統、ATM機和工業機器人等。許多大學用μC/OS作教材,用於實時系統教學。1998年,作者決定出版μC/OS的第二本書《μC/OS-II The Real Time Kernel》,並設立了正式的網站:www. ΜC/OS-II.com,給μC/OS-II增加了一些新的功能,並且增加了約200頁的解釋。
μC/OS和μC/OS-II是專門為計算機的嵌入式應用設計的,絕大部分代碼是用C語言編寫的。CPU硬體相關部分是用匯編語言編寫的、總量約200行的匯編語言部分被壓縮到最低限度,為的是便於移植到任何一種其它的CPU上。許多移植的範例可以從網站上得到。用戶只要有標準的ANSI的C交叉編譯器,有匯編器、連接器等軟體工具,就可以將μC/OS嵌入到開發的產品中。
μC/OS具有執行效率高、佔用空間小、實時性能優良和可擴展性能等特點,最小內核可編譯至2KB。μC/OS-II已經移植到了幾乎所有知名的CPU上。
3.2 eCos
eCos(embedded Configurable operating system),即嵌入式可配置操作系統,最初起源於美國的Cygnus Solutions公司。Cygnus公司於1998年11月發布了第一個eCos版本eCos1.1,當時只支持有限的幾種處理器結構。1999年11月,RedHat公司以6.74億美元收購了Cygnus公司。在此後的幾年裡,eCos成為其嵌入式領域的關鍵產品,得到了迅速的發展。2002年,RedHat公司由於財務方面的原因,裁剪了eCos開發隊伍,但並沒有停止eCos的發展。RedHat公司隨後宣稱將繼續支持eCos的發展,而由原eCos主要開發人員組建了eCos Centric公司,並於2003年5月正式發布了eCos2.0。
雖然eCos是RedHat的產品,但是eCos並不是Linux或Linux的派生,eCos彌補了Linux在嵌入式應用領域的不足。目前,一個最小配置的Linux內核大概有500KB,需要佔用1.5MB的內存空間,這還不包括應用程序和其它所需的服務;eCos可以提供實時嵌入式應用所需的基本運行基件,而只佔用幾十KB或幾百KB的內存空間。eCOS是一個源碼開放的可配置、可移植、無版稅、面向深嵌入式應用的實時操作系統。從eCOS的名稱可以看出,它最大的特點在於它是一個配置靈活的系統。ECOS的核心部分是由不同的組件組成的,包括內核、C語言庫和底層運行包等。每個組件以能提供大量的可配置選項,利用eCOS提供的配置工具可以很方便地進行配置。通過不同的配置使得eCOS能夠滿足不同的嵌入式應用。
4 μC/OS-II與eCOS的比較
對於以上兩種源泉碼公開的實時操作系統,我們主要從以下幾個方面進行比較。通過比較,能夠為大家選擇適合自己系統的RTOS提供參考。
4.1 內核調度機制
RTOS內核的核心是調度器。當系統包含多個任務或多個線程時,必須使用調度器來決定當前執行哪一個任務或線程。調度器對線程的運行進行控制,並為線程提供一種同步機制。表1列出了這兩種RTOS調度器(調度機制)的比較。
表1 調度器比較
調度方法 同優先順序調度 優先順序數/個 任務數量/個
uC/OS-II
固定
優先順序
搶占式
無
64
(8個保留)
56
eCos: 點陣圖
優先順序
搶占式
無
32
32
eCos:多級隊列
優先順序
搶占式
有
32
無限
eCos:獎券
測試中
測試中
測試中
測試中
μC/OS只支持固定優先順序搶占式,不支持時間片輪轉調度,調度方法簡單、實時性好,用法也簡單;eCOS調度方法豐富,適應性好。當然,目前的eCOS只允許在其目標系統中使用一個單獨的調度器,未來的版本將可以允許多個調度器協同工作。
4.2 任務間同步、通信機制
RTOS的功能一般要通過若干任務和中斷服務程序共同完成,任務與任務之間、任務與中斷服務程序之間必須協調動作,互相配合,這就牽涉到任務間的同步與通信問題。表2為這兩種操作系統同步與通信機制的比較。
表2 同步與通信機制的比較
uC/OS-II
eCos
同步與通信機制
信號量、郵箱、消息隊列
互斥、條件變數、計數型信號量、郵箱和事件標志
4.3 任務切換時間和中斷延遲時間
任務切換時間和中斷延遲時間是評估RTOS性能的兩個重要指標。任務切換時間可以反映出RTOS執行任務的速度,而中斷延遲時間可以反映出RTOS對外界變化的反應速度。表3為這兩種操作系統任務切換時間和中斷延遲時間的比較。
表3 任務切換時間和中斷延遲時間的比較
任務切換時間/us
中斷延遲時間/μs
測試環境
μC/OS-II
29.7~34.2
78.8
Intel80186(33MHz)
eCos
15.84
19.2
MPC860A3(33MHz)
4.4 對硬體的支持
μC/OS-II和eCOS支持當前流行的大部分嵌入式CPU,都具有很好的可移植特性。μC/OS-II支持從8位到32位的CPU;而eCOS可以在16位、32位和64位等不同體系結構之間移植。μC/OS-II和eCOS由於本身內核就很小,經過裁剪後的代碼最小可以分別為小於2KB和10KB,所需的最小數據RAM空間可以為4KB和10KB,因此它們對硬體的要求很低,具有極高的經濟性。
結語
通過比較可以看到:μC/OS-II相對eCOS來說,源代碼最小很多,特別適合學習和研究。它最大的特點是小巧,適合應用在一些RAM和ROM有限的小型嵌入式系統中,如單片機系統。ECOS最大的特點是配置靈活,適合於用在一些商業級或工業級的嵌入式系統,如一些消費電子、汽車領域等等。總之,選用什麼樣的操作系統,要根據目標系統的硬體條件和用戶應用程序的復雜度來確定。
『肆』 ECOS環境設置問題:invalid package database
我也遇到了tcl84.dll缺失了問題,但是沒祥仔有像你鉛燃這么做。可能是你解決tcl84.dll的方法不對,所以才有後面的錯誤。
http://ecos.sourceware.org/ml/ecos-discuss/2012-04/msg00031.html
照上面說的,去ftp下載ecos-tools-bin-120425.cygwin.tar.bz2,然後利用cygwin解壓,不要在WIN7環境用RAR之類的解壓軟體,覆蓋原來的/tools/bin/下面的四個文件,再以管理員身份運行configtool就可以了。
不過我謹激汪想你最好要恢復之前的環境,也就是刪掉你網上下載的tcl84.dll和用原來的ecos.db。
『伍』 如何移植redboot支持nand flash
Redboot被設計用於嵌入式調試和啟動環境,它是一個基於eCos的應用程序,使用eCos的硬體抽象層(HAL)作為它的基礎。它一個基本的功能是作為bootloader,但可用於任何嵌入式系統或任何嵌入式實時操作系統中。也可用於產品開發周期中的調試支持或在發布的產品中提供flash或網路啟動。特性有:
啟動腳本支持;
管理和控制的命令行支持;
通過串口或乙太網口的訪問;
GDB支持;
flash映像系統支持;
X/Y數據機的支持;
支持使用BOOTP或靜態IP地址配置的網路啟動;
移植redboot到仔困培stm32開發板
1.,搭建好ecos開發環境
2,打開ecos圖形配置工具configtool,如下圖所示。
下圖中,左邊窗口為ecos的配置項窗口,右邊窗口從上到下分別為:沖突提示窗口、配置項屬性窗口、配置項說明窗口。
『陸』 stm32移植ecos #1,為什麼要把ecos移植到stm32平台上 reille ...
作為eCos推廣計劃一部分,會將eCos移植到當前非常流行的stm32處理器上,在此基礎上,展開一些應用開發設計,並提供工程模板。選擇stm32作為eCos推廣突破口,有以下幾個因素:在對eCos有一點了解或有所耳聞的大多數工程師眼中,eCos可能被定位於像ucosII一樣級別的嵌入式OS,換句話說,eCos的應用場合應該是類似ARM7、Cortex-M處理器之類的CPU中; 當前,STM32相比其它家的Cortex-M處理器更加流行,被廣泛應用到許多低端嵌入式產品中,而且最重要的是,學者眾多,開發板資源非常豐富; 目前市場上,stm32開喚宴清發板一大堆,很容易利用當前資源展開eCos的學習; 像ARM7和Cortex-M處理器之類的CPU中,使用的OS大多數是ucosII,而這個OS是收費的,不能商用,相反,eCos是開源免費使用的,如果在這眾多嵌入式應用中,可使用eCos在多數產品應用中和前替換掉ucosii,那麼推廣效果將更加理想; 對於ARM9以上的高端處理器,工程師更寧願使用linux、VxWorks、Windows CE、uclinux等OS,而不願意使用免費便資源匱乏的eCos; 這里有一個關鍵因素是,eCos必須展現它的應用價值和它的魅力,不然憑什麼人家對這個OS產生興趣祥攜並在產品中使用它。0您可能也喜歡:stm32移植ecos #3,我的stm32開發板配置stm32移植ecos #2,選購stm32開發板stm32移植ecos #7,移植ecos並成功運行helloworld程序,配置編譯生成靜態鏈接庫文件stm32移植ecos #8,移植ecos並成功運行helloworld程序,編譯鏈接生成helloworld程序stm32移植ecos #11,使用自己的模板(Template)stm32移植ecos #4,移植redboot(ROM啟動方式)上篇stm32移植ecos #9,移植ecos並成功運行helloworld程序,使用redboot引導運行內存中的helloworld程序stm32移植ecos #6,redboot的疑問和問題,redboot是必需的嗎?
『柒』 Linux嵌入式的開發流程是什麼呢, 具體的詳細點的有嗎
下面就由福州卓躍教育具體介紹下嵌入式系統開發流程。操作系統一般使用Redhat Linux,選擇定製安裝或全部安裝,通過網路下載相應的GCC交叉編譯器進行安裝,或者安裝產品廠家提供的相關交叉編譯器;
二、配置開發主機,配置MINICOM,一般的參數為波特率115200 Baud/s,數據位8位,停止位為1,9,無奇偶校驗,軟體硬體流控設為無。在Windows下的超級終端的配置也是這樣。MINICOM軟體的作用是作為調試嵌入式開發板的信息輸出的監視器和鍵盤輸入的工具。配置網路主要是配置NFS網路文件系統,需要關閉防火牆,簡化嵌入式網路調試環境設置過程。
三、建立引導裝載程序BOOTLOADER,從網路上下載一些公開源代碼的BOOTLOADER,如U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根據具體晶元進行移植修改。有些晶元沒有內置引導裝載程序,比如,三星的ARV17、ARM9系列晶元,這樣就需要編寫開發板上FLASH的燒寫程序,可以在網上下載相應的燒寫程序,也有Linux下的公開源代碼的J-FLASH程序。
四、下載已經移植好的Linux操作系統,如MCLiunx、ARM-Linux、PPC-Linux等。
五、建立根文件系統,可以從http://www.busy.box.net下載使用BUSYBOX軟體進行功能裁減,產生一個最基本的根文件系統,再根據自己的應用需要添加其他的程序。由於默認的啟動腳本一般都不會符合應用的需要,所以就要修改根文件系統中的啟動腳本,它的存放位置位於/etc目錄下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自動掛裝文件系統的配置文件/etc/fstab,具體情況會隨系統不同而不同。根文件系統在嵌入式系統中一般設為只讀,需要使用mkcramfs genromfs等工具產生燒寫映像文件。
六、建立應用程序的FLASH磁碟分區,一般使用JFFS2或YAFFS文件系統,這需要在內核中提供這些文件系統的驅動,有的系統使用一個線性FLASH(NOR型)512KB~32MB,有的系統使用非線性FLASH(NAND型)8MB~512MB,有的兩個同時使用,需要根據應用規劃FLASH的分區方案。
『捌』 如何構建eCos嵌入式系統
ECos是一個優秀的嵌入式實時操作系統。ECos的體系結構是一種分層結構ˇ硬體抽ˇ層將操作系統與硬體隔離開ˇ這為把ECos移植到不同的硬體平台提供了便捷的方法ˇ抽ˇ層就ˇ軟體與硬體之間的橋梁。主要的移植思ˇ是ˇ按照ECos的模塊化設計ˇ完成硬體抽ˇ層。
引言
目前ˇ嵌入式操作系統的種類較多ˇ其中比較流行的有VxWorks、Windows CE、Psos、Palm OS、嵌入式Linux等。這些嵌入式操作系統在開放性、實用性以及性能等方面各有千秋ˇ但大多數為商用產品。除了商用產品外ˇ還有一些免費的嵌入式操作系統ˇuClinux是其中比較流行的ˇ而ECos則是另一個選擇。嵌入式可配置操作系統ECosˇEmbedded Configureable Operating Systemˇ的特點是可配置性、可裁減性、可移植性和實時性。它的一個主要技術特色就是功能強大的配置系宏滲統ˇ可以在源碼級實ˇ對系統的配置和裁減。與Linux的配置和裁減ˇ比ˇeCos的配置方法更清晰、更方便ˇ且系統層次也比Linux清晰明了ˇ移植和增加驅動模塊更加容易。正是由於這些特性ˇeCos引起了越來越多的關注ˇ同時也吸引越來越多的廠家使用ECos開發其新一代嵌入式產品。
ECosˇ在由Red Hat維護ˇ可支持的處理器包括ˇARM、StrongARM、XScale、SuperH、Intel X86、PowerPC、MIPS、 AM3X、 MOTOROLA 68/Coldfire、SPARC、Hitachi H8/300H和NEC V850等。源代碼及開發工具可在Red Hat的網站上免費下載ˇ網頁地址是Http:/Sources.Redhat.Com/Ecos。
1、ECos的層次結構
ECos採用模塊化設計ˇ由不同的功能組件構成ˇeCos系統的層次結構如圖1所示。
圖1
這種層次結構的最底層是硬體抽ˇ層ˇHardware Abstraction Layerˇˇ簡稱為HALˇ它負責對目標系統硬體平台進行操作和控制ˇ包括對中斷和例外的處理ˇ為上層軟體提供硬體操作介面。只需提供新硬體的抽ˇ層ˇ就可以將整個ECos系統包括基於ECos的應用移植到新的硬體平台上。
2、構建ECos系統
構建ECos系統首先要搭建自己的硬體抽ˇ層ˇ然後創建驅動程序ˇ之後就可以編制伏啟應用程序了。
3、硬體抽ˇ層的移植
硬體抽ˇ層分為三個不同的子模塊ˇ體系結構抽ˇ層ˇArchitecture HALˇ、變體抽ˇ層ˇVariant HALˇ和平台抽ˇ層ˇPlatform HALˇ。
體系結構抽ˇ層。ECos所支持的不同處理器系列具有不同的體系結構ˇ如ARM系列、PowerPC系列、MIPS系列等。體系結構抽ˇ層對CPU的基本結構進行抽ˇ和定義ˇ此外它還包括中斷的交付處理、上下文切換、CPU啟動以及該類處理器結構的指令系統等。
變體抽ˇ層指的是處理器在該處理器系列中所具有的特殊性ˇ這些特殊性包括Cache、MMU、FPU等。ECos的變體抽ˇ層就是對這些特殊性缺絕如進行抽ˇ和封裝。
平台抽ˇ層是對當前系統的硬體平台進行抽ˇˇ包括平台的啟動、晶元選擇和配置、定時設備、I/O寄存器訪問以及中斷寄存器等。
硬體抽ˇ層的這三個子模塊之間沒有明ˇ的界ˇ。對於不同的目標平台ˇ這種區分具有一定的模糊性。例如ˇMMU和Cache可能在某個平台上屬於體系結構抽ˇ層ˇ而在另一個平台上則可能屬於變體抽ˇ層的范圍ˇ再比如ˇ內存和中斷控制器可能是一種片內設備而屬於變體抽ˇ層ˇ也可能是片外設備而屬於平台抽ˇ層。 ECos的移植通過這三個子模塊來完成ˇ即平台抽ˇ層的移植、變體抽ˇ層的移植和體系結構抽ˇ層的移植。對一個新的體系結構來說ˇ其系統結構抽ˇ層的建立ˇ對來說比較困難。ECos支持大部分當前廣泛使用的嵌入式CPUˇ已具有了支持各種體系結構的硬體抽ˇ層。因此ˇeCos的移植很少需要進行體系結構抽ˇ層的編寫。
4、平台抽ˇ層的移植
一般來說ˇ進行ECos開發時ˇ移植的主要工作在於平台抽ˇ層ˇ這是由於ECos已實ˇ了絕大多數流行嵌入式CPU的體系結構抽ˇ層和變體抽ˇ層。平台抽ˇ層主要完成的工作包括ˇ內存的布局、平台早期初始化、中斷控制器以及簡單串口驅動程序等。
構建一個新的平台系統ˇ最簡單的方法是利用ECos源碼提供的具有ˇ同體系結構和CPU型號的參考平台硬體抽ˇ層ˇ將其作為模板ˇ復制並修改所有與新平台ˇ關的文件。若ECos沒有這樣的平台ˇ則可用另一種體系結構或CPU型號的類似硬體抽ˇ層作為模板。比如ˇeCos提供了以三星公司ARM CPU S3C4510B為核心的平台SNDS4110ˇ當需要移植ECos到ARM CPU S3C44B0上時ˇ這將是一個很好的起點。
移植工作最好是從RedBoot開始ˇ實ˇ的第一個目標是使RedBoot運行在新平台上。RedBoot是ECos自帶的啟動代碼ˇ它比ECos要簡單ˇ沒有使用中斷和ˇ程機制ˇ但包含了大部分最基本的功能。
建立目標平台的RedBoot通常按以下步驟進行ˇ以構建 S3C44B0的新平台為例ˇ。
ˇ復制ECos源碼中選定的參考平台ˇ根據需要對目錄及文件更名。更名的主要內容有ˇ新平台的目錄名、組件定義文件ˇCDLˇ、內存布局文件ˇMLTˇ、平台初始化的源文件和頭文件。
ˇ調整組件定義文件ˇCDLˇ選ˇ。包括選ˇ的名字、實時時鍾/計數器、CYGHWR_MEMORY_LAYOUT變數、串口參數以及其他的一些選ˇ。
ˇ在頂層Ecos.Db文件中加入所需要的包ˇ並增加對目標平台的描述。在最初ˇ該目標平台的入口可以只包含硬體抽ˇ層包ˇ其他硬體支持包以後再加入。經過修改後ˇ就可在ECos配置程序中選擇新的平台進行配置。
④修改Include/Pkgconf中的內存布局ˇMLTˇ文件。按照新的硬體平台內存布局修改MLT文件。MLT文件對應每種啟動類型有三個不同後綴的文件ˇ。H文件以及。Ldi文件和Mlt文件。手工修改時只需修改。H文件和。Ldi文件ˇ並保證兩個文件同步修改。修改的主要內容有ROM的起始地址、ROM的大孝RAM的起始地址和RAM的大校
⑤修改平台的Io宏定義。在Include/Plt_io.H文件中完成對平台的各種IO宏定義ˇ包括各種CPU的系統配置寄存器、內存配置寄存器、串口配置寄存器、LCD配置寄存器、乙太網配置寄存器等的I/O地址。
⑥修改平台的Cache代碼。在Include/Hal_cache.H文件中修改有關Cache的宏定義。在開發初期ˇ最好先將Cache關閉ˇ等移植穩定後再打開。
⑦實ˇ簡單的串口驅動程序。串口的初始化、接收和發送在Src/Hal_diag.C文件完成。主要的函數如下ˇ
點擊看原圖
⑧修改或增加平台初始化程序。平台初始化在3個文件文件中完成ˇsrc/ S3C44B0 _misc.C、Include/Hal_platform_setup.H和Include/Hal_platform_ints.H。
Hal_platform_ints.H完成系統的中斷宏定義。在不同的平台中設備數量和類型不同ˇ中斷的解碼方式也不一致ˇ需要根據具體情況作出調整。
Hal_platform_setup.H主要完成系統硬體的初步配置ˇ這里一般要在看門狗和中斷關閉後ˇ配置系統時鍾頻率、ROM和RAM的初始化參數。
S3C44B0 _misc.C文件完成目標板的進一步初始化、中斷處理、延時常式和操作系統時鍾設置。
經過以上修改ˇ底層的平台抽ˇ層就基本完成了ˇ這時可用ECos的配置工具生成RedBoot進行測試。 RedBoot測試成功後ˇ說明平台已經能正確完成初始化操作ˇ且串口驅動也能正常工作ˇ接著要完成中斷和Cache等測試工作。可利用一些多ˇ程的小程序測試ˇ檢測時鍾配置是否正確ˇ同時也檢測了中斷能否正常工作。
5、驅動程序設計
平台抽ˇ層完成後ˇ接著要完成系統的設備驅動程序。ECos設備驅動程序的中斷模塊分為三個層次ˇ中斷服務程序ISR、中斷滯後服務程序DSR和中斷ˇ程。ISR在ˇ應中斷時立即調用ˇDSR由ISR發出調用請求後調用ˇ而中斷ˇ程為驅動程序的客戶程序。
硬體中斷在最短的時間內交付給ISR處理。硬體抽ˇ層對硬體中斷源進行解碼並調用對應的中斷ISR。ISR可以對硬體進行簡單的操作ˇ應使ISR的處理時間盡量短。當ISR返回時ˇ它可將自己的中斷滯後服務程序DSR放入操作系統的任務調度中ˇDSR可以在不妨礙調度器正常工作時安全運行。大多數情況下ˇDSR將在ISR執行完成後立即運行。ECos設備驅動程序一般可分為三個部分ˇ如圖2所示。
圖2
ECos的所用設備驅動程序都使用設備表入口來描述。使用宏DEVTAB_ENTRY()可生成設備表入口。其格式為ˇ
點擊看原圖
設備入口中的句柄Handlers包含了一組設備驅動程序介面函數ˇ是設備函數表DEVIO_TAB的指針ˇDEVIO_TAB包含了一組函數的指針。設備I/O函數表通過DEVIO_TAB宏來定義ˇ格式如下ˇ
在ECos的初始化引導過程中ˇ對系統中的所有設備調用其ˇ應的Init()函數ˇ即DEVTAB_ENTRY宏注冊的初始化函數ˇˇ所有對設備的I/O操作通過Handlers完成。
『玖』 cygwin中編譯fork函數應該加入什麼庫
(轉)從windows到linux--編程篇--cygwin,在win中開發linux程序 從windows到linux -- 編程篇 -- cygwin,在win中開發linux程序
乾坤一笑[smileonce] [email protected] 2004-7-23
版權所有 轉載請註明出處 http://blog.csdn.net/smileonce 很多用windows的朋友不習慣於用linux的開發環境。雖然很樂意嘗試一下,但是往往怕linux系統
打亂了自己的正常生活:1〉裝linux系統把windows系統給搞壞了,導致自己無法正常生活;2>linux開
發上手太難,寫出第一個helloworld不亞於java的難度,環境配置摸不著頭腦。 對於此,我的看法是:
路不管平還是陡,終歸你要走的,如果你願意投入到linux開發的社群中來,不會安裝linux系統,不會配
置工作環境是不能想像的。(事實上,確實要了解很多東西的原理,不然很難排錯:諸如,硬碟引導器的引
導原理、分區結構原理及linux分區結構和文件系統、環境變數的設置、種類繁多的壓縮包安裝包的解壓安
裝方法、用戶管理許可權管理等常用命令、以至於驅動安裝系統中文化等等異碰灶常瑣碎的東東)。本文試圖跳過這個難走的步驟,啟用一個win環境下的linux模擬器(和linux下面的命令行開發環境基本
一致),用短短的20分鍾的時間,教你做出一個純正的linux下gcc編譯的helloworld。就象是買點心前
先嘗嘗味道,不也是一件很愉快的事情么?(註:cygwin事實上不僅有此模擬功能,它也是移植unix<-->
win程序的一個很有效的工具,也有人用它來做嵌入式系統開發)一、cygwin是什麼?
這個問題你最好google一下"cygwin的歷史",或許能夠獲得更為詳盡的答案。簡而言之,cygwin是一
個在windows平台上運行的linux模擬環境,是cygnus solutions公司開發的自由軟體(該公司開發了
很多好東西,著名的還有差吵枯eCos,不過現已被Redhat收購)。插一句廢話,很多朋友不明白linux和unix的
區別和聯系,在此也簡要介紹一下。UNIX是一個注冊商標,是要滿足一大堆條件並且支付可觀費用才能夠
被授權使用的一個操作系統;linux是unix的克隆版本,是由其創始人Linus和諸多世界知名的黑客手工打
造的一個操作系統。為什麼linux和unix之間有很多軟體可以很輕松的移植?因為linux也滿足POSIX規
范,所以在運行機制上跟unix相近。
以下引用網上的一段話(出處:aspx"> http://blog.csdn.net/glock18/archive/2004/07/10/38275.aspx),
用於說明cygwin的工作機制:cygnus當初首先把gcc,gdb,gas等開發工具進行了改進,使他們能夠生成
並解釋win32的目標文件。然後,他們要把這些工具移植到windows平台上去。一種方案是基於win32 api
對這些工具的源代碼進行大幅修改,這樣做顯然需要大量工作。因此,他們採取了一種不同的方法——他們寫
了一個共享庫(就是cygwin dll),把win32 api中沒有的unix風格的調用(如fork,spawn,signals,
select,sockets等)封裝在裡面,也就是說,他們基於win32 api寫了一個unix系統庫的模擬層。這樣,
只要把這些工具的源代碼和這個共享庫連接到一起,就可以使用unix主機上的交叉編譯器來生成可以在
windows平台上運行的工具集。以這些移植到windows平台上的開發工具為基礎,cygnus又逐步把其他的
工具(幾乎不需要對源代碼進行修改,只需要修改他們的配置腳本)軟體移植到windows上來。這樣,在
windows平台上運行bash和開發工具、用戶工具,虛洞感覺好像在unix上工作。關於cygwin實現的更詳細描述,
請參考 http://cygwin.com/cygwin-ug-net/highlights.html二、cygwin的安裝。
cygwin的安裝文件很容易通過google找到。目前國內的網站上有「網路安裝版」和"本地安裝版"兩種。
標準的發行版應該是 網路安裝版。兩者並無大不同,下面介紹一下安裝的過程。 step1. 下載後,點擊安裝文件(setup.exe)進行安裝,第一個畫面是GNU版權說明,點"下一步(N)—>",
進入安裝模式選擇畫面。 step2. 安裝模式有"Install from Internet"、"Download form Internet"、
"Install from Local Directory" 三種。"Install form Internet"就是直接從internet上裝,
適用於網速較快的情況。如果你和我一樣網速不是很快,或者說裝過之後想把下載的安裝文件保存起來,
下次不再下載了直接安裝,就應該選擇"Download form Internet",下載安裝的文件(大約40M左右)。
事實上,所謂的"本地安裝版",也是別人從網上下載全部文件後打的包(適用於中國國情嘛^_^)
step3. 接下來是選擇安裝目的路徑和安裝源文件所在的路徑,之後就進入了選擇安裝包所在的路徑。
注意了阿,這里可是重頭戲。我第一安裝的時候就是沒有看清這一步,結果沒有把gcc裝進去,導致沒法編
譯文件。
+ All Default
+ Admin Default
....
+ Devel Default
+ Editors Default
....
如上圖所示,你在這個TreeView的某個節點上雙擊,就可以改變它的狀態,如Default、Install、
Uninstall、Reinstall四種狀態。默認的都是Default狀態,很多工具的默認狀態都是不安裝。
在這里我選擇了在All上點Install,全部安裝,以免後患。(全部安裝大概不到200M的空間) step4. 點下一步,安裝成功。它會自動在你的桌面上建立一個快捷方式。 好了,下面就開始我的linux旅程了。雙擊cygwin的快捷方式進入系統。
首先介紹幾個簡單的linux命令。
pwd 顯示當前的路徑
cd 改變當前路徑,無參數時進入對應用戶的home目錄
ls 列出當前目錄下的文件。此命令有N多參數,比如ls -al
ps 列出當前系統進程
kill 殺死某個進程
mkdir 建立目錄
rmdir 刪除目錄
rm 刪除文件
mv 文件改名或目錄改名
man 聯機幫助
less 顯示文件的最末幾行由於linux下面的命令大多都有很多參數,可以組合使用。所以,每當你不會或者記不清楚改用那個參數,
那個開關的時候,可以用man來查找,比如,我想查找ls怎麼使用,可以鍵入
$ man ls
系統回顯信息如下:
LS(1) FSF LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by
default). Sort entries alphabetically if none of -cftuSUX
nor --sort.
-a, --all
do not hide entries starting with .
-A, --almost-all
do not list implied . and ..
-b, --escape
print octal escapes for nongraphic characters
--block-size=SIZE
use SIZE-byte blocks
:
很全是吧,嘿嘿。好了,多說無意,讓我們來寫一個hello world程序。
# cd
進入了/home/administrator目錄,我當前的登陸帳號是administrator# mkdir source
建立一個叫做source的子目錄# cd source
進入 /home/administrator/source# vim hello.c 啟動vim編輯器,來編寫程序。好了,現在有必要簡要介紹一下vim。
在linux界,有兩大編輯器最有歷史。其一是vi,其二是emacs。vi現在已經演化成了vim,比當前的vi
更為強大。vim和emacs是兩種截然不同的東西,vim強調用簡潔的命令來完成功能,無論是查找、替換、
正則表達式匹配、編譯、鏈接、排錯、函數間跳轉等等等等都在命令行中完成,並且它把方向鍵也集成在
了hjkl四個鍵之上,可以說,用了vim基本上可以不用滑鼠了:p emacs則是在功能強大上做文章,版本
控制、模擬多種編輯環境、對文本進行各種操作,可謂之一個強大的文本處理系統。emacs是用諸如
Ctrl+Alt+K 之類的組合鍵來控制的;vim則是用se(set 的縮寫)等簡潔命令來控制的。
由於cygwin中只提供了vim(能不能自己裝emacs我還沒有試過),我們就先體驗一下vim吧:p
vim載入文本文件後分為命令模式和插入模式兩種。插入模式,顧名思義就是輸入編輯文本;命令模式,則
是輸入各種控制命令,常用的有:
i 進入編輯模式
h 左移
j 下移
k 上移
l 右移
w 存檔
q 退出
! 強調執行有些命令是可以組合使用的,如果你修改了某個文件,想存檔退出,則可以使用wq;如果你想放棄存檔,
直接退出則可以使用q! 好了大家體驗一下吧,記住:從編輯模式退回命令模式按"Esc",再按":",在輸入指
令,從命令模式進入編輯模式用i,初次使用vim肯定很難受,嘿嘿,不過用多了就習慣了,確實很省勁。我們編輯hello.c文件,輸入:
#include <stdio.h>int main(void) {
printf( "Hello World!");
}
然後,輸入wq命令退到命令行。
輸入編譯指令:
# gcc hello.c -o hello
編譯成功後可以看一下
# ls
看到hello.exe了吧,嘿嘿。
好,讓我們運行看看。
# ./hello
效果如何?不錯吧? :)okey,現在玩一個C++的hello world,
# vim world.cpp
輸入:
#include <iostream>
using namespace std;void main() {
cout << "Hello World!";
}
編譯C++程序要用g++
# g++ world.cpp -o world
運行一下哈,
# ./world如何,效果不錯吧?諸位都是高手,走到這步應該編些簡單程序都不成問題了吧:p
好了,關於如何編寫makefile文件,如何用gdb下次再說了。
『拾』 如何編寫不依賴操作系統的程序。就是裸機上可以運行的。匯編或c語言生成文件都是exe啊只能在win下
其實代碼都差不多。
平時做的程序,生產exe是因為在編譯的時候,鏈接了編譯器給的入口,然後代碼裡面以main作為起始運行。
而如果編譯的時候,不指定這個入口,而是採用其它的不依賴於操作系統的介面,那麼就可以裸機跑了。常見的,包括uboot, ecos,ucosII,eboot等等,這些都是有類似實現的。 感興趣可以看看uboot源碼,spl階段和uboot階段都是類似方式處理的。