基于eCos在基于ARM7硬件平臺上的應(yīng)用_第1頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于ecos在基于arm7硬件平臺上的應(yīng)用ecos(embedded configurable operating system)最初是由cygnus solutions公司為面對領(lǐng)域而開發(fā)的源碼藏匿、具有很強(qiáng)的可移植性和可配置性的,適合于深度嵌入式開發(fā)的實時操作系統(tǒng)。現(xiàn)在ecos主要由ecoscentric公司和ecos開源社區(qū)共同開發(fā)維護(hù)。ecos的特性,特殊是它的可配置性,能有效縮短嵌入式產(chǎn)品的開發(fā)周期并降低成本。1 ecos的體系結(jié)構(gòu)及可配置性1.1 ecos體系結(jié)構(gòu)ecos采納模塊化設(shè)計,將不同功能的軟件分成不同的組件,使其分離位于系統(tǒng)的不同層次。這種層次結(jié)構(gòu)實現(xiàn)了ecos的可配置性

2、、可移植性、兼容性和可擴(kuò)展性。圖1是ecos系統(tǒng)的層次結(jié)構(gòu)框圖。硬件抽象層(hal)使其上層次結(jié)構(gòu)不必關(guān)懷詳細(xì)的硬件結(jié)構(gòu),因此只需對hal舉行修改就可以使囫圇ecos的應(yīng)用移植到新的硬件平臺上。圖1 ecos的層次結(jié)構(gòu)框圖內(nèi)核是ecos的一個核心組件,也是系統(tǒng)的一個可選組件,一些較為復(fù)雜的應(yīng)用需要內(nèi)核的支持。內(nèi)核提供了多個可供挑選的調(diào)度算法,可以很好地支持多任務(wù)處理。ecos內(nèi)核提供了一組豐盛的同步源語,徹低能滿足各種嵌入式應(yīng)用的需求。內(nèi)核還負(fù)責(zé)對中斷和例外舉行處理,它的中斷滯后處理機(jī)制保證了系統(tǒng)的實時性。此外,內(nèi)核還具有內(nèi)存分配機(jī)制和定時機(jī)制,并提供多線程gdb調(diào)試支持。內(nèi)核為上層軟件和應(yīng)用

3、軟件提供了豐盛的api接口函數(shù)。redboot是一個無內(nèi)核的系統(tǒng)引導(dǎo)程序,是ecos的一個特別應(yīng)用。redboot可以加載ecos應(yīng)用程序,并提供debug支持,是開發(fā)ecos系統(tǒng)時十分實用的工具。設(shè)備驅(qū)動程序負(fù)責(zé)對硬件設(shè)備舉行控制和管理,并完成設(shè)備數(shù)據(jù)的讀/寫操作。設(shè)備驅(qū)動程序自身也采納層次結(jié)構(gòu),上層驅(qū)動程序(相當(dāng)于一個虛設(shè)備)可以調(diào)用下層驅(qū)動程序(物理設(shè)備)。驅(qū)動程序為上層軟件提供標(biāo)準(zhǔn)的api函數(shù),應(yīng)用程序可以用法這些api函數(shù)對設(shè)備舉行拜訪。ecos包含的網(wǎng)絡(luò)支持包支持完整的tcp/ip網(wǎng)絡(luò)協(xié)議棧。ecos還提供了標(biāo)準(zhǔn)庫(ansi c庫和數(shù)學(xué)庫)、兼容層(posix兼容和uitron兼容

4、)、文件系統(tǒng)等。作為一種開放軟件,ecos還可以很便利地容納第三方軟件。1.2 可配置性原理ecos的一個主要特性就是其可配置特性??膳渲眯越K于是靠代碼中的條件編譯來完成的,條件編譯是編程語言的特點,并不是ecos的原創(chuàng)。當(dāng)一個軟件工程中的條件編譯項的數(shù)目和復(fù)雜性達(dá)到一定程度時,其中有一些條件編譯項就會由于存在規(guī)律上的依靠關(guān)系而使條件編譯產(chǎn)生矛盾。而如何發(fā)覺并有效解決這種矛盾才是ecos可配置性的特點,2所示,其可配置特性的實現(xiàn)主要由組件定義語言cdl(component definition language)、組件倉庫ecos.db、圖形配置工具configtool三者共同完成。圖2 可配

