第8章嵌入式統(tǒng)開發(fā)平臺_第1頁
第8章嵌入式統(tǒng)開發(fā)平臺_第2頁
第8章嵌入式統(tǒng)開發(fā)平臺_第3頁
第8章嵌入式統(tǒng)開發(fā)平臺_第4頁
第8章嵌入式統(tǒng)開發(fā)平臺_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第8章 嵌入式系統(tǒng)開發(fā)平臺第8章 目錄q1. 如何建立嵌入式系統(tǒng)開發(fā)平臺q2.數(shù)據(jù)隊(duì)列q3.串口驅(qū)動q4.modem接口模塊q5.i2c總線模塊q6.spi總線模塊q7.其它軟件模塊第8章 目錄q1. 如何建立嵌入式系統(tǒng)開發(fā)平臺q2.數(shù)據(jù)隊(duì)列q3.串口驅(qū)動q4.modem接口模塊q5.i2c總線模塊q6.spi總線模塊q7.其它軟件模塊8.1 如何建立嵌入式系統(tǒng)開發(fā)平臺 平臺的概念 平臺是一個(gè)意義很廣泛的詞,要準(zhǔn)確的定義平臺不是件容易的事。在嵌入式系統(tǒng)中的開發(fā)平臺具有如下特點(diǎn):層次性服務(wù)性規(guī)范性通用性技術(shù)密度 平臺的概念 平臺是一個(gè)意義很廣泛的詞,要準(zhǔn)確的定義平臺不是件容易的事。在嵌入式系統(tǒng)中

2、的開發(fā)平臺具有如下特點(diǎn):層次性服務(wù)性規(guī)范性通用性技術(shù)密度 平臺是一個(gè)意義很廣泛的詞,要準(zhǔn)確的定義平臺不是件容易的事。在嵌入式系統(tǒng)中的開發(fā)平臺具有如下特點(diǎn):層次性 層次性首先表現(xiàn)在平臺本身具有層次,高層的平臺是以低層平臺為基礎(chǔ)搭建起來的。還表現(xiàn)在每個(gè)層次的平臺的內(nèi)部還有層次性。越高層次的平臺越容易使用,對使用者的要求也就越低。服務(wù)性 平臺是為應(yīng)用服務(wù)的,沒有應(yīng)用的平臺是無意義的,沒有存在的必要。對于元器件來說,線路板就是它的應(yīng)用。而api是硬件平臺的應(yīng)用,應(yīng)用程序又是api的應(yīng)用。規(guī)范性通用性技術(shù)密度 平臺的概念 平臺是一個(gè)意義很廣泛的詞,要準(zhǔn)確的定義平臺不是件容易的事。在嵌入式系統(tǒng)中的開發(fā)平臺

3、具有如下特點(diǎn):層次性服務(wù)性規(guī)范性 當(dāng)一個(gè)平臺建立起來后,其對應(yīng)用的接口就具有一定的規(guī)范。一個(gè)軟件模塊一旦開發(fā)完畢,其接口函數(shù)及使用方法就確定了,應(yīng)用程序就需要按照規(guī)范使用。通用性 平臺從來不是給一個(gè)應(yīng)用使用的。如果一個(gè)平臺只能給一個(gè)應(yīng)用使用,作為平臺來說,其設(shè)計(jì)是失敗的(盡管其作為最終應(yīng)用可能是成功的)。這是平臺的服務(wù)性決定的。 技術(shù)密度 平臺的概念 平臺是一個(gè)意義很廣泛的詞,要準(zhǔn)確的定義平臺不是件容易的事。在嵌入式系統(tǒng)中的開發(fā)平臺具有如下特點(diǎn):層次性服務(wù)性規(guī)范性通用性技術(shù)密度 平臺特別是商業(yè)平臺通常由相關(guān)領(lǐng)域的專家建立。這是因?yàn)橥枰m應(yīng)不同的應(yīng)用的要求,所以其需要的技術(shù)含量是很高的。應(yīng)用

