freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

華恒的嵌入式linux入門-文庫吧資料

2025-05-22 02:21本頁面
  

【正文】 ++編譯器G++,匯編器AS,鏈接器LD,二進制轉(zhuǎn)換工具(OBJCOPY,OBJDUMP),調(diào)試工具(GDB,GDBSERVER,KGDB) 和基于不同硬件平臺的開發(fā)庫。 開發(fā)工具GNU的使用GCC(gcc)的不斷發(fā)展完善使許多商業(yè)編譯器都相形見絀, GCC由GNU創(chuàng)始人Richard Stallman首創(chuàng),是GNU的標(biāo)志產(chǎn)品,由于UNIX平臺的高度可移植性,GCC幾乎在各種常見的UNIX平臺上都有,即使是Win32/DOS也有GCC的移植。應(yīng)用領(lǐng)域uClinux廣泛應(yīng)用于嵌入式系統(tǒng)中,例如VPN路由器/防火墻,家用操作終端,協(xié)議轉(zhuǎn)換器,IP電話,工業(yè)控制器,Internet攝像機,PDA設(shè)備等。 網(wǎng)絡(luò)的支持uClinux帶有一個完整的TCP/IP協(xié)議,同時它還支持許多其他網(wǎng)絡(luò)協(xié)議。大多數(shù)標(biāo)準(zhǔn)的Linux應(yīng)用程序在從Linux操作系統(tǒng)移植到uClinux系統(tǒng)時,幾乎不用做什么大的改動,就可以完全達到對一個嵌入式應(yīng)用程序的要求(例如合理的資源使用)。與標(biāo)準(zhǔn)Linux的兼容性uClinux除了不能實現(xiàn)fork()而是使用vfork()外,其余uClinux的API函數(shù)與標(biāo)準(zhǔn)Linux的完全相同。經(jīng)過修改的工具鏈支持一些高級特性,比如XIP(ExecuteInPlace)技術(shù),共享庫支持等。有了這兩種方案,uClinux可以應(yīng)用到對實時性要求較高的場合。但從嵌入式系統(tǒng)一般都是實現(xiàn)某種特定功能的角度考慮,對于內(nèi)存管理的要求完全可以由程序開發(fā)人員考慮。由于大多數(shù)的嵌入式設(shè)備沒有磁盤或者只有很有限的內(nèi)存空間,所以無需復(fù)雜的內(nèi)存管理機制。 MMU(內(nèi)存管理單元) 和VM(虛擬內(nèi)存)許多嵌入式微處理器都由于沒有MMU而不支持虛擬內(nèi)存。Linux透明的支持許多不同的文件系統(tǒng),將各種安裝的文件和文件系統(tǒng)以一個完整的虛擬文件系統(tǒng)的形式呈現(xiàn)給用戶。這種特性使得Linux很容易地同其他操作系統(tǒng)共存。同其他操作系統(tǒng)一樣,設(shè)備驅(qū)動為它們所控制的硬件設(shè)備和操作系統(tǒng)提供接口。系統(tǒng)調(diào)用函數(shù)/捕獲函數(shù):在執(zhí)行完“init”程序后,內(nèi)核對程序流不再有直接的控制權(quán),此后,它的作用僅僅是處理異步事件(例如硬件中斷)和為系統(tǒng)調(diào)用提供進程。內(nèi)核初始化:Linux內(nèi)核的入口點是start_kernel()函數(shù)。 uClinux的基本架構(gòu)Boot Loader:負責(zé)Linux內(nèi)核的啟動,它用于初始化系統(tǒng)資源,包括SDRAM。在GNU通用公共許可證(GNU GPL)的保證下,運行uClinux操作系統(tǒng)的用戶可以使用幾乎所有的Linux API函數(shù),不會因為沒有MMU而受到影響。uClinux是為了支持沒有MMU的處理器而對標(biāo)準(zhǔn)Linux作出的修正。適用于沒有虛擬內(nèi)存或內(nèi)存管理單元(MMU)的處理器,例如ARM7TDMI。uClinux從Linux ,沿襲了主流Linux的絕大部分特性。這些都阻礙了應(yīng)用于這類CPU之上的嵌入式產(chǎn)品開發(fā)的速度。最初,運行于這類沒有MMU的CPU之上的都是一些很簡單的單任務(wù)操作系統(tǒng),或者更簡單的控制程序,甚至根本就沒有操作系統(tǒng)而直接運行應(yīng)用程序?!癿u”代表“微小”之意,字母“C”代表“控制器”,所以從字面上就可以看出它的含義,即“微控制領(lǐng)域中的Linux系統(tǒng)”。uClinux是一個完全符合GNU/GPL公約的操作系統(tǒng),完全開放代碼,現(xiàn)在由Lineo公司支持維護。雖然嵌入式系統(tǒng)的應(yīng)用程序完全可以在裸板上運行,但為了使系統(tǒng)具有任務(wù)管理、定時器管理、存儲器管理、資源管理、事件管理、系統(tǒng)管理、消息管理、隊列管理和中斷處理的能力,提供多任務(wù)處理,更好的分配系統(tǒng)資源的功能,用戶就需要針對自己的硬件平臺和實際應(yīng)用選擇適當(dāng)?shù)那度胧讲僮飨到y(tǒng)(Embedded Operating System,以下簡稱EOS)。 第7章 嵌入式uClinux及其應(yīng)用開發(fā)(1)本章從構(gòu)建一個針對S3C4510B硬件平臺的嵌入式uClinux操作系統(tǒng)和在其上進行應(yīng)用程序的開發(fā)入手,逐步講述如何在Linux環(huán)境下編寫用戶應(yīng)用程序的方法和步驟,并為熟悉Windows操作系統(tǒng)的用戶介紹在這種平臺之上,使用何種工具編寫和編譯自己的應(yīng)用。事實上,在互聯(lián)網(wǎng)上已經(jīng)有數(shù)百萬免費的 Linux 兼容軟件,支持 CE 開發(fā)項目。  當(dāng)下一代 CE 設(shè)備進入市場時,設(shè)計師必須準(zhǔn)備好為定制的應(yīng)用軟件提供復(fù)雜的用戶界面、網(wǎng)絡(luò)聯(lián)接能力,以及實時數(shù)據(jù)安全功能。另外也可以在 上找到有關(guān) Linux CE 產(chǎn)品的信息。  如果你對 CE 使用的 Linux 還比較陌生,可以到 CELF(消費電子 Linux 論壇)查找消息、討論和定制源碼。ZP80 包含有一個自動檢測的線路輸入連接器,它可以對任何輸入的音頻源進行數(shù)字編碼,如 Apple iPod、CD 機或衛(wèi)星收音機。  在今年拉斯維加斯的消費電子大展上,Sonos 推出了基于 Linux 的 ZonePlayer ZP80(見圖),它是一個無線系統(tǒng)的組成部分,可以使用戶在家中將數(shù)字音樂流送至音頻設(shè)備。除了網(wǎng)頁瀏覽器以外,770 還帶有一個 Email 客戶機、媒體播放器、文件管理器、游戲,以及幾個通用應(yīng)用程序。Linux 可能會成為索尼為它下一代游戲機 PlayStation 3 提供軟件包的一部分,該產(chǎn)品預(yù)計在 2006 年春季上市?! iVo 領(lǐng)頭  很多 CE 設(shè)備都組合有 Linux 操作系統(tǒng),但 TiVo 個人錄像機是被最普遍公認的。CEE 支持來自Freescale、Intel、Renesas 和 Texas Instruments的多種為消費設(shè)備定制的處理器。   同樣,MontaVista 軟件公司提供 Linux CEE(消費電子版),這是一個用于 CE 設(shè)備的嵌入式操作系統(tǒng)和交叉開發(fā)環(huán)境。我們的方案采用了一種基于 Workbench 工具套件的策略,它是一個萬能的生命周期產(chǎn)品,覆蓋從電路板設(shè)計到固件開發(fā),直到內(nèi)核電路板支持開發(fā)、應(yīng)用程序開發(fā)和調(diào)試等全部內(nèi)容。他說,這些客戶的態(tài)度更偏向 Linux。其他一些進行了大量既有投資的用戶也想繼續(xù)使用 RTOS。例如,Wind River 產(chǎn)品系列經(jīng)理 Glenn Seiler 這樣總結(jié)公司的策略:“市場希望有個選擇。但與限制用戶使用單一來源的商業(yè)化專有操作系統(tǒng)不同,Linux 用戶仍然享有從任何其他供應(yīng)商處獲得支持的自由?! ‰m然 Linux 是一個免費的操作系統(tǒng),但很多設(shè)計師仍希望付費獲得專業(yè)支持、特殊工具、定制服務(wù)以及預(yù)包裝好的配置,以方便開發(fā)過程。最聰明的選擇恐怕是不修改內(nèi)核,而使用為調(diào)試用的源代碼,或者了解 Linux 的內(nèi)部功能。當(dāng)下一個正式  內(nèi)核補碼  開發(fā)者在開放源 Linux 環(huán)境中預(yù)見到的另一個可能的危險是軟件破碎的可能性。在2005年 12 月,SCO 集團提出擴展對 Novell 的訴訟,它是 UNIX 知識產(chǎn)權(quán)原來的所有者,也是現(xiàn)在的一個 Linux 開發(fā)商?! 〕嗽S可的不確定性外,Linux 用戶還面臨其它非技術(shù)性因素。應(yīng)用程序和設(shè)備驅(qū)動可能會保持專有性,只要它們與 Linux 內(nèi)核無關(guān),不含 GPL 代碼。Linux 是按照 GNU 的 GPL(通用公共許可)使用規(guī)則發(fā)放許可?! inux 的許可協(xié)議對消費設(shè)備開發(fā)者來說有正、反兩方面的意義。例如,藍牙和 USB 等增強外設(shè)選項,ALSA(高級 Linux 聲音架構(gòu))可以使應(yīng)用程序處理多個音頻流,而 Video4Linux 則增加了一個視頻子系統(tǒng)。進程調(diào)度算法經(jīng)過重寫,加快了多任務(wù)應(yīng)用中作業(yè)的切換速度??梢詮? 找到最新內(nèi)核的相關(guān)信息,下載最新版本。設(shè)計師可以用一個低成本的微處理器開始生產(chǎn),它只需滿足當(dāng)前的需求,而隨著設(shè)備需求和功能的擴展,又能夠方便地升級為一個功能更強大的 CPU。Linux 還支持大量的微處理器,使之最適合于變化多端的消費產(chǎn)品市場。Linux 并非要提供決定性的性能,而是用于以前需要實時操作系統(tǒng)的一些應(yīng)用上?! ‰S著大批新一代高速、低成本32b處理器和 Linux 的搶先改進,開發(fā)人員發(fā)現(xiàn)嵌入系統(tǒng)的實時需求已不再是一個負擔(dān)。這些開發(fā)人員習(xí)慣于維護自己的軟件包,而用 Linux 許可協(xié)議很適合他們的口味。Linux 內(nèi)核占用 RAM一般 低于 1M B,作業(yè)控制環(huán)境提供一個用戶界面,它可以簡單到一個命令行,或者像 Windows 的圖形界面一樣復(fù)雜。內(nèi)存管理器可以使多個程序安全地共享系統(tǒng)內(nèi)存,而進程調(diào)度器可以確保各個程序能夠公平地訪問 CPU?! inux 包括內(nèi)核、作業(yè)控制 環(huán)境以及應(yīng)用程序。與機構(gòu)內(nèi)部開發(fā)或商業(yè)化的操作系統(tǒng)相比較,這些成本相當(dāng)高,在項目生命周期中要增加數(shù)千美元?! inux 的多種特性使之很適合于 CE 項目。針對這種復(fù)雜性,32 b處理器、網(wǎng)絡(luò)聯(lián)接、全圖形顯示、安全以及多線程軟件已經(jīng)成為新設(shè)計中的標(biāo)準(zhǔn)配置。用戶不再滿足于只提供一種功能的設(shè)備。它的發(fā)展成本和替代者一致?! inux在嵌入式系統(tǒng)中的應(yīng)用是可行的。這是一個28K的程序,從配置文件上調(diào)用數(shù)據(jù),可以用幾行代碼代替,初始化合適的結(jié)構(gòu)。一個反復(fù)出現(xiàn)的例子就是配置。這個目標(biāo)是崇高的,但是,所付出的代價將是針對具體的工作做出巨大的調(diào)整。嵌入式系統(tǒng)總的來說卻不靈活;而且它們完全是為最有效實現(xiàn)預(yù)定功能而嚴格設(shè)計的。  然而,對我來說最糟糕的是心理上的問題。kgdb可以使錯誤定位非常容易,你只要重新啟動?! ≡S多Linux的應(yīng)用程序都要用到虛擬內(nèi)存,在許多嵌入式系統(tǒng)中,是沒有價值的,所以不要以為一個沒有磁盤的嵌入式系統(tǒng)可以運行任何Linux應(yīng)用程序。比如,雖然它并不比某些商業(yè)競爭對手差多少,但它的確是個貪婪的存儲器。這樣縮短了數(shù)據(jù)在進入磁盤之前,待在高速緩沖存儲器內(nèi)的時間,降低了丟失數(shù)據(jù)的可能性。標(biāo)準(zhǔn)Linux初始化腳本運行fsck程序,它在檢查和清除不穩(wěn)定的inodes方面非常有效。電源隨時都可能被中斷。我們有用磁盤進行Linux系統(tǒng)設(shè)計超過兩年的經(jīng)驗?! “殡S著基本內(nèi)核和驅(qū)動程序,還有其它問題。Linux的優(yōu)勢在于源代碼是公開、注釋清晰和文檔齊全的??傊?,這些操作系統(tǒng)和Linux的問題在于對工作過程微秒之處的誤解,而不在于代碼的難度或基本的設(shè)計錯誤。我發(fā)現(xiàn)許多驅(qū)動程序都寫得很好,很容易理解,但你還是要準(zhǔn)備一本關(guān)于內(nèi)核結(jié)構(gòu)的書在手頭。這種驅(qū)動程序界面已定義好。而且選擇很有限;一旦你離開了通用的PC平臺,你需要自己編寫。前面我們討論過,引導(dǎo)策略廣泛依賴于硬件要求,而且你必須有計劃地做一些定制的工作。其中大多數(shù)是在內(nèi)存管理和中斷控制領(lǐng)域。這些板包括特定的外圍設(shè)備和CPU。移植到新微處理器家族的Linux內(nèi)核運行起來與本微處理器一樣穩(wěn)定。健壯性比政治家的承諾更可靠  在PC硬件上運行時,Linux是非常可靠和穩(wěn)定的,特別是和現(xiàn)在流行的一些操作系統(tǒng)相比。下面是PC運行JTAG界面所需的一些慣用程序。這是最方便的方法。 另一個方法是通過一個JTAG界面。然后,把芯片插入你的目標(biāo)板的插座,打開電源?! ∫环N流行的方法是把Flash或EPROM芯片插入EPROM或Flash燒制器。你需要使用一些方法將代碼放在芯片上。如果這樣不行,你可以跳過這一步,但這樣就要一個更長的調(diào)試周期。 為了測試這些代碼,你可以使用一個包含‘模擬內(nèi)存’的電路內(nèi)置模擬器,它可以代替目標(biāo)內(nèi)存。通常這些菜單式設(shè)計的啟動代碼是可以獲得的,它可以根據(jù)你的需要輕易的修改?! ⌒疫\的是,許多系統(tǒng)都有為核心微處理器和內(nèi)存所定制的菜單式硬件設(shè)計。所以在大多數(shù)情況下,一個最小的通電自檢模塊,可以檢查內(nèi)存的正常運行、讓LED閃爍,并且驅(qū)動其它必須的硬件以使主Linux OS啟動和運行。它只是一指令清單,將固定的數(shù)字塞到硬件寄存器中去。幸運的是,嵌入式系統(tǒng)并不需要PC BIOS 引導(dǎo)程序那樣的靈活性,因為它通常只需要處理一個硬件的配置。  在一個嵌入式系統(tǒng)里經(jīng)常沒有這種BIOS。實際上,這非常復(fù)雜,但對我們的目標(biāo)來說也非常重要。它執(zhí)行了一些低水平的CPU初始化和其它硬件的配置。通常在那里有一些只讀內(nèi)存,包括初始化或引導(dǎo)代碼。對更復(fù)雜的監(jiān)控,應(yīng)用程序包如Matlab(),可以用來在操作員的PC或工作站的提供系統(tǒng)運行的圖形展示。這就允許另一個機器上的Web服務(wù)器通過簡單的CGI Script存取狀態(tài)信息。舉例來說,嵌入式系統(tǒng)可以建立一個小的RAM磁盤,包含的文件中有與當(dāng)前狀態(tài)信息同步的內(nèi)容。它在運行的時候也可以用來輸入或輸出大量的數(shù)據(jù)、配置和狀態(tài)信息。第一,它允許通過網(wǎng)絡(luò)上加載應(yīng)用程序?! ∽詈?,對于聯(lián)網(wǎng)的嵌入式系統(tǒng)來說,Linux 支持NFS(Network File System)。這比Flash Memory 便宜,而且通過交換CDROM支持簡單的升級。Linux的內(nèi)核可以通過引導(dǎo)代碼從Flash復(fù)制到RAM,或者還有一個選擇,內(nèi)核可以被存儲在Flash的一個獨立部分,并且直接從那里執(zhí)行。這可能包括Linux 引導(dǎo)代碼。Flash Memories被分割成塊?! ∥募到y(tǒng)可以被放在傳統(tǒng)的磁盤驅(qū)動器、Flash Memory或其它這類的介質(zhì)上。如果系統(tǒng)在升級過程中失去了能力,那它就沒有用了。Linux還具有檢查和維護的功能,商業(yè)性供應(yīng)商往往不提供這些。Linux提供MSDOSCompatible文件系統(tǒng),同時還有其它多種選擇?! 嶋H上,許多商業(yè)性嵌入式系統(tǒng),提供文件系統(tǒng)作為選項。對于簡單的系統(tǒng)來說,這就夠了。Linux不需要它們也能運行。這也可以通過Linux共享內(nèi)存功能來支持,共享的只是指定的內(nèi)存部分。它減少了胡亂的編寫程序造成系統(tǒng)崩潰的可能性。這在嵌入式系統(tǒng)上通常不可能,因為它只支持一個簡單、扁平的地址空間。然后,如果你寫的程序比實際的內(nèi)存大,系統(tǒng)就會當(dāng)作你的運行用盡了交換空間來處理;這個程序?qū)⒉粫\行,或者malloc將會失靈。沒有這個,每一個程序都要有它自己的庫,就象printf一樣?! ∽⒁庥捎贑PU的原因,通常在Linux中保存虛擬內(nèi)存代碼是明智的,因為將它清除很費事。實際上,你可能不希望它在實時的關(guān)鍵系統(tǒng)里,因為它會帶來無法控制的時間因素。在沒有磁盤的嵌入式系統(tǒng)里,通常不能這么做。正是這種神奇的特征使
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1