coLinux構(gòu)建嵌入式開發(fā)環(huán)境
1 引言
本文引用地址:http://m.butianyuan.cn/article/150780.htmGNU項(xiàng)目為嵌入式開發(fā)提供了優(yōu)秀的交叉開發(fā)工具鏈,雖然這些工具鏈也移植到了 Windows系統(tǒng)中,但是為了在 Windows系統(tǒng)中使用,通常還需要另外一個(gè)模擬的 Linux環(huán)境——Cygwin,效率是一個(gè)新的問題。另外, Cygwin環(huán)境也不是一個(gè)真正的 Linux環(huán)境,相比于真正的 Linux環(huán)境來說, Cygwin仍顯不足。從根本上來講, GNU工具鏈?zhǔn)腔?Linux操作系統(tǒng)環(huán)境而開發(fā)的。
在眾多的開源項(xiàng)目中,與嵌入式相關(guān)的開發(fā)項(xiàng)目大多數(shù)仍然需要基于 Linux系統(tǒng)進(jìn)行編譯和鏈接。雖然在 Cygwin中通過復(fù)雜的設(shè)置也有可能滿足相關(guān)開發(fā)需要,但是對于開發(fā)人員來說,優(yōu)先的選擇仍然是使用 Linux。用慣了 Windows的程序員通常會在系統(tǒng)中安裝一個(gè)龐大的 Linux虛擬機(jī),或者直接安裝兩個(gè)操作系統(tǒng)。程序員必須忍受虛擬機(jī)的運(yùn)行效率低下的重大缺點(diǎn),或者為了切換操作系統(tǒng)而反復(fù)地重新啟動安裝了雙操作系統(tǒng)的計(jì)算機(jī)。如果需要在 Linux與 Windows之間進(jìn)行文件傳遞,還需要做一些額外的工作。
然而 coLinux的出現(xiàn),改變了這一切。
2 coLinux簡介
coLinux也是一個(gè)源代碼開放的軟件,全名為 Cooperative Linux(協(xié)作 Linux)。coLinux是第一個(gè)能在 Win32平臺上高效地以原生(native)方式運(yùn)行 Linux的軟件, Linux在 coLinux中的運(yùn)行效率極高,遠(yuǎn)遠(yuǎn)超過虛擬機(jī)的運(yùn)行效率(為了模擬一條匯編指令,通常虛擬機(jī)要使用一段 C語言代碼來完成)。 coLinux目前發(fā)展到了 0.73版本,在其官方網(wǎng)站http://www.colinux.net上提供了最新版本的源代碼和二進(jìn)制代碼的下載地址。
coLinux有很高的運(yùn)行效率,并且僅需要很少的系統(tǒng)資源。 coLinux中的 Linux在本質(zhì)上是直接在 PC機(jī)硬件中運(yùn)行的,而不是在虛擬機(jī)上。coLinux不像虛擬機(jī)那樣一次就從系統(tǒng)中劃去一大塊內(nèi)存,而是根據(jù)實(shí)際需要讓宿主機(jī)系統(tǒng)動態(tài)為其分配內(nèi)存。
coLinux創(chuàng)建的是一個(gè)“真正的” Linux操作系統(tǒng)。相比之下, CygWin提供的是一個(gè)模擬的 Linux環(huán)境。Linux程序若不重新構(gòu)建,就無法在 Cygwin中直接運(yùn)行。
coLinux可以通過 cofs驅(qū)動使宿主機(jī)( Windows XP)與 Linux進(jìn)行文件夾共享。通過簡單的設(shè)置后,就可以把 Windows系統(tǒng)中的一個(gè)文件夾與 coLinux中的 Linux系統(tǒng)進(jìn)行共享。在 Windows操作該文件夾中文件的時(shí)候,Linux也可以對其進(jìn)行操作。
coLinux具有高可移植性的特點(diǎn)。在一個(gè) Windows主機(jī)上建立一個(gè) coLinux發(fā)行版,并在根文件系統(tǒng)中安裝一套定制的應(yīng)用程序。然后,可以將根文件系統(tǒng)轉(zhuǎn)移到另一個(gè)主機(jī)上,并重新啟動。這樣就有了一個(gè)可移動的開發(fā)平臺,壓縮后的根文件系統(tǒng)完全可以放在一個(gè)標(biāo)準(zhǔn)的 USB盤中。
3 coLinux的工作原理
coLinux在 Windows操作系統(tǒng)中作為一個(gè)進(jìn)程執(zhí)行。可以認(rèn)為 coLinux是 Linux操作系統(tǒng)與 Windows操作系統(tǒng)之間的一個(gè)接口。兩種操作系統(tǒng)通過將處理器(CPU)的控制權(quán)轉(zhuǎn)讓給彼此從而達(dá)到協(xié)作(Cooperative)的目的。它們通過使用內(nèi)核驅(qū)動程序共享網(wǎng)絡(luò)接口、串口等物理資源。
coLinux是一個(gè)修改過的 Linux 內(nèi)核,它可以與另一個(gè)操作系統(tǒng)協(xié)作運(yùn)行。宿主機(jī)(host)操作系統(tǒng)控制本機(jī)的硬件資源,而訪客(guest)操作系統(tǒng)只得到本機(jī)硬件的虛擬抽象。主機(jī)操作系統(tǒng)提供了以特權(quán)級別(ring 0)執(zhí)行驅(qū)動程序的方法,并提供了分配內(nèi)存的方法。
Linux 內(nèi)核所需的其他特性(比如網(wǎng)絡(luò)連接、串口或視頻訪問)通過外部代理來實(shí)現(xiàn),
比如 coLinux 可以通過 TUNTAP驅(qū)動程序訪問外部網(wǎng)絡(luò),通過代理訪問顯示器( X Window System)等。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論