4、程序應(yīng)用程序 接口電路板元器件 平臺的例子層次性服務(wù)性規(guī)范性通用性技術(shù)密度 本章重點(diǎn)介紹該層8.1 如何建立嵌入式系統(tǒng)開發(fā)平臺 使用平臺開發(fā)的優(yōu)勢 應(yīng)用程序接口這個(gè)嵌入式軟件開發(fā)平臺的提出和應(yīng)用是因?yàn)槠淠軌蚪鉀Q當(dāng)前及今后的嵌入式開發(fā)過程中出現(xiàn)的一些矛盾。以下是使用嵌入式軟件開發(fā)平臺(api)開發(fā)的優(yōu)點(diǎn): 縮短開發(fā)時(shí)間降低對開發(fā)人員的要求降低開發(fā)成本增加穩(wěn)定性和可靠性降低軟件對硬件變化的敏感性 不適合使用平臺開發(fā)的場合 雖然使用平臺開發(fā)有很多優(yōu)點(diǎn),但其也不是萬能的。有一些場合并不適合使用平臺開發(fā),這些場合主要有以下幾種:極大批量的產(chǎn)品 這種產(chǎn)品往往要求硬件成本和生產(chǎn)成本最低化。而使用平臺開發(fā)不可

5、避免帶來資源占用的增加,反映到硬件上就是成本的增加。有時(shí)這種增加是不可接受的。這種情況不適合用平臺開發(fā)。沒有合適的平臺但產(chǎn)品需要盡快上市時(shí) 開發(fā)平臺是需要時(shí)間的,甚至比當(dāng)前的項(xiàng)目的時(shí)間更長。但如果后續(xù)有類似的產(chǎn)品,則還是建議開發(fā)者逐步建立起自己的開發(fā)平臺,這會對以后所有的項(xiàng)目帶來好處。需要極度榨取硬件性能的場合 除了極大批量的產(chǎn)品需要極度榨取硬件性能外,估計(jì)只有科學(xué)研究和一些一件一件制造的高價(jià)值產(chǎn)品(如巨型機(jī))需要這樣做了,在普通的企業(yè)中應(yīng)該不容易見到。 建立開發(fā)平臺的方法1.選擇操作系統(tǒng) 操作系統(tǒng)(os)是一個(gè)基礎(chǔ)的軟件平臺。因此,建立軟件開發(fā)平臺(自己的api)首先需要選擇一個(gè)合適的操作系

6、統(tǒng)。操作系統(tǒng)的選擇與應(yīng)用相關(guān)的,但對于嵌入式系統(tǒng)一般需要選擇嵌入式操作系統(tǒng)。2.制定api規(guī)范及應(yīng)用程序編寫規(guī)范 有了操作系統(tǒng),就可以制訂api規(guī)范和程序編寫規(guī)范了。這些規(guī)范一部分已經(jīng)被操作系統(tǒng)規(guī)定好了,另一部分需要自己制訂。建議這些規(guī)范盡量靠近與已存在的事實(shí)標(biāo)準(zhǔn),以減少學(xué)習(xí)時(shí)間。3.獲取成熟的軟件模塊并修改適合指定的規(guī)范 開發(fā)人員可以通過各種途徑獲取成熟的軟件模塊,還可以獲取一些商業(yè)和自由的軟件模塊。這些軟件模塊不一定適合自己的規(guī)范,這就需要對這些軟件模塊進(jìn)行進(jìn)一步的修改或包裝以適應(yīng)自己的規(guī)范。4.編寫自己的軟件模塊 通過外部途徑不一定能夠獲取所有必須的軟件模塊,此時(shí)就需要自己編寫軟件模塊了

7、。 編寫自己的軟件模塊 因?yàn)殚_發(fā)平臺基于操作系統(tǒng),所以很可能多個(gè)任務(wù)和/或同時(shí)訪問同一個(gè)api函數(shù)。這就需要api函數(shù)必須是可重入的。這里主要介紹如何使這些函數(shù)可重入,和其它一些內(nèi)容。1.使用任務(wù)2.禁止然后允許中斷3.使用信號量4.使用數(shù)據(jù)隊(duì)列5.禁止然后允許任務(wù)調(diào)度6.使用一個(gè)任務(wù)作為模塊服務(wù)器7.復(fù)合方法 編寫自己的軟件模塊 因?yàn)殚_發(fā)平臺基于操作系統(tǒng),所以很可能多個(gè)任務(wù)和/或同時(shí)訪問同一個(gè)api函數(shù)。這就需要api函數(shù)必須是可重入的。這里主要介紹如何使這些函數(shù)可重入,和其它一些內(nèi)容。1.使用任務(wù) 有一些設(shè)備需要cpu周期為其服務(wù),典型的是掃描顯示和掃描鍵盤??梢越o它們分配相應(yīng)的任務(wù),與用

