




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)詳解ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)詳解ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)詳解ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)詳解ARM嵌入式Linux系統(tǒng)11.1什么是嵌入式系統(tǒng)對(duì)于沒(méi)有接觸過(guò)的人來(lái)說(shuō),嵌入式系統(tǒng)這個(gè)詞可能顯得比較深?yuàn)W,甚至充滿一些神秘色彩。其實(shí)嵌入式系統(tǒng)和普通人的生活非常緊密,如日常生活中使用的手機(jī)、微波爐、有線電視機(jī)頂盒等,都屬于嵌入式系統(tǒng)。與通常使用的PC機(jī)相比,嵌入式系統(tǒng)的形式變化多樣、體積小,可以靈活地適應(yīng)各種設(shè)備的需求。因此,可以把嵌入式系統(tǒng)理解為一種為特定設(shè)備服務(wù)的,軟件硬件可裁剪的計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)的英文名稱是EmbeddedSystem。從嵌入式系統(tǒng)的定義可以看出,一個(gè)嵌入式系統(tǒng)具備了體積小、功能專一、軟硬件可裁剪的特點(diǎn)。這些特點(diǎn)也能反映出嵌入式系統(tǒng)與傳統(tǒng)的PC機(jī)有著不同之處。本書(shū)使用常見(jiàn)的ARM嵌入式系統(tǒng)為例講解嵌入式Linux系統(tǒng)移植和開(kāi)發(fā)技術(shù)。1.1什么是嵌入式系統(tǒng)對(duì)于沒(méi)有接觸過(guò)的人來(lái)說(shuō),嵌入式系統(tǒng)1.2嵌入式系統(tǒng)應(yīng)用領(lǐng)域從嵌入式系統(tǒng)的特點(diǎn)可以看出它的應(yīng)用領(lǐng)域是很廣泛的。不僅在家電上,在其他的領(lǐng)域也有很大的需求。本節(jié)介紹一些嵌入式應(yīng)用的領(lǐng)域。1.2嵌入式系統(tǒng)應(yīng)用領(lǐng)域從嵌入式系統(tǒng)的特點(diǎn)可以看出它的應(yīng)1.2.1家用電器家用電器里最常見(jiàn)的可能就算是手機(jī)了。手機(jī)是一個(gè)典型的嵌入式系統(tǒng)。1.2.1家用電器家用電器里最常見(jiàn)的可能就算是手機(jī)了。手1.2.2交通工具大家最常使用的交通工具就是汽車(chē)了,不管是公交車(chē)、私家車(chē)還是其他的各種專用車(chē)輛,都有嵌入式系統(tǒng)的身影。1.2.2交通工具大家最常使用的交通工具就是汽車(chē)了,不管1.2.3公共電子設(shè)施銀行的ATM自動(dòng)取款機(jī)是一種常見(jiàn)的公共電子設(shè)備。1.2.3公共電子設(shè)施銀行的ATM自動(dòng)取款機(jī)是一種常見(jiàn)的1.3嵌入式系統(tǒng)發(fā)展從1946年第一臺(tái)現(xiàn)代電子計(jì)算機(jī)誕生以來(lái),計(jì)算機(jī)始終朝著兩個(gè)方向發(fā)展:一個(gè)方向是體積大型化、處理能力超強(qiáng)的大型計(jì)算機(jī);另一個(gè)方向是超體積小型話、功能多樣化發(fā)展。這兩個(gè)發(fā)展方向沒(méi)有高低之分,都是由于實(shí)際需求帶動(dòng)發(fā)展。計(jì)算機(jī)大型化發(fā)展出現(xiàn)了很多的超級(jí)計(jì)算機(jī),各國(guó)都在研制自己的大型計(jì)算機(jī)。在計(jì)算機(jī)小型化的發(fā)展道路上,可謂是種類繁多。不僅有個(gè)人電腦(PC),還有各種個(gè)人數(shù)字助理(PDA)。嵌入式系統(tǒng)是計(jì)算機(jī)系統(tǒng)小型化發(fā)展的一個(gè)熱門(mén)的分支。1.3嵌入式系統(tǒng)發(fā)展從1946年第一臺(tái)現(xiàn)代電子計(jì)算機(jī)誕生1.3.1嵌入式微控制器嵌入式微控制器也就是傳統(tǒng)意義上的單片機(jī),它可以說(shuō)是目前嵌入式系統(tǒng)的前身。單片機(jī)就是把一個(gè)計(jì)算機(jī)的主要功能集成到了一個(gè)芯片上,簡(jiǎn)單說(shuō)就是一個(gè)芯片就是一個(gè)計(jì)算機(jī)。它的特點(diǎn)是體積小、結(jié)構(gòu)簡(jiǎn)單、便于開(kāi)發(fā)以及價(jià)格經(jīng)濟(jì)。1.3.1嵌入式微控制器嵌入式微控制器也就是傳統(tǒng)意義上的1.3.2嵌入式微處理器單片機(jī)的發(fā)展時(shí)間較早,處理能力很低,只能用在一些相對(duì)簡(jiǎn)單的控制領(lǐng)域。嵌入式微處理器是近幾年隨著大規(guī)模集成電路發(fā)展同步發(fā)展起來(lái)的。與單片機(jī)相比,嵌入式微處理器的處理能力更強(qiáng)。目前主流的嵌入式微處理器都是32位的,而單片機(jī)多是8位和16位的。嵌入式處理器在一個(gè)芯片上集成了復(fù)雜的功能,同時(shí)一些微處理器還把常見(jiàn)的外部設(shè)備控制器也集成到芯片內(nèi)部。以ARM芯片為例,ARM體系在內(nèi)部規(guī)定了一個(gè)32位的總線,廠商可以在總線擴(kuò)展外部設(shè)備控制器。三星的ARM9芯片S3C2440A把常見(jiàn)的串行控制器、RTC控制器、看門(mén)狗、I2C總線控制器甚至LCD控制器等都集成在了一個(gè)芯片內(nèi),可以提供強(qiáng)大的處理能力。1.3.2嵌入式微處理器單片機(jī)的發(fā)展時(shí)間較早,處理能力很1.3.2嵌入式微處理器1.3.2嵌入式微處理器1.3.3未來(lái)嵌入式系統(tǒng)發(fā)展的方向隨著微電子技術(shù)的不斷發(fā)展以及電子制造工藝的進(jìn)步(目前已經(jīng)可以制造出65納米的芯片),嵌入式系統(tǒng)硬件的體積會(huì)不斷縮小,系統(tǒng)穩(wěn)定性也在不斷增強(qiáng),可以把更多的功能集成在一個(gè)芯片上。另外在功耗方面也不斷降低,這樣使嵌入式設(shè)備在自帶電源的情況(如使用電池)會(huì)使用更長(zhǎng)的時(shí)間,而且設(shè)備的功能也更強(qiáng)大。此外隨著網(wǎng)絡(luò)的普及和IPv6技術(shù)的應(yīng)用,越來(lái)越多的嵌入式設(shè)備也會(huì)加入到網(wǎng)絡(luò)中。將來(lái)家中的微波爐或者洗衣機(jī)都可以通過(guò)無(wú)線接入網(wǎng)絡(luò),被其他設(shè)備控制。1.3.3未來(lái)嵌入式系統(tǒng)發(fā)展的方向隨著微電子技術(shù)的不斷發(fā)1.4典型的嵌入式系統(tǒng)組成嵌入式系統(tǒng)與傳統(tǒng)的PC機(jī)一樣,也是一種計(jì)算機(jī)系統(tǒng),是由硬件和軟件組成的。硬件包括了嵌入式微控制器和微處理器,以及一些外圍元器件和外部設(shè)備;軟件包括嵌入式操作系統(tǒng)和應(yīng)用軟件。與傳統(tǒng)的計(jì)算機(jī)不同的是,嵌入式系統(tǒng)種類繁多。許多的芯片廠商、軟件廠商加入其中,導(dǎo)致有許多的硬件和軟件,甚至解決方案。一般來(lái)說(shuō),不同的嵌入式系統(tǒng)軟硬件是很難兼容的,軟件必須修改而硬件必須重新設(shè)計(jì)才能使用。雖然軟硬件種類多,但是不同的嵌入式系統(tǒng)還有很多相同之處的。1.4典型的嵌入式系統(tǒng)組成嵌入式系統(tǒng)與傳統(tǒng)的PC機(jī)一樣,1.4典型的嵌入式系統(tǒng)組成1.4典型的嵌入式系統(tǒng)組成1.5小結(jié)本章是全書(shū)的第一章,為讀者介紹了嵌入式系統(tǒng)的基本常識(shí)、組成結(jié)構(gòu),通過(guò)實(shí)例給讀者對(duì)嵌入式系統(tǒng)一個(gè)初步的認(rèn)識(shí)。本章的知識(shí)相對(duì)比較籠統(tǒng),偏重一些概念方面的介紹,讀者可以結(jié)合實(shí)際生活理解,加深對(duì)嵌入式系統(tǒng)的認(rèn)識(shí)。第2章講解嵌入式軟件和硬件系統(tǒng)基本知識(shí)。1.5小結(jié)本章是全書(shū)的第一章,為讀者介紹了嵌入式系統(tǒng)的基第2章嵌入式軟硬件系統(tǒng)在學(xué)習(xí)嵌入式開(kāi)發(fā)之前,需要了解一下嵌入式系統(tǒng)基本知識(shí)。嵌入式系統(tǒng)是由軟件和硬件組成的,與傳統(tǒng)的PC不同,在設(shè)計(jì)嵌入式系統(tǒng)的時(shí)候通常是軟件和硬件都需要設(shè)計(jì)。對(duì)于一個(gè)嵌入式系統(tǒng)開(kāi)發(fā)來(lái)說(shuō),無(wú)論是硬件開(kāi)發(fā)人員還是軟件開(kāi)發(fā)人員,都需要掌握基本的軟件和硬件知識(shí)。本章的主要目的是通過(guò)講解基本的軟硬件知識(shí),幫助讀者建立嵌入式系統(tǒng)概念,主要內(nèi)容包括:模擬電路和數(shù)字電路基本的數(shù)制轉(zhuǎn)換計(jì)算機(jī)的工作原理軟件的基礎(chǔ)知識(shí)操作系統(tǒng)概要第2章嵌入式軟硬件系統(tǒng)在學(xué)習(xí)嵌入式開(kāi)發(fā)之前,需要了解一下2.1電路基本知識(shí)初中物理知識(shí)講過(guò),電流就是電流通過(guò)的路徑。一個(gè)最簡(jiǎn)單的電路是由電源、負(fù)載和導(dǎo)線構(gòu)成的。復(fù)雜的電路還有電阻、電容、晶體管、集成電路等元件。這些元件的功能不同,通過(guò)不同的組織方式構(gòu)成了不同功能的電路。無(wú)論什么樣的電路,最終的功能都是處理電子信號(hào)的。按照電子信號(hào)的工作方式可以把電路分成模擬電路和數(shù)字緶貳2.1電路基本知識(shí)初中物理知識(shí)講過(guò),電流就是電流通過(guò)的路2.1.1什么是模擬電路處理模擬信號(hào)的電路稱作模擬電路。模擬信號(hào)的特點(diǎn)是信號(hào)是線性變化的,意思是信號(hào)變化是連續(xù)的。如經(jīng)常使用的收音機(jī)、電視機(jī)和電話都是使用的模擬信號(hào)。常見(jiàn)的模擬電路有變壓電路、放大電路。評(píng)估一個(gè)模擬電路常見(jiàn)的參數(shù)有放大率、信噪比和工作頻率等。模擬電路是數(shù)字電路的基礎(chǔ),數(shù)字電路可以看做是模擬電路的一種特殊形式。2.1.1什么是模擬電路處理模擬信號(hào)的電路稱作模擬電路。2.1.2什么是數(shù)字電路數(shù)字電路顧名思義是處理數(shù)字信號(hào)的電路,通常數(shù)字電路具有邏輯運(yùn)算和邏輯處理的功能。與模擬信號(hào)不同,數(shù)字信號(hào)使用電壓的高低或者電流的有無(wú)表示邏輯上的1或0,因此數(shù)字電路可以方便地表示出二進(jìn)制數(shù)。數(shù)字電路可以分成脈沖電路和邏輯電路兩部分,脈沖電路負(fù)責(zé)對(duì)信號(hào)變換和測(cè)量;邏輯電路負(fù)責(zé)處理數(shù)字邏輯。與模擬電路不同,數(shù)字電路關(guān)心的是信號(hào)狀態(tài)的變化。通過(guò)數(shù)字邏輯可以處理復(fù)雜的二進(jìn)制信息,因此數(shù)字電路是計(jì)算機(jī)的基礎(chǔ)。由于數(shù)字電路的工作特點(diǎn),它具有電路結(jié)構(gòu)簡(jiǎn)單、容易加工制造等優(yōu)點(diǎn),可以大批量的生產(chǎn)制造,成本也變得低廉。數(shù)字電路廣泛應(yīng)用在測(cè)量、科學(xué)計(jì)算、自動(dòng)控制等領(lǐng)域。2.1.2什么是數(shù)字電路數(shù)字電路顧名思義是處理數(shù)字信號(hào)的2.1.3數(shù)制轉(zhuǎn)換計(jì)算機(jī)是由數(shù)字電路構(gòu)成的,其內(nèi)部數(shù)據(jù)的傳輸和處理都使用二進(jìn)制方式。日常生活中普遍使用十進(jìn)制方式表示數(shù)字,所以在使用計(jì)算機(jī)的時(shí)候需要用到數(shù)制轉(zhuǎn)換。常見(jiàn)的有二進(jìn)制到十進(jìn)制的轉(zhuǎn)換,從事嵌入式開(kāi)發(fā)經(jīng)常會(huì)用到十六進(jìn)制,有的時(shí)候還會(huì)用到八進(jìn)制。二進(jìn)制的特點(diǎn)是“逢2進(jìn)1”。如十進(jìn)制的0對(duì)應(yīng)二進(jìn)制的0,十進(jìn)制的1對(duì)應(yīng)二進(jìn)制的1,十進(jìn)制的2對(duì)應(yīng)二進(jìn)制的10,以此類推。從這個(gè)推演規(guī)律中可以看出,二進(jìn)制數(shù)從右往左每個(gè)位數(shù)都是2的位數(shù)次冪。舉個(gè)例子,二進(jìn)制數(shù)1010轉(zhuǎn)換為十進(jìn)制數(shù):(1010)2=(23x1)+(22x0)+(21x1)+(20x0)=8+0+2+0=(10)102.1.3數(shù)制轉(zhuǎn)換計(jì)算機(jī)是由數(shù)字電路構(gòu)成的,其內(nèi)部數(shù)據(jù)的2.1.3數(shù)制轉(zhuǎn)換十六進(jìn)制二進(jìn)制00000100012001030011401005010160110701118100091001A1010B1011C1100D1101E1110F11112.1.3數(shù)制轉(zhuǎn)換十六進(jìn)制二進(jìn)制0000010001202.2計(jì)算機(jī)組成原理現(xiàn)代計(jì)算機(jī)的構(gòu)造越來(lái)越復(fù)雜,功能也日新月異。但是計(jì)算機(jī)的組成結(jié)構(gòu)從本質(zhì)來(lái)說(shuō)仍然是相同的。一個(gè)計(jì)算機(jī)系統(tǒng)硬件是由中央處理器、存儲(chǔ)系統(tǒng)、總線系統(tǒng)和輸入輸出系統(tǒng)幾個(gè)基本部分組成的。本節(jié)從計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)發(fā)展的角度介紹計(jì)算機(jī)組成和工作原理。2.2計(jì)算機(jī)組成原理現(xiàn)代計(jì)算機(jī)的構(gòu)造越來(lái)越復(fù)雜,功能也日2.2.1計(jì)算機(jī)體系的發(fā)展計(jì)算機(jī)是由硬件系統(tǒng)和軟件系統(tǒng)兩大部分組成的。按照功能又可以劃分為指令系統(tǒng)、存儲(chǔ)系統(tǒng)、輸入輸出系統(tǒng)等。計(jì)算機(jī)體系結(jié)構(gòu)簡(jiǎn)單的說(shuō)就是研究計(jì)算機(jī)各系統(tǒng)和組成部分結(jié)構(gòu)的一門(mén)學(xué)問(wèn)。計(jì)算機(jī)的誕生到現(xiàn)在時(shí)間僅有半個(gè)世紀(jì),但是計(jì)算機(jī)體系結(jié)構(gòu)卻有很大的發(fā)展,出現(xiàn)了許多的體系結(jié)構(gòu)設(shè)計(jì)思想和設(shè)計(jì)方法。從存儲(chǔ)結(jié)構(gòu)來(lái)說(shuō)可以把計(jì)算機(jī)體系分成馮諾依曼結(jié)構(gòu)和哈佛結(jié)構(gòu)。2.2.1計(jì)算機(jī)體系的發(fā)展計(jì)算機(jī)是由硬件系統(tǒng)和軟件系統(tǒng)兩2.2.2中央處理器中央處理器英文全稱是(CentralProcessUnit),簡(jiǎn)稱CPU,是一個(gè)計(jì)算機(jī)系統(tǒng)的核心。CPU是由運(yùn)算器、控制器、寄存器和內(nèi)部總線組成的。在CPU之外再加入總線,存儲(chǔ)設(shè)備輸入輸出設(shè)備就可以構(gòu)成一個(gè)完整的計(jì)算機(jī)系統(tǒng)。CPU有幾個(gè)重要的參數(shù),包括工作頻率、字長(zhǎng)、指令集和緩存。工作頻率通常是用戶最多聽(tīng)到的參數(shù),一個(gè)CPU的工作頻率包括了主頻和外頻以及外部總線頻率。主頻是CPU的實(shí)際工作頻率,外頻是CPU工作的基準(zhǔn)頻率,還有一個(gè)是總線的工作頻率。一般來(lái)說(shuō),工作頻率越高的CPU執(zhí)行指令的速度就越快,但是也不完全如此。2.2.2中央處理器中央處理器英文全稱是(Central2.2.3存儲(chǔ)系統(tǒng)計(jì)算機(jī)在工作中需要從內(nèi)部存儲(chǔ)器中讀取指令和數(shù)據(jù),并且把計(jì)算的結(jié)果存入外部存儲(chǔ)器。由于材料和價(jià)格因素的限制,計(jì)算機(jī)的存儲(chǔ)器件在容量、速度等方面需要匹配。存儲(chǔ)系統(tǒng)的作用就是設(shè)計(jì)一個(gè)讓各種存儲(chǔ)器相互配置達(dá)到最優(yōu)性價(jià)比的方案。2.2.3存儲(chǔ)系統(tǒng)計(jì)算機(jī)在工作中需要從內(nèi)部存儲(chǔ)器中讀取指2.2.4總線系統(tǒng)總線是CPU連接外部設(shè)備的通道。通常包括數(shù)據(jù)總線(DataBus)、地址總線(AddressBus)和控制總線(ControlBus)。地址總線負(fù)責(zé)向外部設(shè)備發(fā)送地址信息;數(shù)據(jù)總線負(fù)責(zé)從外部設(shè)備讀取或者寫(xiě)入信息;控制總線負(fù)責(zé)發(fā)送信號(hào)控制外部設(shè)備。計(jì)算機(jī)的總線系統(tǒng)是由總線和相應(yīng)的控制器構(gòu)成的。如嵌入式系統(tǒng)中常見(jiàn)的I2C總線和SPI總線,特點(diǎn)是控制簡(jiǎn)單,成本低廉,本書(shū)后面會(huì)做具體介紹。其他的還有PCI總線,支持復(fù)雜的功能和很高的系統(tǒng)吞吐量。總線的出現(xiàn)規(guī)范了CPU和外設(shè)之間的通信標(biāo)準(zhǔn),簡(jiǎn)化了外部器件的設(shè)計(jì)。使用一些通用的總線可以有效降低開(kāi)發(fā)成本。2.2.4總線系統(tǒng)總線是CPU連接外部設(shè)備的通道。通常包2.2.5輸入輸出系統(tǒng)輸入輸出系統(tǒng)由外部設(shè)備和輸入輸出控制器組成,是CPU與外部通信的系統(tǒng)。CPU通過(guò)總線與輸入輸出系統(tǒng)相連。由于外部設(shè)備的速度差異,CPU可以使用不同的方式控制外部設(shè)備的訪問(wèn)。常見(jiàn)的有輪詢方式、中斷控制方式和DMA方式。程序中斷方式最簡(jiǎn)單,CPU通過(guò)不斷的查詢某個(gè)外部設(shè)備的狀態(tài),如果外部設(shè)備準(zhǔn)備好,就可以向其發(fā)送數(shù)據(jù)或者讀取數(shù)據(jù)。這種方式由于CPU不斷查詢總線,導(dǎo)致指令執(zhí)行受到影響,效率非常低。2.2.5輸入輸出系統(tǒng)輸入輸出系統(tǒng)由外部設(shè)備和輸入輸出控2.3軟件基礎(chǔ)知識(shí)嵌入式系統(tǒng)的基礎(chǔ)是硬件,軟件是嵌入式系統(tǒng)的靈魂。離開(kāi)了軟件,一個(gè)系統(tǒng)的功能就無(wú)法發(fā)揮。因此軟件設(shè)計(jì)開(kāi)發(fā)是嵌入式系統(tǒng)開(kāi)發(fā)的一個(gè)重要環(huán)節(jié)。本節(jié)介紹軟件的基礎(chǔ)知識(shí),開(kāi)發(fā)流程以及基本的技術(shù)。2.3軟件基礎(chǔ)知識(shí)嵌入式系統(tǒng)的基礎(chǔ)是硬件,軟件是嵌入式系2.3.1什么是軟件使用過(guò)計(jì)算機(jī)的讀者都使用過(guò)各種各樣的軟件,例如最常見(jiàn)的Word文字處理軟件,還有上網(wǎng)使用的瀏覽器等。嚴(yán)格的說(shuō),軟件是由程序和文檔構(gòu)成的,程序是一組按照特定結(jié)構(gòu)組織的指令和數(shù)據(jù)集合。通常軟件可以分成系統(tǒng)軟件和應(yīng)用軟件,以及目前興起的介于二者之間的中間件軟件。系統(tǒng)軟件是使用計(jì)算機(jī)提供的基本功能,例如操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)。它們都不是針對(duì)某種特殊需求,而是面向通用的領(lǐng)域。應(yīng)用軟件是針對(duì)某種特殊需求設(shè)計(jì)的,一般來(lái)說(shuō)具有專門(mén)的功能。比如MP3播放軟件就是針對(duì)播放音樂(lè)設(shè)計(jì)的。軟件的另一個(gè)組成部分是文檔。隨著軟件復(fù)雜程度的提高,文檔也越來(lái)越重要。常見(jiàn)的軟件文檔有開(kāi)發(fā)文檔和用戶文檔,前者面向開(kāi)發(fā)人員,后者面向最終用戶。軟件開(kāi)發(fā)人員應(yīng)該樹(shù)立起編寫(xiě)文檔的好習(xí)慣。2.3.1什么是軟件使用過(guò)計(jì)算機(jī)的讀者都使用過(guò)各種各樣的2.3.2軟件開(kāi)發(fā)流程軟件開(kāi)發(fā)流程是軟件在開(kāi)發(fā)過(guò)程中需要走的步驟,經(jīng)過(guò)幾十年的發(fā)展形成一套公認(rèn)的開(kāi)發(fā)流程。大致可以分成4個(gè)部分:需求分析、設(shè)計(jì)、編碼調(diào)試、測(cè)試和維護(hù)。2.3.2軟件開(kāi)發(fā)流程軟件開(kāi)發(fā)流程是軟件在開(kāi)發(fā)過(guò)程中需要2.3.3常見(jiàn)的軟件開(kāi)發(fā)模型軟件的發(fā)展過(guò)程中,經(jīng)過(guò)前人的總結(jié),設(shè)計(jì)出幾種軟件開(kāi)發(fā)模型。軟件開(kāi)發(fā)模型指定了軟件開(kāi)發(fā)流程中的規(guī)范和參考原則,指導(dǎo)開(kāi)發(fā)人員按照特定的步驟工作。但是,由于現(xiàn)實(shí)的差異性,很少有適用與所有軟件的開(kāi)發(fā)模型,有一些經(jīng)過(guò)驗(yàn)證比較有效的模型供開(kāi)發(fā)人員參考。常見(jiàn)的有瀑布開(kāi)⒛P汀⒃雋靠⒛P鴕約跋衷詒冉先讓諾耐騁蝗砑⒛P停UML)。2.3.3常見(jiàn)的軟件開(kāi)發(fā)模型軟件的發(fā)展過(guò)程中,經(jīng)過(guò)前人的2.3.4計(jì)算機(jī)編程語(yǔ)言計(jì)算機(jī)內(nèi)部是通過(guò)執(zhí)行指令完成各種操作的,無(wú)論是指令還是數(shù)據(jù)在計(jì)算機(jī)內(nèi)部都使用二進(jìn)制表示,對(duì)于用戶的識(shí)別和輸入都很困難。計(jì)算機(jī)編程語(yǔ)言就是為解決這個(gè)問(wèn)題設(shè)計(jì)的。計(jì)算機(jī)編程語(yǔ)言是一種有規(guī)范格式和語(yǔ)法供人類描述計(jì)算機(jī)指令的字符串集合。舉個(gè)例子來(lái)說(shuō),計(jì)算機(jī)內(nèi)部使用二進(jìn)制10100101表示一個(gè)求加法操作,計(jì)算機(jī)語(yǔ)言可以通過(guò)add字符串表示這個(gè)加法操作,便于人類識(shí)別。計(jì)算機(jī)語(yǔ)言可以分成機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言。其中機(jī)器語(yǔ)言是供計(jì)算機(jī)本身識(shí)別的,為二進(jìn)制串。匯編語(yǔ)言是對(duì)機(jī)器語(yǔ)言的抽象,其實(shí)質(zhì)與機(jī)器語(yǔ)言是相同的。匯編語(yǔ)言的指令與機(jī)器語(yǔ)言是一一對(duì)應(yīng)的。此外,匯編語(yǔ)言還設(shè)計(jì)了偽指令和宏指令,幫助編程人員提高開(kāi)發(fā)效率。匯編語(yǔ)言是依賴體系結(jié)構(gòu)的,在一種CPU上能執(zhí)行的匯編語(yǔ)言在其他的CPU很可能就無(wú)法執(zhí)行了。2.3.4計(jì)算機(jī)編程語(yǔ)言計(jì)算機(jī)內(nèi)部是通過(guò)執(zhí)行指令完成各種2.3.5數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)的物理結(jié)構(gòu)描述數(shù)據(jù)元素的存儲(chǔ)結(jié)構(gòu),依賴于具體的計(jì)算機(jī)實(shí)現(xiàn)。例如,一個(gè)統(tǒng)計(jì)表格是數(shù)據(jù)元素之間的邏輯結(jié)構(gòu),但是把表格存放到計(jì)算機(jī)中需要考慮存儲(chǔ)結(jié)構(gòu),可以按照行的順序存儲(chǔ),也可以按照列的順序存儲(chǔ),這就是數(shù)據(jù)的物理結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)還定義了數(shù)據(jù)元素上的操作方法,通常也稱作算法。算法可以理解為一種思路。例如,對(duì)10個(gè)無(wú)序的數(shù)字按照大小排序,可以有冒泡排序、二分排序、插入排序等多種方法。在計(jì)算機(jī)編程中,一個(gè)好的算法可以起到事半功倍的效果。2.3.5數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)的物理結(jié)構(gòu)描述數(shù)據(jù)元素的存儲(chǔ)結(jié)構(gòu),2.4操作系統(tǒng)知識(shí)現(xiàn)代計(jì)算機(jī)的應(yīng)用軟件都是在操作系統(tǒng)下面工作的。嵌入式系統(tǒng)早期應(yīng)用程序是直接運(yùn)行在CPU上,比如單片機(jī)。隨著嵌入式系統(tǒng)硬件處理能力的提升,應(yīng)用也越來(lái)越復(fù)雜,目前主流的嵌入式系統(tǒng)都配備了操作系統(tǒng),應(yīng)用軟件使用操作系統(tǒng)提供的功能。本節(jié)介紹操作系統(tǒng)的知識(shí)。2.4操作系統(tǒng)知識(shí)現(xiàn)代計(jì)算機(jī)的應(yīng)用軟件都是在操作系統(tǒng)下面2.4.1什么是操作系統(tǒng)操作系統(tǒng)是一類特殊的系統(tǒng)軟件。它管理整個(gè)系統(tǒng)的所有硬件和軟件,通常是整個(gè)計(jì)算機(jī)系統(tǒng)中最接近硬件的系統(tǒng)軟件。操作系統(tǒng)屏蔽了硬件的底層特性,向應(yīng)用軟件提供了一個(gè)統(tǒng)一的接口。對(duì)于應(yīng)用軟件來(lái)說(shuō),不需要知道硬件的具體特性,使用操作系統(tǒng)提供的接口即可完成相應(yīng)的功能。除此之外,操作系統(tǒng)通過(guò)特定的算法統(tǒng)籌安排整個(gè)計(jì)算機(jī)系統(tǒng)軟硬件資源,使計(jì)算機(jī)的資源利用率更高,甚至獲得比硬件更多的功能。操作系統(tǒng)是軟件領(lǐng)域一個(gè)重要部分。常見(jiàn)的嵌入式操作系統(tǒng)有μcLinux、vxWorks等。本書(shū)第4章將詳細(xì)講解嵌入式Linux操作系統(tǒng)以及與其他系統(tǒng)之間的對(duì)比。2.4.1什么是操作系統(tǒng)操作系統(tǒng)是一類特殊的系統(tǒng)軟件。它2.4.2操作系統(tǒng)發(fā)展歷史最早的計(jì)算機(jī)沒(méi)有操作系統(tǒng)。在同一時(shí)間,用戶只能通過(guò)打孔機(jī)等外部設(shè)備把程序輸入,計(jì)算機(jī)按照程序執(zhí)行。如果程序出現(xiàn)問(wèn)題,整個(gè)機(jī)器就會(huì)停止工作。后來(lái)把常用的程序設(shè)計(jì)成庫(kù)裝入計(jì)算機(jī),方便用戶使用,這可以算是操作系統(tǒng)的雛形。早期的操作系統(tǒng)多種多樣,在大型機(jī)領(lǐng)域,幾乎每個(gè)系列的計(jì)算機(jī)都有自己的操作系統(tǒng)。這種方式造成資源很大的浪費(fèi),同樣功能的程序在不同的機(jī)器上由于操作系統(tǒng)的不同無(wú)法運(yùn)行。后來(lái),AT&T公司在小型機(jī)上開(kāi)發(fā)成功了UNIX操作系統(tǒng)(幾乎同時(shí)C語(yǔ)言也誕生了),并且免費(fèi)發(fā)放,用戶可以修改其代碼。UNIX的這種授權(quán)方式得到廣泛應(yīng)用,被移植到了各種計(jì)算機(jī)上,是現(xiàn)代操作系統(tǒng)的開(kāi)端。UNIX操作系統(tǒng)的設(shè)計(jì)思想也是現(xiàn)在許多操作系統(tǒng)參考的基礎(chǔ)。2.4.2操作系統(tǒng)發(fā)展歷史最早的計(jì)算機(jī)沒(méi)有操作系統(tǒng)。在同2.4.3操作系統(tǒng)由什么組成按照軟件的結(jié)構(gòu)劃分,操作系統(tǒng)可以分成內(nèi)核、驅(qū)動(dòng)程序和程序庫(kù)。內(nèi)核是操作系統(tǒng)的核心,也是整個(gè)系統(tǒng)軟件的核心。一般來(lái)說(shuō),內(nèi)核從抽象的層面提供最基本的功能,通常代碼短小精煉。驅(qū)動(dòng)程序是計(jì)算機(jī)系統(tǒng)必不可少的一類系統(tǒng)軟件,系統(tǒng)是和驅(qū)動(dòng)程序打交道而不會(huì)直接訪問(wèn)硬件,硬件的具體細(xì)節(jié)有驅(qū)動(dòng)程序完成,是軟硬件的接口。程序庫(kù)是操作系統(tǒng)向用戶提供的程序接口。2.4.3操作系統(tǒng)由什么組成按照軟件的結(jié)構(gòu)劃分,操作系統(tǒng)2.4.4幾種操作系統(tǒng)的設(shè)計(jì)思路層次結(jié)構(gòu)的設(shè)計(jì)思想是把內(nèi)核需要提供的功能劃分出層次,最底層僅提供抽象出來(lái)的最基本的功能,每一層利用下面的一層的功能,依此類推最上面的一層可以提供豐富的功能。這種設(shè)計(jì)思路結(jié)構(gòu)清晰是操作系統(tǒng)內(nèi)核的一大進(jìn)步。微內(nèi)核結(jié)構(gòu)是19世紀(jì)80年代產(chǎn)生的內(nèi)核結(jié)構(gòu)。其設(shè)計(jì)思想是內(nèi)核提供最基本最核心的功能,注重把系統(tǒng)的服務(wù)功能和基本操作分開(kāi)。例如,內(nèi)核只提供中斷處理、內(nèi)存管理等基本功能,網(wǎng)絡(luò)傳輸數(shù)據(jù)之類的功能可以設(shè)計(jì)成一個(gè)系統(tǒng)服務(wù)完成。這種設(shè)計(jì)思路使得內(nèi)核的設(shè)計(jì)更加簡(jiǎn)單,內(nèi)核可以根據(jù)需要啟動(dòng)或者關(guān)閉系統(tǒng)服務(wù),極大的提高了整個(gè)系統(tǒng)的工作效率。此外,微內(nèi)核還會(huì)設(shè)計(jì)一個(gè)硬件抽象層,對(duì)內(nèi)核屏蔽硬件底層特性,讓內(nèi)核可以專注提供各種功能。使用微內(nèi)核結(jié)構(gòu)的系統(tǒng)越來(lái)越多,常見(jiàn)的Linux和WindowsNT都采用了微內(nèi)核的設(shè)計(jì)思想。2.4.4幾種操作系統(tǒng)的設(shè)計(jì)思路層次結(jié)構(gòu)的設(shè)計(jì)思想是把內(nèi)2.4.5操作系統(tǒng)分類按照系統(tǒng)對(duì)任務(wù)的處理相應(yīng)時(shí)間可以把操作系統(tǒng)分成分時(shí)系統(tǒng)和實(shí)時(shí)系統(tǒng)。分時(shí)系統(tǒng)中,不同用戶的進(jìn)程按照一定的策略分別得到CPU資源,未能得到資源的用戶只能等待。實(shí)時(shí)系統(tǒng)則不然,任務(wù)是按照優(yōu)先級(jí)和響應(yīng)時(shí)間分配的,在一個(gè)設(shè)定的響應(yīng)時(shí)間內(nèi),任務(wù)必須得到響應(yīng)。例如導(dǎo)彈攔截系統(tǒng),在收到導(dǎo)彈攔截請(qǐng)求后需要在特定的時(shí)間內(nèi)得到響應(yīng)。實(shí)時(shí)操作系統(tǒng)常用在軍火、航天、電信等領(lǐng)域。分時(shí)操作系統(tǒng)應(yīng)用很廣泛,Linux就是一個(gè)性能優(yōu)越的分時(shí)操作系統(tǒng)。2.4.5操作系統(tǒng)分類按照系統(tǒng)對(duì)任務(wù)的處理相應(yīng)時(shí)間可以把2.5小結(jié)本章概括了嵌入式開(kāi)發(fā)領(lǐng)域軟硬件的基礎(chǔ)知識(shí),包括電路、計(jì)算機(jī)組成原理、軟件的基本知識(shí)以及操作系統(tǒng)。本章的知識(shí)點(diǎn)比較廣泛,讀者只需要了解即可,全書(shū)在涉及到的地方會(huì)詳細(xì)講解各知識(shí)點(diǎn)。第3章講解ARM處理器。2.5小結(jié)本章概括了嵌入式開(kāi)發(fā)領(lǐng)域軟硬件的基礎(chǔ)知識(shí),包括電第3章ARM處理器ARM既是一種嵌入式處理器體系結(jié)構(gòu)的縮寫(xiě),也是一家公司的名字。目前有數(shù)十家公司使用ARM體系結(jié)構(gòu)開(kāi)發(fā)自己的芯片,支持的外部設(shè)備和功能豐富多樣。ARM體系相比其他的體系具有結(jié)構(gòu)簡(jiǎn)單、入門(mén)快等特點(diǎn)。使用ARM核心的處理器雖然眾多,但是核心都是相同的。因此,掌握了ARM的體系結(jié)構(gòu),用不同的處理器只要是基于ARM核心都能很快上手。本章的主要內(nèi)容包括:微處理器和微控制器的關(guān)系A(chǔ)RM處理器介紹ARM體系結(jié)構(gòu)ARM的功能選型第3章ARM處理器ARM既是一種嵌入式處理器體系結(jié)構(gòu)的縮3.1微處理器和微控制器微處理器可以根據(jù)應(yīng)用領(lǐng)域大致分成通用微處理器、嵌入式微處理器和微控制器。通用微處理器主要用于高性能計(jì)算,如常用的PC機(jī)的CPU就是一個(gè)通用微處理器;嵌入式微處理器是針對(duì)某種特定應(yīng)用的高能力計(jì)算,如MP3的解碼、移動(dòng)電話的控制等;微控制器主要用于控制某種設(shè)備,通常集成了多種外部設(shè)備控制器,處理指令的能力一般不是很強(qiáng),但是價(jià)格低廉,多用在汽車(chē)、空調(diào)等設(shè)備上。微控制器除了針對(duì)專門(mén)設(shè)備設(shè)計(jì)以外,還具備微處理器不具備的特點(diǎn)。如很好的環(huán)境適應(yīng)性,可以在特殊的高溫或者低溫環(huán)境工作。這些特點(diǎn)一般的微處理器是不具備的。目前的嵌入式微處理器大多集成了外部設(shè)備控制器,功能不斷增強(qiáng),價(jià)格也在下降。使用嵌入式微處理器替代微控制器俏蠢捶⒄溝那魘啤3.1微處理器和微控制器微處理器可以根據(jù)應(yīng)用領(lǐng)域大致分成3.2ARM處理器介紹ARM是英文AdvancedRISCMachines的縮寫(xiě),中文譯為高性能RISC機(jī)器。從名稱可以看出,ARM是一種基于RISC架構(gòu)的高性能處理器。實(shí)際上ARM同時(shí)也是它的設(shè)計(jì)公司的名字。與其他的嵌入式芯片不同,ARM是由ARM公司設(shè)計(jì)的一種體系結(jié)構(gòu),主要用于出售技術(shù)授權(quán),并不生產(chǎn)芯片。其他芯片設(shè)計(jì)公司可以通過(guò)購(gòu)買(mǎi)ARM的授權(quán),設(shè)計(jì)和生產(chǎn)基于ARM體系的芯片。3.2ARM處理器介紹ARM是英文AdvancedRI3.2.1ARM微處理器的應(yīng)用領(lǐng)域在前面提到ARM已經(jīng)滲透到許多的應(yīng)用領(lǐng)域。1.工業(yè)控制2.無(wú)線通信3.網(wǎng)絡(luò)應(yīng)用4.消費(fèi)電子產(chǎn)品3.2.1ARM微處理器的應(yīng)用領(lǐng)域在前面提到ARM已經(jīng)滲3.2.2ARM的功能特點(diǎn)ARM核心的處理器采用RISC體系結(jié)構(gòu),具有以下優(yōu)點(diǎn):芯片體積小,功耗低,制造成本低,性能優(yōu)異支持Thumb(16位)和ARM(32位)兩種指令集,8位和16位設(shè)備兼容性好由于采用RISC架構(gòu),在內(nèi)部大量使用寄存器,執(zhí)行指令速度快大部分的指令都是操作寄存器,只有很少指令會(huì)訪問(wèn)外部?jī)?nèi)存采用多級(jí)流水線結(jié)構(gòu)處理速度快支持多種尋址方式,數(shù)據(jù)存取方式靈活指令長(zhǎng)度固定,便于編譯器操作以及執(zhí)行指令3.2.2ARM的功能特點(diǎn)ARM核心的處理器采用RISC3.3ARM指令集指令集指一個(gè)微處理器所有指令的集合,每種微處理器都有自己的指令集。在第2章講過(guò)處理器的指令集可以分成CISC(復(fù)雜指令集)和RISC(精簡(jiǎn)指令集)兩種,ARM處理器使用RISC(精簡(jiǎn)指令集)。精簡(jiǎn)指令集的最大特點(diǎn)是所有的指令占用相同的存儲(chǔ)空間。ARM處理器支持ARM和Thumb兩種指令集:ARM指令集工作在32位模式下,指令長(zhǎng)度都是32比特;Thumb指令集工作在16位模式下,指令長(zhǎng)度都是16比特。ARM指令集按照功能可以分為算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、分支指令、軟件中斷指令和程序數(shù)據(jù)裝載指令等。3.3ARM指令集指令集指一個(gè)微處理器所有指令的集合,每3.3.1算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令用于普通數(shù)據(jù)計(jì)算。常見(jiàn)的指令有ADD、ADC、SUB和SBC。1.ADD指令2.ADC指令3.SUB指令4.SBC指令3.3.1算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令用于普通數(shù)據(jù)計(jì)算。常見(jiàn)3.3.2邏輯運(yùn)算指令邏輯運(yùn)算不同與算術(shù)運(yùn)算。邏輯運(yùn)算按照邏輯代數(shù)的運(yùn)算法則操作數(shù)據(jù),得到邏輯結(jié)果。1.AND指令2.EOR指令3.MOV指令3.3.2邏輯運(yùn)算指令邏輯運(yùn)算不同與算術(shù)運(yùn)算。邏輯運(yùn)算按3.2.3分支指令在匯編語(yǔ)言中,代碼的跳轉(zhuǎn)都是通過(guò)分支指令完成了,ARM的分支指令比較簡(jiǎn)單,本書(shū)介紹最基本的分支指令——B指令。B指令可以根據(jù)設(shè)置的條件跳轉(zhuǎn)到指定的代碼地址。格式:B{條件}<地址>B指令是分支跳轉(zhuǎn)指令。程序中遇到B指令會(huì)立即跳轉(zhuǎn)到指定地址,然后繼續(xù)從新的地址開(kāi)始運(yùn)行程序。高級(jí)語(yǔ)言(例如C語(yǔ)言)的goto語(yǔ)句常被翻譯成B指令。3.2.3分支指令在匯編語(yǔ)言中,代碼的跳轉(zhuǎn)都是通過(guò)分支指3.2.4數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令用于CPU和存儲(chǔ)器之間的數(shù)據(jù)傳送,是ARM處理器唯一能與外部存儲(chǔ)器交換數(shù)據(jù)的一類指令。1.單一數(shù)據(jù)傳送指令2.多數(shù)據(jù)傳送指令3.2.4數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令用于CPU和存儲(chǔ)器之間3.4ARM的結(jié)構(gòu)基于ARM的芯片有許多,功能結(jié)構(gòu)也不同,但是最基本的是ARM核。無(wú)論學(xué)習(xí)哪種ARM類型的處理器,基本的內(nèi)容都是一樣的。本節(jié)介紹ARM體系結(jié)構(gòu)。內(nèi)容相對(duì)比較抽象,讀者可以在后面的開(kāi)發(fā)過(guò)程中結(jié)合本節(jié)知識(shí)深入體會(huì)。3.4ARM的結(jié)構(gòu)基于ARM的芯片有許多,功能結(jié)構(gòu)也不同3.4.1ARM體系結(jié)構(gòu)的命名方法ARM體系結(jié)構(gòu)的命名可以分成兩部分,一部分是ARM體系版本的命名,另一部分是ARM體系版本的處理器命名。ARM體系到目前一共發(fā)布了9個(gè)系列的版本,每種版本都可以支持不同的指令集和特殊功能。指令集縮寫(xiě)含義TThumb指令集M長(zhǎng)乘法指令集E增強(qiáng)DSP指令集J支持Java加速器SIMD多媒體功能擴(kuò)展指令集3.4.1ARM體系結(jié)構(gòu)的命名方法ARM體系結(jié)構(gòu)的命名可3.4.2處理器系列劃分在確定了一種ARM體系結(jié)構(gòu)后,可以形成一系列處理器。不過(guò),處理器的命名主要是功能上的一些細(xì)小差別,基本的核心是相同的。功能縮寫(xiě)含義T支持Thumb指令集D支持片上調(diào)試M支持快速乘法器I支持嵌入式ICE調(diào)試E支持增強(qiáng)DSP指令J支持Java程序加速F支持浮點(diǎn)運(yùn)算單元-S綜合版本,支持所有功能3.4.2處理器系列劃分在確定了一種ARM體系結(jié)構(gòu)后,可3.4.3處理器工作模式ARM微處理器可以在工作中隨時(shí)切換狀態(tài)。切換工作狀態(tài)不會(huì)影響工作模式和寄存器的內(nèi)容。但是ARM體系要求在處理器啟動(dòng)的時(shí)候應(yīng)該處于ARM狀態(tài)。ARM處理器使用操作寄存器的0位表示工作狀態(tài),取值是1時(shí)代表Thumb狀態(tài),取值是0時(shí)是ARM狀態(tài)。可以使用BX指令可以切換狀態(tài)。當(dāng)處理器啟動(dòng)的時(shí)候操作寄存器取值為0,保證了默認(rèn)進(jìn)入ARM狀態(tài)。ARM處理器支持7種工作模式,這對(duì)一些通用處理器來(lái)說(shuō)確實(shí)有點(diǎn)多。不過(guò),通過(guò)分析可以發(fā)現(xiàn),ARM的工作模式大多都是處理外部中斷和異常的,只不過(guò)是對(duì)異常和中斷的分類比較詳細(xì)。7種工作模式定義請(qǐng)參考。3.4.3處理器工作模式ARM微處理器可以在工作中隨時(shí)切3.4.3處理器工作模式功能縮寫(xiě)含義T支持Thumb指令集D支持片上調(diào)試M支持快速乘法器I支持嵌入式ICE調(diào)試E支持增強(qiáng)DSP指令J支持Java程序加速F支持浮點(diǎn)運(yùn)算單元-S綜合版本,支持所有功能3.4.3處理器工作模式功能縮寫(xiě)含義T支持Thumb指令3.4.4存儲(chǔ)系統(tǒng)嵌入式微處理器大多采用一種線性的存儲(chǔ)管理模式,ARM也是如此。這種管理模式的特點(diǎn)是,系統(tǒng)內(nèi)所有的存儲(chǔ)器和外部設(shè)備都被安排到一個(gè)統(tǒng)一的地址空間,通過(guò)地址映射到不同的設(shè)備,訪問(wèn)某個(gè)設(shè)備只需要訪問(wèn)該設(shè)備映射的內(nèi)存地址即可。線性地址空間便于處理器的管理和用戶操作。在操作超過(guò)8位的數(shù)據(jù)時(shí),存在兩種不同的訪問(wèn)方法:大字端模式和小字端模式。3.4.4存儲(chǔ)系統(tǒng)嵌入式微處理器大多采用一種線性的存儲(chǔ)管3.4.4存儲(chǔ)系統(tǒng)3.4.4存儲(chǔ)系統(tǒng)3.4.5尋址方式尋址就是根據(jù)指令中的地址碼找出操作數(shù)地址的過(guò)程,是計(jì)算機(jī)中很重要的一個(gè)部分。對(duì)編寫(xiě)程序來(lái)說(shuō),不同的尋址方式是存取速度和存取空間權(quán)衡的一個(gè)考慮因素。本書(shū)介紹7種常見(jiàn)的ARM處理器尋址模式。1.立即尋址2.寄存器尋址方式3.寄存器偏移尋址4.寄存器間接尋址5.基址尋址6.多寄存器尋址7.棧尋址3.4.5尋址方式尋址就是根據(jù)指令中的地址碼找出操作數(shù)地3.4.5尋址方式操作名稱功能LSL(LogicalShiftLeft)邏輯左移寄存器的二進(jìn)制位從右往左移動(dòng),空出的位補(bǔ)0LSR(LogicalShiftRight)邏輯右移寄存器的二進(jìn)制位從左往右移動(dòng),空出的位補(bǔ)0ASR(ArithmeticShiftRight)算術(shù)右移移位過(guò)程中保持符號(hào)位不變,即如果源操作數(shù)為正數(shù),則字的高端空出的位補(bǔ)0,否則補(bǔ)1ROR(RotateRight)循環(huán)右移寄存器的低端移出的位填入字的高端空出的位RRX(RotateRighteXtendedby1place)帶擴(kuò)展的循環(huán)右移操作數(shù)右移一位,高端空出的位用原C標(biāo)志值填充3.4.5尋址方式操作名稱功能LSL(LogicalS3.5ARM的功能選型隨著嵌入式應(yīng)用的發(fā)展,ARM芯片的使用也不斷增多。但是,由于ARM公司的技術(shù)授權(quán),許多廠商都在生產(chǎn)基于ARM核的芯片,給用戶的選擇帶來(lái)一定困難。本節(jié)從ARM芯片的結(jié)構(gòu)和功能出發(fā),介紹在ARM芯片的選型過(guò)程中需要注意的問(wèn)題,并且在最后給出幾種ARM芯片介紹。3.5ARM的功能選型隨著嵌入式應(yīng)用的發(fā)展,ARM芯片的3.5.1ARM的選型原則基于ARM核的處理器眾多,功能相差也很大。選型主要從應(yīng)用角度出發(fā),根據(jù)功能的需求,是否有升級(jí)要求以及成本等多方面考慮。下面從技術(shù)角度介紹一下ARM選型考慮的因素。1.ARM核心 2.時(shí)鐘控制器3.內(nèi)部存儲(chǔ)器 4.中斷控制器5.GPIO 6.實(shí)時(shí)鐘RTC7.串行控制器 8.WatchDog9.電源管理功能 10.DMA控制器11.I2C接口 12.ADC和DAC控制器13.LCD控制器 14.USB接口15.I2S接口3.5.1ARM的選型原則基于ARM核的處理器眾多,功能3.5.1ARM的選型原則芯片型號(hào)供應(yīng)商FLASH容量(Bytes)SRAM容量(Bytes)AT91FR4081ATMEL1M128KSAA7750Philips384K64KHMS30C7202Hynix192K無(wú)LC67F500Snayo640K32K3.5.1ARM的選型原則芯片型號(hào)供應(yīng)商FLASH容量(3.5.2幾種常見(jiàn)的ARM核處理器選型參考介紹了ARM的功能選型以后,這里介紹在不同領(lǐng)域里幾種ARM核的芯片。1.Intel的IXP處理器2.Philips的LPC處理器3.三星的S3C244X處理器3.5.2幾種常見(jiàn)的ARM核處理器選型參考介紹了ARM的3.6小結(jié)本章介紹了ARM處理器相關(guān)的知識(shí)。包括微處理器和微控制器的概念和差異,介紹了ARM的體系結(jié)構(gòu)特點(diǎn)和功能選型,最后給出了幾個(gè)不同領(lǐng)域ARM核的芯片介紹。本章的內(nèi)容偏重理論的較多,讀者需要建立相關(guān)名詞和術(shù)語(yǔ)的概念,在后面章節(jié)涉及到具體應(yīng)用的時(shí)候會(huì)用到。隨著實(shí)踐的增多,讀者會(huì)不斷加深對(duì)這些概念的理解。第4章介紹嵌入式Linux基本知識(shí)。3.6小結(jié)本章介紹了ARM處理器相關(guān)的知識(shí)。包括微處理器第4章嵌入式LinuxLinux是嵌入式領(lǐng)域應(yīng)用最廣泛的操作系統(tǒng)之一。本書(shū)的主題也是嵌入式Linux開(kāi)發(fā),在進(jìn)入具體內(nèi)容之前,有必要了解嵌入式Linux系統(tǒng)相關(guān)的知識(shí)。本章從介紹嵌入式系統(tǒng)開(kāi)始引入Linux的概念,主要內(nèi)容如下:什么是嵌入式操作系統(tǒng)常見(jiàn)的嵌入式操作系統(tǒng)對(duì)比嵌入式Linux系統(tǒng)入門(mén)常見(jiàn)的嵌入式Linux系統(tǒng)第4章嵌入式LinuxLinux是嵌入式領(lǐng)域應(yīng)用最廣泛的4.1常見(jiàn)的嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)通俗的說(shuō)就是為嵌入式系統(tǒng)設(shè)計(jì)的操作系統(tǒng),是運(yùn)行在嵌入式硬件上的一類系統(tǒng)軟件。嵌入式系統(tǒng)負(fù)責(zé)管理系統(tǒng)資源為用戶提供調(diào)用接口,方便用戶應(yīng)用程序開(kāi)發(fā)。一般來(lái)說(shuō),嵌入式操作系統(tǒng)是由啟動(dòng)程序(Bootloader)、核心(Kernel)、根文件系統(tǒng)(RootFileSystem)組成的。通過(guò)特殊的燒錄工具把編譯好的嵌入式系統(tǒng)文件映像燒寫(xiě)到目標(biāo)板的只讀存儲(chǔ)器(ROM)或者Flash存儲(chǔ)器。一個(gè)嵌入式系統(tǒng)的性能好壞很大程度上決定了整個(gè)嵌入式系統(tǒng)的性能。按照實(shí)時(shí)性能,嵌入式系統(tǒng)操作系統(tǒng)可以分成實(shí)時(shí)系統(tǒng)和分時(shí)系統(tǒng)。實(shí)時(shí)系統(tǒng)主要用在控制和通信領(lǐng)域,分時(shí)系統(tǒng)主要用在消費(fèi)類電子產(chǎn)品。本節(jié)介紹幾種常見(jiàn)的嵌入式操作系統(tǒng)。4.1常見(jiàn)的嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)通俗的說(shuō)就是為嵌4.1.1VxWorksVxWorks是美國(guó)WindRiver公司(國(guó)內(nèi)也稱作風(fēng)河公司)開(kāi)發(fā)的高性能實(shí)時(shí)嵌入式操作系統(tǒng)。其特點(diǎn)是使用了自己開(kāi)發(fā)的WIND內(nèi)核,有著很高的實(shí)時(shí)性能。VxWorks系統(tǒng)內(nèi)核是由進(jìn)程管理、存儲(chǔ)管理、設(shè)備管理、文件管理、網(wǎng)絡(luò)協(xié)議等組成。內(nèi)核占用很小的存儲(chǔ)空間,最小的WIND內(nèi)核可以配置到編譯后僅有十幾KB大小。精煉的內(nèi)核保證了優(yōu)異的實(shí)時(shí)性能。VxWorks系統(tǒng)被用在美國(guó)的火星探測(cè)器上,可見(jiàn)其穩(wěn)定性和實(shí)時(shí)性確實(shí)很高。4.1.1VxWorksVxWorks是美國(guó)WindRi4.1.2WindowsCEWindowsCE是微軟公司為嵌入式產(chǎn)品設(shè)計(jì)的一種嵌入式操作系統(tǒng),主要針對(duì)需要多線程、多任務(wù)而且資源有限的設(shè)備。該系統(tǒng)采用模塊化設(shè)計(jì),開(kāi)發(fā)人員可以定制不同的功能。WindowCE系統(tǒng)支持豐富的外部硬件設(shè)備,包括鍵盤(pán)、鼠標(biāo)、觸摸板、串口、網(wǎng)口、USB、音頻設(shè)備等。并且該系統(tǒng)有與Windows一致的圖形界面,可以很好的提高用戶體驗(yàn)。WindowsCE的一個(gè)最大特點(diǎn)就是支持上千個(gè)微軟Win32編程接口(MicrosoftWin32API)。在Windows下開(kāi)發(fā)過(guò)應(yīng)用程序的程序員可以很快的上手WindowsCE。此外,WindowsCE還支持PC機(jī)上的模擬器,用戶可以從模擬器上開(kāi)發(fā)應(yīng)用,調(diào)試完畢后再下載到目標(biāo)板執(zhí)行,提高了開(kāi)發(fā)效率。WindwosCE系統(tǒng)設(shè)計(jì)簡(jiǎn)單靈活,主要應(yīng)用在各種小型設(shè)備,例如掌上電腦、餐廳點(diǎn)餐器等設(shè)備上。4.1.2WindowsCEWindowsCE是微軟公4.1.3PalmOSPalm是3Com公司開(kāi)發(fā)的一種掌上電腦產(chǎn)品。PalmOS是為該掌上電腦專門(mén)設(shè)計(jì)的一種32位嵌入式操作系統(tǒng)。PalmOS在設(shè)計(jì)的時(shí)候就充分的考慮到掌上電腦資源緊張的情況,適合內(nèi)存較小的掌上電腦使用。除此之外,PalmOS提供了一個(gè)開(kāi)發(fā)的操作系統(tǒng)接口,其他廠商和用戶可以為其編寫(xiě)應(yīng)用程序。目前運(yùn)行在PalmOS系統(tǒng)上的應(yīng)用程序已經(jīng)超過(guò)1千種。PalmOS最大限度的考慮了節(jié)能和硬件資源問(wèn)題,提供了良好的電源管理功能和合理的內(nèi)存管理功能。Palm設(shè)備的內(nèi)存都是可讀寫(xiě)的RAM,所以訪問(wèn)速度非???。此外PalmOS還有很強(qiáng)的同步能力,可以與PC機(jī)同步數(shù)據(jù)。4.1.3PalmOSPalm是3Com公司開(kāi)發(fā)的一種掌4.1.4SymbianSymbianOS中文名稱叫做塞班系統(tǒng),是由諾基亞、索尼愛(ài)立信、摩托羅拉等幾家移動(dòng)通信設(shè)備制造商聯(lián)合設(shè)計(jì)的嵌入式操作系統(tǒng)。塞班系統(tǒng)主要針對(duì)手機(jī),設(shè)計(jì)目標(biāo)是簡(jiǎn)單易用。目前在移動(dòng)智能終端方面塞班的市場(chǎng)占有率非常大。塞班系統(tǒng)有一個(gè)強(qiáng)大的核心,支持對(duì)象導(dǎo)向系統(tǒng)和SunJava語(yǔ)言。該系統(tǒng)的應(yīng)用程序主要使用C++和Java開(kāi)發(fā),從應(yīng)用開(kāi)發(fā)角度可以縮短開(kāi)發(fā)周期。塞班系統(tǒng)本身支持多種外部設(shè)備,而且為廠商和用戶留有豐富的接口并且提供了開(kāi)發(fā)工具。用戶可以很快的在塞班系統(tǒng)開(kāi)發(fā)應(yīng)用程序。目前塞班系統(tǒng)已經(jīng)廣泛的應(yīng)用在諾基亞手機(jī)上。4.1.4SymbianSymbianOS中文名稱叫做塞4.2嵌入式Linux操作系統(tǒng)4.1節(jié)介紹的幾種嵌入式操作系統(tǒng)都是商業(yè)系統(tǒng)。雖然有良好的性能和開(kāi)發(fā)工具支持,但是對(duì)于學(xué)習(xí)嵌入式開(kāi)發(fā)的人來(lái)說(shuō),無(wú)論從成本和學(xué)習(xí)難度方面都是不小的挑戰(zhàn)。本節(jié)介紹著名的Linux操作系統(tǒng)以及嵌入式領(lǐng)域的應(yīng)用。4.2嵌入式Linux操作系統(tǒng)4.1節(jié)介紹的幾種嵌入式操4.2.1什么是Linux許多讀者可能都聽(tīng)說(shuō)過(guò)Linux操作系統(tǒng)。Linux系統(tǒng)是一個(gè)免費(fèi)使用的類似UNIX操作系統(tǒng),最初運(yùn)行在x86體系結(jié)構(gòu),目前已經(jīng)被移植到數(shù)十種處理器上。Linux最初由芬蘭的一位計(jì)算機(jī)愛(ài)好者LinusTorvalds設(shè)計(jì)開(kāi)發(fā),經(jīng)過(guò)十余年的發(fā)展,現(xiàn)在該系統(tǒng)已經(jīng)是一個(gè)非常龐大、功能完善的操作系統(tǒng)。Linux系統(tǒng)的開(kāi)發(fā)和維護(hù)是由分布在全球各地的數(shù)百名程序員完成的,這得益于它的源代碼開(kāi)放特性。與商業(yè)系統(tǒng)相比,Linux系統(tǒng)在功能上一點(diǎn)都不差,甚至在許多方面要超過(guò)一些著名的商業(yè)操作系統(tǒng)。Linux不僅支持豐富的硬件設(shè)備、文件系統(tǒng),更主要的是它提供了完整的源代碼和開(kāi)發(fā)工具。對(duì)于嵌入式開(kāi)發(fā)來(lái)說(shuō),使用Linux系統(tǒng)可以幫助用戶從底層了解嵌入式開(kāi)發(fā)的全過(guò)程,以及一個(gè)操作系統(tǒng)內(nèi)部是如何運(yùn)作的。學(xué)習(xí)Linux系統(tǒng)開(kāi)發(fā)對(duì)初學(xué)者有很大的幫助。4.2.1什么是Linux許多讀者可能都聽(tīng)說(shuō)過(guò)Linux4.2.2Linux與UNIX的不同——GPL版權(quán)協(xié)議介紹UNIX是一種商業(yè)系統(tǒng)的名稱也是注冊(cè)商標(biāo),有著嚴(yán)格的商業(yè)版權(quán)。Linux系統(tǒng)在界面功能方面與UNIX很相似,但是在版權(quán)方面有很大不同。Linux使用了GNU的GPL版權(quán)協(xié)議,實(shí)際上,Linux系統(tǒng)的發(fā)展很大程度上也依賴了GPL版權(quán)協(xié)議。GNU是美國(guó)自由軟件基金會(huì)創(chuàng)建的一個(gè)非盈利組織,GNU致力于設(shè)計(jì)和推廣自由軟件,它的所有軟件都是基于GPL版權(quán)協(xié)議的。GPL版權(quán)協(xié)議僅是多種軟件協(xié)議中的一種,實(shí)際上,開(kāi)發(fā)源代碼的版權(quán)協(xié)議還有許多。與傳統(tǒng)的商業(yè)軟件不開(kāi)放源代碼相比,采用GPL版權(quán)協(xié)議的開(kāi)放源代碼(簡(jiǎn)稱開(kāi)源)軟件對(duì)于用戶的影響很大。用戶可以自由加入到某個(gè)軟件的開(kāi)發(fā)中,不斷的升級(jí)和開(kāi)發(fā)新的軟件和功能,極大的促進(jìn)了軟件行業(yè)的發(fā)展。同時(shí),普通用戶也可以讀到一些頂尖高手編寫(xiě)的程序,從中學(xué)習(xí)知識(shí),這也是GPL版權(quán)協(xié)議的一個(gè)初衷。4.2.2Linux與UNIX的不同——GPL版權(quán)協(xié)議介4.2.3Linux發(fā)行版Linux系統(tǒng)是開(kāi)放的,任何人都可以制作自己的系統(tǒng),因此出現(xiàn)了許多廠商和個(gè)人都在發(fā)行自己的Linux系統(tǒng)。據(jù)統(tǒng)計(jì),目前Linux的發(fā)行版已經(jīng)超過(guò)300種,而且還在不斷增加。如此多的發(fā)行版,對(duì)于任何一個(gè)人都是不可能完全學(xué)習(xí)的,本節(jié)介紹幾種國(guó)內(nèi)常見(jiàn)的Linux發(fā)行版供讀者參考。1.RedHat2.Debian3.Ubuntu4.2.3Linux發(fā)行版Linux系統(tǒng)是開(kāi)放的,任何人4.2.4常見(jiàn)的嵌入式Linux系統(tǒng)在4.2.3節(jié)講到的都是安裝在PC機(jī)上的Linux系統(tǒng),本節(jié)介紹幾種嵌入式領(lǐng)域用到的Linux發(fā)行版。通常這些發(fā)行版被統(tǒng)稱為“嵌入式Linux系統(tǒng)”。1.RT-Linux嵌入式系統(tǒng)2.μClinux嵌入式系統(tǒng)4.2.4常見(jiàn)的嵌入式Linux系統(tǒng)在4.2.3節(jié)講到的4.3小結(jié)本章講解了嵌入式Linux系統(tǒng)的入門(mén)知識(shí),以及一些常見(jiàn)的嵌入式操作系統(tǒng)。嵌入式Linux系統(tǒng)是新興的一門(mén)技術(shù),還在不斷的發(fā)展中。目前的嵌入式Linux系統(tǒng)種類繁多,但是萬(wàn)變不離其宗。讀者在了解這些系統(tǒng)的同時(shí),還是需要從掌握基本的Linux系統(tǒng)開(kāi)始入手。第5章介紹如何搭建嵌入式Linux開(kāi)發(fā)環(huán)境。4.3小結(jié)本章講解了嵌入式Linux系統(tǒng)的入門(mén)知識(shí),以及第5章建立軟件開(kāi)發(fā)環(huán)境工欲善其事,必先利其器。在進(jìn)行嵌入式軟件開(kāi)發(fā)工作之前,必須建立一個(gè)開(kāi)發(fā)環(huán)境。開(kāi)發(fā)環(huán)境包括了操作系統(tǒng)、編譯器、調(diào)試器、集成開(kāi)發(fā)環(huán)境、各種輔助工具等。嵌入式Linux開(kāi)發(fā)需要在主機(jī)上開(kāi)發(fā)目標(biāo)系統(tǒng)的程序,建立主機(jī)開(kāi)發(fā)環(huán)境可以在Linux系統(tǒng)下,也可以是Windows系統(tǒng)。在兩種系統(tǒng)建立開(kāi)發(fā)環(huán)境各有利弊,本章講解Linux系統(tǒng)和Windows系統(tǒng)如何搭建嵌入式開(kāi)發(fā)環(huán)境,主要內(nèi)容如下:安裝獨(dú)立的Linux發(fā)行版搭建Linux發(fā)行版下的開(kāi)發(fā)環(huán)境在Windows系統(tǒng)安裝Linux系統(tǒng)模擬環(huán)境Linux系統(tǒng)常見(jiàn)命令和工具Windows系統(tǒng)常用工具ADS集成開(kāi)發(fā)環(huán)境第5章建立軟件開(kāi)發(fā)環(huán)境工欲善其事,必先利其器。在進(jìn)行嵌入5.1獨(dú)立的Linux系統(tǒng)本節(jié)介紹的Linux系統(tǒng)需要單獨(dú)安裝在PC機(jī)的磁盤(pán)分區(qū),讀者在操作之前需要做好準(zhǔn)備,備份好數(shù)據(jù)。目前的Linux系統(tǒng)發(fā)行版有許多,UbuntuLinux界面貼近用戶,軟件安裝配置簡(jiǎn)單,適合初學(xué)者學(xué)習(xí)使用。本書(shū)使用UbuntuLinux8.04發(fā)行版本作為嵌入式Linux開(kāi)發(fā)的主機(jī)環(huán)境。5.1獨(dú)立的Linux系統(tǒng)本節(jié)介紹的Linux系統(tǒng)需要單5.1.1安裝UbuntuLinux在安裝之前,需要確認(rèn)有足夠的磁盤(pán)空間供安裝UbuntuLinux。在筆者的機(jī)器上使用Windows的磁盤(pán)管理程序查看硬盤(pán)分區(qū)。5.1.1安裝UbuntuLinux在安裝之前,需要確5.1.2關(guān)鍵一步-系統(tǒng)的網(wǎng)絡(luò)設(shè)置UbuntuLinux使用了apt管理軟件包。apt是一種給予Debian系統(tǒng)deb包的管理器,最大的特點(diǎn)就是從網(wǎng)絡(luò)安裝軟件包,并且能自動(dòng)獲取每個(gè)軟件包的依賴關(guān)系,安裝正確的軟件包。由此可見(jiàn),網(wǎng)絡(luò)對(duì)于UbuntuLinux系統(tǒng)的重要性。在安裝其他的軟件包之前,首先是設(shè)置Ubuntu的網(wǎng)絡(luò)。Ubuntu的網(wǎng)絡(luò)配置文件主要有/etc/network/interfaces和/etc/resov.conf兩個(gè)文件。其中,/etc/network/interfaces文件是配置網(wǎng)絡(luò)接口卡(網(wǎng)卡)和網(wǎng)關(guān)地址,內(nèi)容如下:ifaceloinetloopback #環(huán)回設(shè)備loopback配置ifaceeth0inetstatic #第一個(gè)以太網(wǎng)卡設(shè)備eth0,使用靜態(tài)配置address20 #配置IP地址netmask #配置掩碼gateway #設(shè)置網(wǎng)關(guān)5.1.2關(guān)鍵一步-系統(tǒng)的網(wǎng)絡(luò)設(shè)置UbuntuLinu5.1.3其他必要的設(shè)置設(shè)置好網(wǎng)絡(luò)之后,最關(guān)鍵的就是設(shè)置apt的源。apt使用/etc/apt/sources.list文件記錄軟件包服務(wù)器的配置信息,這些軟件包服務(wù)器地址被稱作源。在使用apt命令安裝軟件包的時(shí)候,會(huì)從源服務(wù)器下載并安裝軟件包。Ubuntu自己的源服務(wù)器在美國(guó),在其他國(guó)家都有鏡像服務(wù)器,讀者可以選擇一個(gè)離自己較近的服務(wù)器,可以提高下載文件速度。在國(guó)內(nèi)目前有兩個(gè)比較好的源服務(wù)器:一個(gè)是由提供的,一個(gè)是由提供的。5.1.3其他必要的設(shè)置設(shè)置好網(wǎng)絡(luò)之后,最關(guān)鍵的就是設(shè)置5.1.4怎樣安裝卸載軟件Ubuntu安裝卸載軟件都非常方便,使用apt-get命令可以完成軟件的管理。具體格式如下:apt-getinstall<軟件包名稱>apt-getuninstall<軟件包名稱>5.1.4怎樣安裝卸載軟件Ubuntu安裝卸載軟件都非常5.1.5怎樣配置系統(tǒng)服務(wù)在Ubuntu下配置系統(tǒng)服務(wù)非常簡(jiǎn)單,需要一個(gè)名為sysv-rc-conf的軟件包。使用“sudoapt-getinstallsysv-rc-conf”命令安裝軟件包,安裝完畢后在Shell終端輸入“sudosysv-rc-conf”,出現(xiàn)一個(gè)文本界面。其中最左邊是系統(tǒng)的服務(wù)名稱,右邊依次是系統(tǒng)運(yùn)行級(jí)別1~6。每個(gè)系統(tǒng)服務(wù)在對(duì)應(yīng)的系統(tǒng)級(jí)別下都可以選擇‘X’表示在該級(jí)別下啟動(dòng),去掉‘X’表示不啟動(dòng)。用戶根據(jù)需要選擇以后,鍵入字母‘Q’保存退出。5.1.5怎樣配置系統(tǒng)服務(wù)在Ubuntu下配置系統(tǒng)服務(wù)非5.1.6安裝主要的開(kāi)發(fā)工具UbuntuLinux把主要的開(kāi)發(fā)工具打包放在一起,安裝的時(shí)候直接安裝一個(gè)軟件包就可以把基本的開(kāi)發(fā)工具和程序都裝到系統(tǒng)。(1)安裝基本的開(kāi)發(fā)工具。(2)檢查開(kāi)發(fā)工具是否安裝成功。5.1.6安裝主要的開(kāi)發(fā)工具UbuntuLinux把主5.1.7安裝其他的開(kāi)發(fā)工具和文檔主要開(kāi)發(fā)工具安裝完畢后,僅能保證編譯和調(diào)試程序。對(duì)于大部分開(kāi)源軟件來(lái)說(shuō),還需要autoconf、automake等工具。其他工具的安裝命令如下:sudoapt-getinstallautoconfautomake1.9 sudoapt-getinstallflexbison sudoapt-getinstallmanpages-dev sudoapt-getinstallbinutils-doccpp-docgcc-docglibc-docstl-manual 5.1.7安裝其他的開(kāi)發(fā)工具和文檔主要開(kāi)發(fā)工具安裝完畢后5.2運(yùn)行在Windows上的Linux系統(tǒng)對(duì)于多數(shù)沒(méi)有使用過(guò)Linux系統(tǒng)的讀者來(lái)說(shuō),初次使用Linux開(kāi)發(fā)會(huì)遇到許多問(wèn)題。初學(xué)者可以通過(guò)首先在Windows系統(tǒng)下使用類似Linux的模擬環(huán)境熟悉一下。此外,在Linux模擬環(huán)境下可以完成大多數(shù)的Linux系統(tǒng)操作。Windows下的Linux模擬環(huán)境有許多,其中應(yīng)用最廣泛的是Cygwin系統(tǒng)。5.2運(yùn)行在Windows上的Linux系統(tǒng)對(duì)于多數(shù)沒(méi)有5.2.1什么是CygwinCygwin是Cygnus公司開(kāi)發(fā)的運(yùn)行在Windows平臺(tái)的Linux系統(tǒng)模擬環(huán)境,該軟件是自由軟件。Cygwin對(duì)學(xué)習(xí)Linux使用,以及Windows和Linux系統(tǒng)之間應(yīng)用程序的移植都有很大幫助。在嵌入式開(kāi)發(fā)領(lǐng)域,由于Cygwin的優(yōu)點(diǎn)被越來(lái)越多開(kāi)發(fā)人員使用。Cygwin的設(shè)計(jì)思想十分巧妙。與其他工具不同的是,Cygwin沒(méi)有逐個(gè)把Linux下的工具移植到Windows系統(tǒng),而是在Windows系統(tǒng)上設(shè)計(jì)了一個(gè)Linux系統(tǒng)調(diào)用中間層。Linux系統(tǒng)調(diào)用中間層的作用是在Windows系統(tǒng)模擬Linux的系統(tǒng)調(diào)用,之后只需要把Linux下的工具在Windows系統(tǒng)重新編譯,做一些較小的修改即可移植到Windows系統(tǒng)。Cygwin幾乎移植了Linux系統(tǒng)常用的所有開(kāi)發(fā)工具到Windows系統(tǒng),使用戶感覺(jué)就好像在Linux系統(tǒng)下工作,為用戶在Windows下開(kāi)發(fā)Linux程序提供了保障。5.2.1什么是CygwinCygwin是Cygnus公5.2.2如何安裝CygwinCygwin的安裝比較簡(jiǎn)單。Cygwin支持網(wǎng)絡(luò)在線安裝和從本地安裝兩種模式,由于Cygwin的服務(wù)器在國(guó)外,建議國(guó)內(nèi)用戶下載Cygwin的本地安裝包從本地安裝。首先從下載軟件安裝包,本書(shū)使用的是2版本,其他版本的安裝過(guò)程相同。5.2.2如何安裝CygwinCygwin的安裝比較簡(jiǎn)單5.2.3安裝開(kāi)發(fā)環(huán)境Cygwin在安裝包中自帶了絕大多數(shù)的Linux軟件和工具在Windows系統(tǒng)的移植版本。默認(rèn)的軟件包選項(xiàng)自帶了基本的開(kāi)發(fā)工具,安裝好無(wú)需配置可以使用GNU的開(kāi)發(fā)環(huán)境。為了驗(yàn)證是開(kāi)發(fā)環(huán)境是否安裝成功,查看各開(kāi)發(fā)工具的版本:$gcc--versiongcc(GCC)3.4.4(cygmingspecial)(gdc0.12,usingdmd0.125)Copyright(C)2004FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNOwarranty;notevenforMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.$gdb--versionGNUgdb6.3.50_2004-12-28-cvs(cygwin-special)Copyright2004FreeSoftwareFoundation,Inc.GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouarewelcometochangeitand/ordistributecopiesofitundercertainconditions.Type"showcopying"toseetheconditions.ThereisabsolutelynowarrantyforGDB.Type"showwarranty"fordetails.ThisGDBwasconfiguredas"i686-pc-cygwin".5.2.3安裝開(kāi)發(fā)環(huán)境Cygwin在安裝包中自帶了絕大多5.3Linux常用工具目前大多數(shù)的Linux發(fā)行版都提供了圖形界面作為默認(rèn)界面,但是,命令行工具在Linux仍然很重要。Linux工具的特點(diǎn)是一個(gè)程序包含的功能盡量專一,不同的程序通過(guò)文件、管道等進(jìn)程間數(shù)據(jù)共享的方法可以組合使用,達(dá)到處理復(fù)雜功能的目的。學(xué)習(xí)使用Linux系統(tǒng),命令行工具是基礎(chǔ)。GNU的命令行工具都有相同的特點(diǎn),初學(xué)者從一些基本的工具入手,比較容易學(xué)習(xí)。5.3Linux常用工具目前大多數(shù)的Linux發(fā)行版都提5.3.1LinuxShell和常用命令使用過(guò)DOS系統(tǒng)和Windows中斷控制臺(tái)的人對(duì)命令行界面都有一定體會(huì)。與這些系統(tǒng)不同,Linux的命令行是通過(guò)一種叫做Shell的程序提供的。Shell程序負(fù)責(zé)接受用戶的輸入,解析用戶輸入的命令和參數(shù),調(diào)用相應(yīng)的程序,并給出結(jié)果和出錯(cuò)提示。Linux支持多種Shell程序,早期的Shell程序功能比較單一,現(xiàn)在主流的Linux發(fā)行版使用bash作為默認(rèn)的Shell。Bash支持功能強(qiáng)大的腳本、命令行歷史記錄、終端彩色輸出等功能。Shell是Linux的外殼,用戶通過(guò)Shell使用系統(tǒng)提供的功能。在Linux系統(tǒng)中,僅有內(nèi)核還是不夠的,需要應(yīng)用程序支持才能發(fā)揮內(nèi)核提供的功能。無(wú)論是Linux發(fā)行版還是嵌入式Linux開(kāi)發(fā)板上的系統(tǒng),都提供了常見(jiàn)的一些命令。5.3.1LinuxShell和常用命令使用過(guò)DOS系5.3.1LinuxShell和常用命令命令作用常用參數(shù)參數(shù)作用ls列出指定目錄的列表,包括文件和子目錄。默認(rèn)是當(dāng)前目錄。-l以列表方式查看-a顯示隱含文件和目錄-h以便于人閱讀的方式查看文件的大小ln建立連接-s軟連接-f連接是一個(gè)目錄df查看磁盤(pán)空間-h以便于人閱讀的方式查看文件的大小du查看指定目錄占用的空間。默認(rèn)是當(dāng)前目錄-h以便于人閱讀的方式查看文件的大小pwd修改用戶密碼。非root用戶只能修改自己的密碼。
chmod修改文件或目錄的讀寫(xiě)權(quán)限。-R遞歸調(diào)用chgrp修改文件或目錄的用戶組。-R遞歸調(diào)用chown修改文件或目錄的所有者。-R遞歸調(diào)用date查看日期
cat輸出文件內(nèi)容到屏幕。
echo回顯一個(gè)字符串或者環(huán)境變量到屏幕。
uname查看機(jī)器名稱。
ps查看進(jìn)程狀態(tài)-e查看系統(tǒng)所有進(jìn)程kill殺死指定進(jìn)程-9強(qiáng)制殺死進(jìn)程5.3.1LinuxShell和常用命令命令作用常用參5.3.1LinuxShell和常用命令命令作用ifconfig查看和配置網(wǎng)卡fdisk磁盤(pán)分區(qū)工具mkfs磁盤(pán)格式化insmod加載內(nèi)核模塊lsmod內(nèi)核模塊列表modprobe內(nèi)核模塊管理工具reboot重啟機(jī)器halt停機(jī)5.3.1LinuxShell和常用命令命令作用ifc5.3.2文本編輯工具viLinux系統(tǒng)的文本編輯工具有許多,其中使用最廣泛的就是vi編輯器了。vi編輯器的功能十分強(qiáng)大,并且非常小,適合安裝在嵌入式系統(tǒng)使用。vi雖然功能強(qiáng)大,但是對(duì)于初學(xué)者來(lái)說(shuō),上手比較困難,初學(xué)者往往被vi奇怪的操作弄的失去學(xué)習(xí)的信息。本書(shū)有關(guān)vi的使用僅涉及基本操作,目的是幫助初學(xué)者學(xué)習(xí)vi的基本操作。更高級(jí)的vi操作讀者可以參考vi的幫助文檔。vi編輯器支持編輯模式、瀏覽模式、插入模式和可視模式四種模式。其中,插入模式包括了插入文本和替換文本兩種模式。當(dāng)啟動(dòng)vi的時(shí)候,默認(rèn)進(jìn)入瀏覽模式。瀏覽模式只能查看和刪除文檔內(nèi)容,但是不能修改;編輯模式用戶可以修改文檔內(nèi)容,與普通的文本編輯器相同;覆蓋模式下用戶輸入的內(nèi)容會(huì)覆蓋光標(biāo)所在位置的文本;可視模式提供了一種選擇文本的方法,可以使用鍵盤(pán)完成鼠標(biāo)選擇文本的功能。5.3.2文本編輯工具viLinux系統(tǒng)的文本編輯工具有5.3.2文本編輯工具vi5.3.2文本編輯工具vi5.3.3搜索工具find和grepfind和grep是Linux系統(tǒng)最常用的兩個(gè)搜索工具。這兩個(gè)工具不同的是find用于查找文件,grep用于查找文件內(nèi)容。grep支持正則表達(dá)式(一種描述字符串特征的語(yǔ)法),通過(guò)在一個(gè)或多個(gè)文件中搜索字符串,符合的內(nèi)容被送到屏幕顯示。grep工具不會(huì)修改文件內(nèi)容。grep通過(guò)返回值表示搜索狀態(tài),如果搜索成功返回0,如果失敗返回1,如果搜索的文件不存在返回2。因此,grep可以用于shell腳本。5.3.3搜索工具find和grepfind和grep是5.3.4FTP工具FTP是標(biāo)準(zhǔn)的互聯(lián)網(wǎng)文件傳輸協(xié)議,被廣泛的應(yīng)用于網(wǎng)絡(luò)文件傳輸,是不同機(jī)器間文件傳輸簡(jiǎn)單有效的方法。FTP協(xié)議允許傳輸二進(jìn)制和文本文件。在許多系統(tǒng)上都提供了FTP客戶端軟件,用來(lái)從FTP服務(wù)器下載或者上傳文件。本節(jié)介紹的FTP客戶端工具可以在Linux系統(tǒng)和Windows系統(tǒng)上使用,是一種簡(jiǎn)單易用的文件傳輸手段。5.3.4FTP工具FTP是標(biāo)準(zhǔn)的互聯(lián)網(wǎng)文件傳輸協(xié)議,被5.3.4FTP工具命令名稱含義dir列出服務(wù)器的目錄cd改變服務(wù)器上的目錄lcd改變本地目錄ascii使用文本方式傳輸文件binary使用二進(jìn)制方式傳輸文件bye退出ftp工具h(yuǎn)ash顯示文件傳輸進(jìn)度get從服務(wù)器下載文件put上傳文件到服務(wù)器!切換到shell界面,在shell中使用exit命令可以退回ftp界面5.3.4FTP工具命令名稱含義dir列出服務(wù)器的目錄c5.3.5串口工具minicom串口是嵌入式開(kāi)發(fā)使用最多的通信方式。Linux系統(tǒng)提供了一個(gè)串口工具minicom,可以完成復(fù)雜的串口通信工作。本節(jié)介紹minicom的使用。首先是安裝mimicom,在UbuntuLinux系統(tǒng)shell下輸入“$sudoapt-getinstallminicom”回車(chē)后即可安裝minicom軟件。軟件安裝好后,第一次使用之前需要配置minicom。5.3.5串口工具minicom串口是嵌入式開(kāi)發(fā)使用最多5.5Windows常用工具嵌入式開(kāi)發(fā)的開(kāi)發(fā)環(huán)境和運(yùn)行環(huán)境往往不是同一臺(tái)機(jī)器。作為開(kāi)發(fā)環(huán)境,Windows下通常運(yùn)行一些客戶端和代碼管理工具、文檔管理工具等。本節(jié)介紹Windows下常用的兩個(gè)工具。5.5Windows常用工具嵌入式開(kāi)發(fā)的開(kāi)發(fā)環(huán)境和運(yùn)行環(huán)5.5.1代碼編輯管理工具SourceInsightSourceInsight是一個(gè)功能強(qiáng)大的代碼管理工具。該工具可以輕松管理代碼龐大的工程,提供了豐富的編輯功能,支持函數(shù)、變量的類型定義查看、跳轉(zhuǎn)等。SourceInsight對(duì)C語(yǔ)言代碼支持最好,本節(jié)介紹SourceInsight安裝和使用。1.設(shè)置SourceInsight工程2.SourceInsight特色功能5.5.1代碼編輯管理工具SourceInsightSo5.5.2串口工具XShell在5.3.5節(jié)介紹了Linux下的串口工具minicom,本節(jié)介紹一個(gè)Windows下比較好用的串口工具XShell。實(shí)際上,XShell不僅支持串口連接,還可以連接Telnet服務(wù)器、SSH服務(wù)器等。5.5.2串口工具XShell在5.3.5節(jié)介紹了Lin5.6ARM集成開(kāi)發(fā)環(huán)境ADS集成開(kāi)發(fā)環(huán)境英文Integrateddevelopmentenvironment,縮寫(xiě)是IDE。在沒(méi)有IDE之前,開(kāi)發(fā)軟件過(guò)程中的編輯,編譯,調(diào)試需要不同的工具操作,不僅效率低而且容易出錯(cuò)。IDE的作用是把編輯、編譯和調(diào)試等工具集成在一起,并且向用戶提供一個(gè)圖形界面的開(kāi)發(fā)環(huán)境。ARM開(kāi)發(fā)有標(biāo)準(zhǔn)的開(kāi)發(fā)環(huán)境ARMDevelopmentSuit,簡(jiǎn)稱ADS。5.6ARM集成開(kāi)發(fā)環(huán)境ADS集成開(kāi)發(fā)環(huán)境英文Integ5.6.1ADS集成開(kāi)發(fā)環(huán)境介紹ADS是ARM公司推出的ARM集成開(kāi)發(fā)工具,目前最新版本是1.2,只能在Windows系統(tǒng)安裝。ADS包括程序庫(kù)、命令行開(kāi)發(fā)工具、圖形界面、調(diào)試工具和代碼編輯器等。本節(jié)介紹一下ADS自帶的命令行工具。1.C語(yǔ)言編譯器armcc2.C++語(yǔ)言編譯器armcpp5.6.1ADS集成開(kāi)發(fā)環(huán)境介紹ADS是ARM公司推出的5.6.2配置ADS調(diào)試環(huán)境在使用ADS之前,需要安裝ADS開(kāi)發(fā)環(huán)境。ADS是一個(gè)商業(yè)軟件,需要支付版權(quán)費(fèi)用才可以使用,對(duì)于沒(méi)有購(gòu)買(mǎi)版權(quán)的用戶會(huì)受到功能限制。5.6.2配置ADS調(diào)試環(huán)境在使用ADS之前,需要安裝A5.6.3建立自己的工程本節(jié)介紹如何在ADS環(huán)境下建立自己的工程并且編譯生成目標(biāo)文件。5.6.3建立自己的工程本節(jié)介紹如何在ADS環(huán)境下建立自5.7小結(jié)本章講解了嵌入式Linux開(kāi)發(fā)環(huán)境,包括系統(tǒng)環(huán)境、開(kāi)發(fā)工具、輔助工具等。開(kāi)發(fā)工具是嵌入式開(kāi)發(fā)過(guò)不可缺少的,每種工具都有自己的用途和范圍,讀者應(yīng)該多實(shí)踐,掌握常見(jiàn)的開(kāi)發(fā)工具使用方法。第6章開(kāi)始介紹基本的程序開(kāi)發(fā)知識(shí)。5.7小結(jié)本章講解了嵌入式Linux開(kāi)發(fā)環(huán)境,包括系統(tǒng)環(huán)第6章第一個(gè)Linux應(yīng)用程序?qū)W習(xí)嵌入式程序開(kāi)發(fā)首先從最簡(jiǎn)單的程序開(kāi)始。一個(gè)最基本的Linux應(yīng)用程序可以涵蓋編程的所有基本知識(shí),通過(guò)編寫(xiě)Linux可以快速入門(mén)程序開(kāi)發(fā)。本章目的是通過(guò)實(shí)際的程序向讀者介紹Linux程序的基本框架和工作流程。主要內(nèi)容如下:編寫(xiě)一個(gè)最基本的應(yīng)用程序分析程序的執(zhí)行過(guò)程程序生成過(guò)程程序編譯過(guò)程管理第6章第一個(gè)Linux應(yīng)用程序?qū)W習(xí)嵌入式程序開(kāi)發(fā)首先從最6.1向世界問(wèn)好–Hello,World!很多的編程書(shū)籍都以輸出一行“Hello,World!”向初學(xué)者展示如何編寫(xiě)程序。這個(gè)程序很簡(jiǎn)單,卻展示了C程序的基本要素:語(yǔ)法格式、引用頭文件、調(diào)用庫(kù)函數(shù)等。本節(jié)展示了程序的編輯、編譯和執(zhí)行相關(guān)知識(shí)。6.1向世界問(wèn)好–Hello,World!很多的編程6.1.1用vi編輯源代碼文件在5.3.2小節(jié)介紹了vi編輯器的用法,現(xiàn)在使用vi編輯器編寫(xiě)第一個(gè)源代碼文件。具體操作過(guò)程如下:1.創(chuàng)建源代碼文件hello_test.c2.編寫(xiě)源代碼3.保存退出6.1.1用vi編輯源代碼文件在5.3.2小節(jié)介紹了vi6.1.2用gcc編譯程序編輯好源文件hello_test.c文件后,需要把它編譯成可執(zhí)行文件才可以在Linux下運(yùn)行。在控制臺(tái)模式當(dāng)前目錄,輸入以下命令完成編譯:gcchello_test.c6.1.2用gcc編譯程序編輯好源文件hello_te6.1.3執(zhí)行程序到目前為止,第一個(gè)程序已經(jīng)編譯好了,下面就是執(zhí)行程序了。在大多數(shù)的Linux系統(tǒng)上,都是通過(guò)一個(gè)名為PATH的環(huán)境變量來(lái)管理系統(tǒng)可執(zhí)行程序的路徑的,但是不幸的是這個(gè)變量里并沒(méi)有包含了當(dāng)前路徑的‘./’,所以需要按照下面的方式執(zhí)行程序:./a.out執(zhí)行a.out程序后,輸出結(jié)果如下:[root@slashdev_test]#./a.outHello,World!6.1.3執(zhí)行程序到目前為止,第一個(gè)程序已經(jīng)編譯好了,下6.2程序背后做了什么前面講了程序如何編輯和編譯,并且展示了程序的輸出結(jié)果??赡苡腥藭?huì)問(wèn)程序是如何輸出在屏幕上的。帶著這個(gè)問(wèn)題,這一節(jié)從程序加載和執(zhí)行的過(guò)程,分析一下Linux應(yīng)用程序是如何在計(jì)算機(jī)上運(yùn)行的。實(shí)例6-1所示的基本程序涵蓋了執(zhí)行一個(gè)Linux應(yīng)用程序所有的細(xì)節(jié)。6.2程序背后做了什么前面講了程序如何編輯和編譯,并且展6.2.1程序執(zhí)行的過(guò)程一個(gè)Linux程序的加載和執(zhí)行過(guò)程。6.2.1程序執(zhí)行的過(guò)程一個(gè)Linux程序的加載和執(zhí)行過(guò)6.2.2窺視程序執(zhí)行中的秘密上面的程序執(zhí)行過(guò)程比較難理解,這里推薦使用strace工具分析這個(gè)程序的執(zhí)行流程。在執(zhí)行a.out的那個(gè)目錄,輸入以下命令:[dev_user@localhostdev_user]$strace./a.out6.2.2窺視程序執(zhí)行中的秘密上面的程序執(zhí)行過(guò)程比較難理6.2.3動(dòng)態(tài)庫(kù)的作用Linux系統(tǒng)有兩種程序庫(kù),一種是被稱作靜態(tài)庫(kù)(staticlibrary),在程序連接的時(shí)候,把庫(kù)函數(shù)的目標(biāo)代碼和程序連接在一起;還有一種就是前面提到的動(dòng)態(tài)庫(kù)(sharedlibrary),從英文字面翻譯,動(dòng)態(tài)庫(kù)可以翻譯為共享庫(kù)。動(dòng)態(tài)庫(kù)是Linux系統(tǒng)最廣泛的一種程序使用方式,它的工作原理是相同功能的代碼可以被多個(gè)程序共同使用。在程序加載的時(shí)候,內(nèi)核會(huì)檢查程序使用到的動(dòng)態(tài)庫(kù)是否已經(jīng)加載到內(nèi)存,如果沒(méi)有加載到內(nèi)存,則從系統(tǒng)庫(kù)路徑搜索并且加載相關(guān)的動(dòng)態(tài)庫(kù);如果動(dòng)態(tài)庫(kù)已經(jīng)被加載到內(nèi)存,程序可以直接使用而扌爰釉亍從動(dòng)態(tài)庫(kù)的工作原理可以看出,任何一個(gè)動(dòng)態(tài)庫(kù)僅會(huì)被系統(tǒng)加載一次。使用程序動(dòng)態(tài)庫(kù)還有一個(gè)好處,就是可以減小應(yīng)用程序占用的空間和加載時(shí)間。6.2.3動(dòng)態(tài)庫(kù)的作用Linux系統(tǒng)有兩種程序庫(kù),一種是6.3程序如何來(lái)的-編譯的全部過(guò)程在6.1.2節(jié),通過(guò)命令行輸入gcchello_test.c就可以編譯出一個(gè)可執(zhí)行文件a.out。在使用gcc編譯c語(yǔ)言源代碼文件的時(shí)候,gcc隱含進(jìn)行了兩個(gè)過(guò)程:編譯和連接。所以確切的說(shuō),應(yīng)該是編譯連接c語(yǔ)言源代碼文件,本節(jié)就講一下這個(gè)過(guò)程。6.3程序如何來(lái)的-編譯的全部過(guò)程在6.1.2節(jié),通6.3.1編譯源代碼編譯的目的是把人書(shū)寫(xiě)的高級(jí)語(yǔ)言代碼翻譯成目標(biāo)程序的語(yǔ)言處理程序,編譯用的程序(例如gcc)也可以稱為編譯系統(tǒng)。一個(gè)編譯系統(tǒng)把一個(gè)源程序翻譯成目標(biāo)程序的工作過(guò)程分為五個(gè)階段:詞法分析、語(yǔ)法分析、中間代碼生成、代碼優(yōu)化和目標(biāo)代碼生成。其中主要階段是詞法分析和語(yǔ)法分析,也可以稱為源代碼分析,分析過(guò)程中發(fā)現(xiàn)有語(yǔ)法錯(cuò)誤,給出提示信息。1.詞法分析2.語(yǔ)法分析3.中間代碼生成4.代碼優(yōu)化5.目標(biāo)代碼生成6.3.1編譯源代碼編譯的目的是把人書(shū)寫(xiě)的高級(jí)語(yǔ)言代碼翻6.3.2鏈接目標(biāo)文件到指定的庫(kù)源代碼經(jīng)過(guò)編譯以后,需要鏈接才可以在Linux系統(tǒng)運(yùn)行,鏈接的作用是把代碼中調(diào)用的系統(tǒng)函數(shù)和對(duì)應(yīng)的系統(tǒng)庫(kù)建立關(guān)系,設(shè)置程序啟動(dòng)時(shí)候的內(nèi)存,環(huán)境變量等,以及程序退出的狀態(tài),釋放占用的資源等操作,這些背后的工作對(duì)用戶都是隱含的。gcc在連接用戶目標(biāo)文件的時(shí)候會(huì)根據(jù)用戶代碼使用不同的函數(shù)連接對(duì)應(yīng)的動(dòng)態(tài)或者靜態(tài)庫(kù)(根據(jù)連接選項(xiàng),默認(rèn)是動(dòng)態(tài)庫(kù)),同時(shí),還會(huì)對(duì)所有的目標(biāo)文件連接固定的預(yù)編譯好的系統(tǒng)目標(biāo)文件,這幾個(gè)預(yù)編譯好的目標(biāo)文件用來(lái)完成程序初始化,結(jié)束時(shí)的環(huán)境設(shè)置等。6.3.2鏈接目標(biāo)文件到指定的庫(kù)源代碼經(jīng)過(guò)編譯以后,需要6.4更簡(jiǎn)單的辦法——用Makefile管理工程6.1.2節(jié)講述了可以使用如下的方法編譯
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZHAQ 6-2024 帶逆變輸出的儲(chǔ)能電源
- 醫(yī)院與醫(yī)學(xué)檢驗(yàn)技術(shù)人員2025年度勞動(dòng)合同
- 二零二五年度股權(quán)質(zhì)押與企業(yè)債務(wù)重組合同
- 二零二五年度集體宿舍租賃與社區(qū)治理服務(wù)合同
- 全面履行原則在2025年度房地產(chǎn)項(xiàng)目開(kāi)發(fā)合同中的執(zhí)行要求
- 二零二五年度汽車(chē)運(yùn)輸安全責(zé)任保險(xiǎn)合作協(xié)議
- 二零二五年度文化展覽聘請(qǐng)藝術(shù)藝人演出合同
- 2025年度高科技研發(fā)項(xiàng)目投資債轉(zhuǎn)股協(xié)議書(shū)
- 2025年度新能源汽車(chē)產(chǎn)業(yè)鏈債權(quán)轉(zhuǎn)讓合同
- 二零二五年度電子元器件制造勞務(wù)派遣員工合同
- NB-T31065-2015風(fēng)力發(fā)電場(chǎng)調(diào)度運(yùn)行規(guī)程
- 2024山東能源集團(tuán)中級(jí)人才庫(kù)選拔【重點(diǎn)基礎(chǔ)提升】模擬試題(共500題)附帶答案詳解
- 油田設(shè)備租賃行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃行業(yè)投資戰(zhàn)略研究報(bào)告(2024-2030)
- 四川省綿陽(yáng)市東辰學(xué)校2023-2024學(xué)年七年級(jí)下學(xué)期3月月考語(yǔ)文卷
- 中國(guó)古典風(fēng)格設(shè)計(jì)
- 社會(huì)實(shí)踐報(bào)告表格范本
- 市政綜合項(xiàng)目工程竣工項(xiàng)目驗(yàn)收總結(jié)報(bào)告自評(píng)
- 2024年“民用無(wú)人機(jī)及多旋翼無(wú)人機(jī)”駕駛員操控員技能與理論知識(shí)考試題庫(kù)含答案
- 2019譯林版高中英語(yǔ)全七冊(cè)單詞總表
- T-BJCC 1003-2024 首店、首發(fā)活動(dòng)、首發(fā)中心界定標(biāo)準(zhǔn)
- 園區(qū)宣傳方案
評(píng)論
0/150
提交評(píng)論