5、置機(jī)制(1) 組件定義語言cdlcdl是ecos組件框架中的一個關(guān)鍵部分,ecos全部模塊的程序包中都包含一個cdl腳本對該包舉行描述并提供配置選項。以本系統(tǒng)中的串口驅(qū)動程序包為例,在該包對應(yīng)的cdl中定義了一個名為cygpkg_io_serial_at91的cdl_package。在這個cdl_package中具體列出了該包的一些屬性,如該包必需在工程已經(jīng)包含了硬件抽象層包cygpkg_hal_arm_at91和上層串口i/o包cygpkg_io_serial的狀況下才會被使能。另外,串口的一些常用特性,如波特率、設(shè)備名、緩沖區(qū)大小等配置選項也是必不行少的。在一些復(fù)雜的cdl中還會包含對該包

6、中的源程序舉行編譯時的一些編譯選項。在舉行配置的時候,該包還會產(chǎn)生一個包含了各個可配置參數(shù)數(shù)值的頭文件。當(dāng)其他包用法由cygpkg_io_serial_arm_at91包提供的可配置參數(shù)時,這個新產(chǎn)生的頭文件就會被相關(guān)的源文件通過include語法包含。(2) 組件倉庫ecos.dbecos.db是一個包含了全部可用程序包和配置模版的文本文件。在該文件中,需要注冊全部的cdl包。在注冊時以package關(guān)鍵字提供相應(yīng)包的名稱、cdl腳本文件的文件路徑以及對該包的一個容易描述。在ecos.db中還會以target關(guān)鍵字生成配置模版,從而提供目標(biāo)平臺的一些基本組成結(jié)構(gòu),使目標(biāo)平臺包括所需要的已經(jīng)注

7、冊了的cdl配置包。(3) 圖形配置工具configtoolconfigtool是利用mfc編寫的windows程序,是ecos可配置性的執(zhí)行者,也可以理解成是cdl腳本的說明器。一方面它讀取ecos.db文件中的目標(biāo)平臺和已注冊的配置包信息,按照配置包的路徑找到相應(yīng)的cdl腳本,然后按照腳本中給出的屬性向程序員提供圖形化的配置信息;另一方面,它還可以接受用戶的輸入,包括單選按鈕、復(fù)選框、下拉列表、文本輸入等。當(dāng)用戶保存一個配置時,configtool會按照cdl語言的提醒生成相應(yīng)的頭文件,也會將指定的頭文件從配置包中復(fù)制到配置文件所在的工作名目。無論是生成的頭文件還是拷貝的頭文件,都會在編譯

8、時被源程序所引用。對于內(nèi)核源程序,configtool又可以理解成編譯器。當(dāng)用戶的配置選項被保存并且對工程舉行編譯時,configtool會在后臺調(diào)用真正的編譯器gcc,按照配置包cdl中的編譯選項控制gcc對全部需要的內(nèi)核源文件舉行編譯并生成庫文件和對應(yīng)的鏈接腳本。固然configtool只是對ecos內(nèi)核舉行編譯,用戶的應(yīng)用程序只需在編譯時和由configtool編譯生成的庫文件舉行鏈接就可以得到終于的可執(zhí)行映像文件。2 系統(tǒng)硬件框架本系統(tǒng)是一個以arm7為核心構(gòu)成的測控系統(tǒng),通過對的脈沖信號舉行處理而得到待測物料的流量,并通過控制給料器的給料速度達(dá)到流量控制的目的。對于一個有有用價值的測