8、戶任務(wù)一起調(diào)度。這樣,就可以使用任何任務(wù)間通信的方法實(shí)現(xiàn)。鍵盤掃描任務(wù)顯示任務(wù)用戶任務(wù)操作系統(tǒng)內(nèi)核通信通信 編寫自己的軟件模塊2.禁止然后允許中斷 有一些設(shè)備需要的訪問時(shí)間很短,如全局變量。它們可以通過禁止中斷訪問設(shè)備允許中斷的方式編寫軟件模塊。任務(wù)a允許中斷禁止中斷中斷服務(wù)函數(shù)全局變量 編寫自己的軟件模塊3.使用信號量 一些設(shè)備需要的訪問時(shí)間比較長,使用方法2可能造成關(guān)中斷時(shí)間過長。此時(shí)可以使用信號量來編寫軟件模塊。具體過程為申請信號量訪問設(shè)備發(fā)送信號量。信號量訪問獨(dú)享資源之前申請信號量其它任務(wù)申請信號量受阻,不能訪問獨(dú)享資源獨(dú)享資源任務(wù)a任務(wù)b任務(wù)c信號量信號量申請成功后,可以訪問獨(dú)享資源

9、 編寫自己的軟件模塊4.使用數(shù)據(jù)隊(duì)列 有一些設(shè)備具有自己的中斷,典型的是串口輸出。可以利用消息隊(duì)列將用戶任務(wù)需要的服務(wù)通過消息隊(duì)列排隊(duì)、緩沖起來,利用中斷功能依次服務(wù)。任務(wù)a任務(wù)b任務(wù)c中斷服務(wù)函數(shù) 數(shù)據(jù)隊(duì)列 編寫自己的軟件模塊5.禁止然后允許任務(wù)調(diào)度 當(dāng)中斷服務(wù)程序不可能訪問這個(gè)資源時(shí),可以使用本方法避免實(shí)現(xiàn)函數(shù)重入。但是不推薦用戶使用此方法。 任務(wù)a允許任務(wù)切換禁止任務(wù)切換中斷服務(wù)函數(shù)獨(dú)享資源 編寫自己的軟件模塊6.使用一個(gè)任務(wù)作為模塊服務(wù)器 當(dāng)一個(gè)軟件模塊十分復(fù)雜,使用上述方法難以保證api函數(shù)可重入性時(shí),或軟件模塊需要在單任務(wù)環(huán)境和多任務(wù)環(huán)境都能夠使用時(shí),可以依照單任務(wù)的方式編寫,然后

10、編寫一個(gè)任務(wù)作為服務(wù)器,由這個(gè)服務(wù)器直接操作這個(gè)軟件模塊,而其它的任務(wù)通過消息隊(duì)列等方式與之通訊,把需要的操作提交給服務(wù)器,而服務(wù)器通過消息郵箱等方式返回操作結(jié)果。服務(wù)器任務(wù)任務(wù)a任務(wù)b.任務(wù)n軟件包 數(shù)據(jù)隊(duì)列 編寫自己的軟件模塊6.使用一個(gè)任務(wù)作為模塊服務(wù)器 當(dāng)一個(gè)軟件模塊十分復(fù)雜,使用上述方法難以保證api函數(shù)可重入性時(shí),或軟件模塊需要在單任務(wù)環(huán)境和多任務(wù)環(huán)境都能夠使用時(shí),可以依照單任務(wù)的方式編寫,然后編寫一個(gè)任務(wù)作為服務(wù)器,由這個(gè)服務(wù)器直接操作這個(gè)軟件模塊,而其它的任務(wù)通過消息隊(duì)列等方式與之通訊,把需要的操作提交給服務(wù)器,而服務(wù)器通過消息郵箱等方式返回操作結(jié)果。7.復(fù)合方法 有一些驅(qū)動程

11、序比較復(fù)雜(例如通訊協(xié)議),可以結(jié)合兩種或兩種以上的方法實(shí)現(xiàn)。 編寫自己的軟件模塊 編寫軟件模塊由一個(gè)要注意的地方是:必須把與硬件相關(guān)的部分和與硬件無關(guān)的部分分開。這可以通過把與硬件相關(guān)的部分放在驅(qū)動程序中實(shí)現(xiàn)。這樣,硬件變化時(shí)只需要重新編寫驅(qū)動程序即可。驅(qū)動程序也可以分層實(shí)現(xiàn)。也可以通過配置實(shí)現(xiàn),不過這有時(shí)不太容易實(shí)現(xiàn)。當(dāng)然可以合并使用。硬件平臺a硬件平臺b硬件平臺c硬件驅(qū)動a硬件驅(qū)動b硬件驅(qū)動c軟件模塊軟件模塊軟件模塊軟件模塊應(yīng)用于不同的硬件平臺時(shí),只需要修改相應(yīng)的硬件驅(qū)動第8章 目錄q1. 如何建立嵌入式系統(tǒng)開發(fā)平臺q2.數(shù)據(jù)隊(duì)列q3.串口驅(qū)動q4.modem接口模塊q5.i2c總線模塊

12、q6.spi總線模塊q7.其它軟件模塊8.2 數(shù)據(jù)隊(duì)列 簡介 數(shù)據(jù)隊(duì)列一般用于數(shù)據(jù)緩存,可以用來平衡速率不同的兩個(gè)部件,使快速部件無需等待慢速部件。任務(wù)a任務(wù)b數(shù)據(jù)隊(duì)列任務(wù)a產(chǎn)生信息快而短促任務(wù)b處理信息相對較慢8.2 數(shù)據(jù)隊(duì)列 簡介 數(shù)據(jù)隊(duì)列一般是先入先出(fifo)的,但本數(shù)據(jù)隊(duì)列可以配置為后入先出。本數(shù)據(jù)隊(duì)列是可配置可裁減的模塊,并且不依賴于操作系統(tǒng),可以在前后臺系統(tǒng)中使用。數(shù)據(jù)隊(duì)列使用的空間由用戶分配且由這個(gè)空間的地址唯一識別一個(gè)數(shù)據(jù)隊(duì)列。8.2 數(shù)據(jù)隊(duì)列 api函數(shù) 數(shù)據(jù)隊(duì)列軟件模塊包括的api函數(shù)如下所示:api函數(shù)名功能簡介queuecreate 建立數(shù)據(jù)隊(duì)列queueread

13、獲取隊(duì)列中的數(shù)據(jù)queuewrite fifo(先進(jìn)先出)方式發(fā)送數(shù)據(jù)queuewritefront lifo(后進(jìn)先出)方式發(fā)送數(shù)據(jù)queueflush 清空隊(duì)列queuendata 取得隊(duì)列中已存儲數(shù)據(jù)的數(shù)目queuesize取得隊(duì)列中總共可以存儲的數(shù)據(jù)數(shù)目 api函數(shù)45673012數(shù)據(jù)隊(duì)列有效數(shù)據(jù)空間空閑數(shù)據(jù)空間queueread讀隊(duì)列中數(shù)據(jù)queuewritefifo方式寫數(shù)據(jù)queuewritefrontlifo方式寫數(shù)據(jù)注:api函數(shù)的具體使用方法,請參看相關(guān)手冊。queuecreatequeueflushqueuendataqueuesize第8章 目錄q1. 如何建立嵌入式系

14、統(tǒng)開發(fā)平臺q2.數(shù)據(jù)隊(duì)列q3.串口驅(qū)動q4.modem接口模塊q5.i2c總線模塊q6.spi總線模塊q7.其它軟件模塊8.3 串口驅(qū)動 簡介 在實(shí)際應(yīng)用中,嵌入式系統(tǒng)往往不是作為一個(gè)獨(dú)立的控制單元而存在,它還要和其它控制單元進(jìn)行通信。這些控制單元可以是另一個(gè)嵌入式系統(tǒng),也可以是pc機(jī)。如果雙方均遵循同樣的通訊協(xié)議,就可以互相通訊了。8.3 串口驅(qū)動 api函數(shù) 串口驅(qū)動軟件模塊包括的api函數(shù)如下所示:api函數(shù)名功能簡介uart0init 初始化uart0uart0putch 發(fā)送一個(gè)字節(jié)數(shù)據(jù)uart0write 發(fā)送多個(gè)字節(jié)數(shù)據(jù)uart0getch 接收一個(gè)字節(jié)數(shù)據(jù)uart0initua

15、rt0init8.3 串口驅(qū)動 api函數(shù) 串口驅(qū)動軟件模塊包括的api函數(shù)如下所示:主機(jī)a主機(jī)buart0getchuart0putchuart0writetxdrxduart0putchuart0writeuart0getchtxdrxd第8章 目錄q1. 如何建立嵌入式系統(tǒng)開發(fā)平臺q2.數(shù)據(jù)隊(duì)列q3.串口驅(qū)動q4.modem接口模塊q5.i2c總線模塊q6.spi總線模塊q7.其它軟件模塊8.4 modem接口 簡介 在實(shí)際應(yīng)用中,嵌入式系統(tǒng)和其它控制單元的通信可能不局限于一個(gè)小的地理范圍,如跨城市通訊甚至跨洲通訊。此時(shí),如果需要布置專門的通訊線路則成本太高,利用現(xiàn)成的通訊網(wǎng)絡(luò)成為唯一的