9、控系統(tǒng),必需具有人機(jī)交互、閉環(huán)控制、數(shù)據(jù)通信和存儲等功能。本課題所研制的流量測控系統(tǒng)的硬件框圖3所示。圖3 流量測控系統(tǒng)硬件框圖圖3中,處理器為arm7內(nèi)核的工業(yè)級芯片at91m55800,其強(qiáng)大的功能保證了系統(tǒng)的實時性和穩(wěn)定性的要求。2 mb的flash sst39vf160用來保存程序代碼、測量所需的一些參數(shù)以及測量結(jié)果的容易統(tǒng)計信息。在工業(yè)生產(chǎn)中,常常需要對一次測量中的數(shù)據(jù)舉行歷史再現(xiàn),以便對一些事故或故障舉行排查。本系統(tǒng)通過采納1 mb的大容量ram來實現(xiàn)這一功能:除了用來作為程序運行時的內(nèi)存外,ram還用來實時保存每一時刻的測量數(shù)據(jù)。的通信口用來和現(xiàn)場計算機(jī)舉行通信,以實現(xiàn)一些越發(fā)完

10、美的處理,如數(shù)據(jù)打印、結(jié)果分析、實時數(shù)據(jù)的硬盤保存等。辨別率為320×240的用來作為系統(tǒng)的顯示終端協(xié)作4×5的鍵盤來完成系統(tǒng)的人機(jī)交互操作。對變頻器的控制和對溫度信號的采集通過485總線完成。6路脈沖信號是本系統(tǒng)測量功能的核心,通過對這6路脈沖舉行處理可以得到流量相關(guān)的全部信息。4"20 ma信號用來控制給料系統(tǒng),以實現(xiàn)閉環(huán)控制。因為在工業(yè)環(huán)境中用法,對于一些長線銜接必需實行隔離措施。本系統(tǒng)對測量脈沖、485通信信號和4"20 ma電流信號都實行了光電隔離措施。3 ecos在系統(tǒng)上的移植與應(yīng)用軟件編寫3.1 ecos內(nèi)核的移植因為ecos內(nèi)核采納了可配

11、置的模塊化設(shè)計思想,因此只要修改硬件抽象層hal的代碼和cdl腳本并且在ecos.db中注冊就可以應(yīng)用于新的目標(biāo)系統(tǒng)。hal又可以細(xì)分為3個層次: 體系結(jié)構(gòu)抽象層。ecos是可以應(yīng)用于多種體系結(jié)構(gòu)平臺上的操作系統(tǒng),如arm、powerpc等,在ecos發(fā)布時已經(jīng)將這些體系結(jié)構(gòu)層的移植包一同發(fā)布了出來。本系統(tǒng)的體系結(jié)構(gòu)抽象層是arm7體系結(jié)構(gòu)抽象層。 變體抽象層。對于同一種體系結(jié)構(gòu)的處理器,各生產(chǎn)廠家會有不同的系列和型號(如的at91系列、philips的lpc系列等),雖然它們都采納arm7體系結(jié)構(gòu),但是不同的寄存器配置模式和中斷處理辦法也會影響到ecos的移植。本系統(tǒng)所用法的處理器at91m

12、55800用法較為普遍,在ecos開源社區(qū)已經(jīng)有移植好的at91m55800變體抽象層的代碼和cdl腳本,只需作系統(tǒng)啟動后對i/o口的賦值狀況等少許的改動即可完成對變體抽象層的移植。 平臺抽象層。平臺抽象層是對目標(biāo)系統(tǒng)的囫圇硬件平臺舉行抽象,包括平臺的啟動、芯片配置、定時、i/o寄存器及中斷寄存等等。系統(tǒng)需要舉行的移植工作主要是平臺抽象層的移植,而平臺抽象層中最重要的是flash驅(qū)動包和內(nèi)存布局文件的移植。主要的步驟為: 安裝at91m55800變體抽象層包。從ecos開源社區(qū)下載好的變體抽象層包在一個名為eb55的文件夾中,在這個文件夾中還有cdl、include、src等子文件夾分離包含了