16、選擇。而電話網(wǎng)絡(luò)是目前分布最廣的廉價(jià)通訊網(wǎng)絡(luò)。不過,要利用電話網(wǎng)絡(luò)需要一種接口設(shè)備,這就是modem(調(diào)制解調(diào)器)。8.4 modem接口模塊 api函數(shù) modem接口軟件模塊包括的api函數(shù)如下所示:api函數(shù)名功能簡介modeminit初始化modemgetmodemstate獲取modem狀態(tài)modemwrite通過modem發(fā)送多個(gè)字節(jié)數(shù)據(jù)modemgetch從modem獲取一個(gè)字節(jié)數(shù)據(jù)modemdiaup通過mdoem撥號modemdiadown掛斷modem8.4 modem接口模塊 api函數(shù) 所有api函數(shù)的返回值為當(dāng)前modem的狀態(tài),如下所示:modem狀態(tài)狀態(tài)說明not

17、_init_modem不能初始化modemnot_find_modem沒有找到modemmodem_close連接關(guān)閉modem_ring發(fā)現(xiàn)振鈴信號modem_connect已經(jīng)與對方連接上modeminitgetmodemstatemodemdiaupmodemdiadownmodeminitgetmodemstatemodemdiaupmodemdiadown api函數(shù)modemgetch獲取一字節(jié)數(shù)據(jù)modemwrite發(fā)送多字節(jié)數(shù)據(jù)modemwrite發(fā)送多字節(jié)數(shù)據(jù)modemgetch獲取一字節(jié)數(shù)據(jù)第8章 目錄q1. 如何建立嵌入式系統(tǒng)開發(fā)平臺q2.數(shù)據(jù)隊(duì)列q3.串口驅(qū)動q4.mo

18、dem接口模塊q5.i2c總線模塊q6.spi總線模塊q7.其它軟件模塊8.5 i2c總線模塊 簡介 i2c總線由philips公司推出,是近年來在微電子通信控制領(lǐng)域廣泛采用的一種新型總線標(biāo)準(zhǔn)。它是同步通信的一種特殊形式,具有接口線少、控制方式簡化、器件封裝形式小、通信速率較高等優(yōu)點(diǎn)。在主從通信中,可以有多個(gè)i2c總線器件同時(shí)接到i2c總線上,通過地址來識別通信對象。8.5 i2c總線模塊 簡介 i2c 總線通過2根線串行數(shù)據(jù)線(sda)和串行時(shí)鐘線(scl)連接到總線上的任何一個(gè)器件,每個(gè)器件都應(yīng)有一個(gè)唯一的地址,而且都可以作為一個(gè)發(fā)送器或接收器。此外,器件在執(zhí)行數(shù)據(jù)傳輸時(shí)也可以被看作是主機(jī)

19、或從機(jī)。rprpvddsclsdasda出sda入scl入scl出sclsda器件1器件2i2c bus8.5 i2c總線模塊 api函數(shù) i2c接口軟件模塊包括的api函數(shù)如下所示:api函數(shù)名功能簡介i2cinit初始化i2c總線i2cwrite向i2c從器件寫數(shù)據(jù)i2cread從i2c從器件讀數(shù)據(jù)8.5 i2c總線模塊 api函數(shù)rprpvddsclsdasda出sda入scl入scl出sclsda器件1器件2i2c busi2cwrite向從器件寫數(shù)據(jù)i2cread讀取從器件數(shù)據(jù)i2cinit初始化i2c總線第8章 目錄q1. 如何建立嵌入式系統(tǒng)開發(fā)平臺q2.數(shù)據(jù)隊(duì)列q3.串口驅(qū)動q4.modem接口模塊q5.i2c總線模塊q6.spi總線模塊q7.其它軟件模塊8.6 spi總線模塊 簡介 串行外圍設(shè)備接口spi總線技術(shù)是motorola公司推出的一種同步串行接口。spi總線是一種三線同步總線,因其硬件功能很強(qiáng),所以,與spi有關(guān)的軟件就相當(dāng)簡單,使cpu有更多的時(shí)間處理其他事務(wù)。 spi是一個(gè)全雙工的串行接口。它設(shè)計(jì)成可以處理在一個(gè)給

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論