13、cdl腳本、頭文件,源文件。因為ecos的軟件包有嚴(yán)格的層次結(jié)構(gòu),所以在安裝軟件包時應(yīng)遵循這一結(jié)構(gòu)以便于維護(hù)。at91m55800屬于arm7的一個變體,同at91系列的其他cpu處于同一層次,所以變體抽象層軟件包文件夾eb55的詳細(xì)路徑應(yīng)為/hal/arm/at91/eb55。接下來還應(yīng)在ecos.db中注冊變體抽象層包,以package關(guān)鍵字注冊名為cygpkg_hal_arm_at91_eb55的包,這個名字必需和包中cdl文件hal_arm_at91_eb55.cdl中的所定義的包名徹低全都。在包名后面的花括號中記下hal_arm_at91_eb55.cdl文件的路徑及文件名,以及對該

14、包的容易文字解釋。 編寫flash的底層驅(qū)動軟件包,以便能夠操作目標(biāo)系統(tǒng)的flash存儲器。因為本系統(tǒng)在前期調(diào)試和代碼固化時利用了redboot,而redboot通過flash驅(qū)動程序操作目標(biāo)flash,所以必需先移植好flash驅(qū)動程序才干舉行更進(jìn)一步的開發(fā)工作。首先需要編寫底層驅(qū)動程序源文件。不同的flash的塊空間大小以及寫操作普通是不一樣的。本系統(tǒng)所用的flash sst39vf160是2 mb的16位nor flash,共有512(0x200)個塊空間,其塊大小為4k(0x1000),寫操作的指令碼符合jedec標(biāo)準(zhǔn)。這些特點與atmel公司at49系列flash比較類似,因此fla

15、sh驅(qū)動程序可以從ecos發(fā)布時自帶的at49系列flash的驅(qū)動程序修改得到。最重要的地方是修改描述flash特性的結(jié)構(gòu)體flash_dev_info_t變量中成員block_size和block_count的值,使其分離為0x1000和0x200。接下來需要編寫與flash底層驅(qū)動對應(yīng)cdl腳本,使配置工具configtool能夠正確配置編譯flash驅(qū)動程序。這個cdl文件徹低可以參照at49驅(qū)動包中的cdl文件編寫。以cdl_package關(guān)鍵字定義名為cygpkg_devs_flash_sst_39vf160的包,在指令體中給出詳細(xì)的配置參數(shù)。因為底層驅(qū)動包必需結(jié)合上層驅(qū)動才干工作,

16、所以在指令體中用active_if cygpkg_io_flash指令告知configtool,必需在上層驅(qū)動包cygpkg_io_flash已經(jīng)被包含的狀況下底層驅(qū)動包才會使能。最后,需要在ecos.db中注冊底層驅(qū)動軟件包。詳細(xì)做法和變體抽象層包的注冊辦法相同。 修改內(nèi)存布局文件,使configtool能夠正確定位程序在系統(tǒng)存儲器中的位置。ecos提供3種不同的運行方式,即rom方式、ram方式、romram方式。每種模式都有兩個相應(yīng)的布局文件,如ram方式的mlt_arm_at91_eb55_ram.ldi和mlt_arm_at91_eb55_ram.h。*.ldi和頻繁的arm開發(fā)環(huán)境

17、ads中scattered鏈接方式下的*.scf文件的作用類似,即用來對不同段分離指定不同的鏈接地址。在*.ldi中需要修改memory和secti*兩部分。對于代碼在ram中運行的內(nèi)核及應(yīng)用程序,需要按照系統(tǒng)ram的實際狀況修改內(nèi)存布局文件中相關(guān)參數(shù)的值。本系統(tǒng)具有1 mb的ram,但有一半用來存放測量數(shù)據(jù),按照系統(tǒng)實際的硬件狀況,其起始地址為0x02000000,大小為0x80000,所以這個內(nèi)存塊定義為ram: rigin=0x02000000, length=0x80000。處理器內(nèi)部集成了8 kb sram,其起始地址為0,大小為0x2000,所以這個內(nèi)存塊定義為sram: rigi

18、n=0x00000000,length=0x2000。這樣系統(tǒng)的memory部分就由名為ram和sram的兩個內(nèi)存塊構(gòu)成。系統(tǒng)比較重要的兩處secti*部分的修改為section_fixed_vectors (sram, 0x20, lma_eq_vma) 和section_rom_vectors (ram, 0x02008000, lma_eq_vma),第一處表示fixed_vectors段分配在從0x20開頭的sram中,且lma_eq_vma指定其加載地址等于虛擬地址。因為redboot運行時需要占用從0x02000000開頭的一定空間的ram,所以其次處使程序代碼從0x0200800

19、0開頭的ram中運行。*.ldi文件修改完畢后需要相應(yīng)地修改*.h文件中的宏,如define cygmem_region_ram (0x02000000)。 在組件倉庫ecos.db中為以關(guān)鍵字target添加名為flow55的新目標(biāo)平臺。在這個目標(biāo)平臺中還必需用關(guān)鍵字packages包括arm7體系結(jié)構(gòu)層包和at91m55800變體抽象層包,同時為了實現(xiàn)調(diào)試還必需包括串口驅(qū)動包和flash驅(qū)動包及其上層驅(qū)動包。除了這些被包含的軟件包外,按照不同的挑選configtool還會為目標(biāo)平臺包添加一些默認(rèn)的包,如內(nèi)核包、數(shù)學(xué)庫包等。另外,還應(yīng)加入一些對該平臺的容易描述。3.2 內(nèi)核的配置移植完成以后

20、,一個最基本的目標(biāo)平臺就產(chǎn)生了。在configtool中可以看到templates菜單的硬件平臺列表中新增了flow55目標(biāo)平臺模版,以default方式打開這個模版。各個軟件包的cdl腳本中都給出了默認(rèn)的配置值,有些值需要按照詳細(xì)的應(yīng)用要求重新配置。本系統(tǒng)一些重要的配置狀況如下: 因為系統(tǒng)線程數(shù)量較少(小于10),所以挑選效率更高的位圖調(diào)度器bitmap scheduler,并將線程數(shù)numbers of priority levels限定為16,以提高任務(wù)切換的速度。當(dāng)點擊位圖調(diào)度器的單選按鈕時,configtool會檢測到一個配置矛盾。因為時光片輪轉(zhuǎn)是默認(rèn)使能的,而時光片輪轉(zhuǎn)僅僅對應(yīng)于多

21、級隊列調(diào)度器,所以浮現(xiàn)配置矛盾。configtool會給出一個推舉的解決矛盾的辦法,即禁止時光片輪轉(zhuǎn),根據(jù)這個推舉的解決辦法可以平安地解決這個矛盾。這個地方可以充分體現(xiàn)出ecos強(qiáng)大的可配置性。 因為協(xié)作redboot一起用法,所以內(nèi)核配置為ram啟動方式。這樣,系統(tǒng)上電后程序?qū)⒂蓃edboot復(fù)制到ram中運行,以提高速度。 系統(tǒng)的晶振頻率為16 mhz,經(jīng)pll倍頻后為32 mhz,所以需將clock speed配置為32000000;rtc是系統(tǒng)的時鐘節(jié)拍發(fā)生器,本系統(tǒng)的時鐘節(jié)拍時光選為20 ms,所以也需要對rtc相關(guān)項舉行配置。詳細(xì)參數(shù)為real?time clock numerator配置為2000000000,real?time clock denominator配置為100,real?time clock period配置為20000。其余的配置選項用法默認(rèn)的配置值即可。完成配置工作后,對內(nèi)核舉行編譯可以產(chǎn)生內(nèi)核庫文件和鏈接腳本以及相關(guān)頭文件。這些生成的文件再同應(yīng)用程序一起編

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論