• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于eCos操作系統(tǒng)的FLASH驅(qū)動(dòng)程序分析與移植

      2010-06-22 03:41:08強(qiáng)張麗杰
      現(xiàn)代電子技術(shù) 2009年22期
      關(guān)鍵詞:配置驅(qū)動(dòng)

      石 強(qiáng) 張麗杰 常 佶

      摘 要:為了在基于方舟CPU的小型無(wú)人機(jī)控制駕駛儀的硬件開(kāi)發(fā)板上移植eCos可配置實(shí)時(shí)操作系統(tǒng),研究eCos系統(tǒng)的硬件抽象層和設(shè)備驅(qū)動(dòng)程序的體系結(jié)構(gòu),修改和移植基于Arca公司提供的eCos硬件抽象層和Inter FLASH設(shè)備驅(qū)動(dòng)程序的源代碼,最后對(duì)移植后的Inter FLASH設(shè)備驅(qū)動(dòng)程序進(jìn)行系統(tǒng)測(cè)試。結(jié)果表明Redboot系統(tǒng)運(yùn)行穩(wěn)定可靠。

      關(guān)鍵詞:Arca;eCos;Redboot;硬件抽象層;配置;驅(qū)動(dòng)

      中圖分類(lèi)號(hào):TP273

      0 引 言

      嵌入式系統(tǒng)需要支持的外部設(shè)備種類(lèi)繁多,如何構(gòu)造運(yùn)行良好的嵌入式設(shè)備的驅(qū)動(dòng)程序,對(duì)嵌入式操作系統(tǒng)的實(shí)際應(yīng)用有重要意義。eCos是一種源代碼公開(kāi)的實(shí)時(shí)嵌入式操作系統(tǒng),對(duì)嵌入式應(yīng)用具有良好的支持,內(nèi)核專(zhuān)門(mén)設(shè)計(jì)了便于設(shè)備驅(qū)動(dòng)管理和開(kāi)發(fā)的I/O包和DEV包,開(kāi)發(fā)人員可以方便地將自己開(kāi)發(fā)的驅(qū)動(dòng)程序加入其中,與別的系統(tǒng)組件一起進(jìn)行配置。

      1 系統(tǒng)目標(biāo)板簡(jiǎn)介

      硬件目標(biāo)板是為無(wú)人機(jī)系統(tǒng)設(shè)計(jì)的系統(tǒng)開(kāi)發(fā)板,它是從Arca系統(tǒng)測(cè)試板經(jīng)過(guò)功能簡(jiǎn)化設(shè)計(jì)而來(lái)的滿(mǎn)足無(wú)人機(jī)系統(tǒng)要求的目標(biāo)板。硬件目標(biāo)板如圖1所示。

      GT2000 支持SRAM,FLASH,ROM,VLIO(靜態(tài)段支持可變等待時(shí)間I/O 設(shè)備)和SDRAM(同步動(dòng)態(tài)RAM)等外部擴(kuò)展存儲(chǔ)器。GT2000的外部地址空間是按體(bank)劃分的,有四個(gè)體屬于靜態(tài)存儲(chǔ)器區(qū)域,由引腳〤S0猍TX-]~〤S3猍TX-]選擇,在將FLASH,SRAM,VLIO(用作其他外設(shè)接口)等靜態(tài)I/O設(shè)備地址分別設(shè)計(jì)在〤S0猍TX-]~〤S2猍TX-]區(qū)域內(nèi),由GT2000內(nèi)部的外部?jī)?nèi)存訪(fǎng)問(wèn)接口(EMI)控制器中的靜態(tài)內(nèi)存訪(fǎng)問(wèn)控制寄存器(SMCR)進(jìn)行訪(fǎng)問(wèn)控制,分配地址訪(fǎng)問(wèn)接口。

      系統(tǒng)目標(biāo)板選用兩片Intel 公司的TE28F320 的FLASH(16 位)并聯(lián)獲得32 位總線(xiàn)寬度。Intel 公司的TE28F320 是32 Mb(2 M×16 b)多功能FLASH, 2.7~3.6 V單電源供電,讀取時(shí)間為70 ns,封裝格式為48[CD*2]Pin TSOP(12 mm×20 mm)或48[CD*2]Ball TFBGA,可被擦寫(xiě)10 000 次。方舟的JTAG 仿真器支持TE28F320 FLASH,可以通過(guò)JTAG 接口進(jìn)行在線(xiàn)讀寫(xiě)和擦除,這給調(diào)試程序和硬件提供了方便。

      FLASH 的電路原理圖以及GT2000 的引腳“DACK[2..1]/MD_MEM[1..0]”設(shè)置如圖2所示。オ[KH-1]

      2 eCos驅(qū)動(dòng)程序的體系結(jié)構(gòu)與驅(qū)動(dòng)程序設(shè)計(jì)模式

      eCos操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序通常包含以下內(nèi)容:提供一些底層函數(shù),負(fù)責(zé)完成設(shè)備初始化與配置、注冊(cè)設(shè)備,從設(shè)備收發(fā)數(shù)據(jù)、控制設(shè)備、處理設(shè)備中斷等,并進(jìn)行設(shè)備管理。eCos操作系統(tǒng)內(nèi)核支持設(shè)備驅(qū)動(dòng)程序的同步、計(jì)時(shí)、內(nèi)存管理、緩沖區(qū)管理、設(shè)備名空間及資源管理等。

      eCos系統(tǒng)的I/O包中包含了設(shè)備的驅(qū)動(dòng)程序接口模塊,全部是以組件的形式存在。設(shè)備驅(qū)動(dòng)程序模塊支持系統(tǒng)設(shè)計(jì)的分層結(jié)構(gòu)。設(shè)備I/O包中的程序需要使用設(shè)備DEV包中的程序,而設(shè)備DEV包中的程序需要調(diào)用eCos的硬件抽象層包中的底層接口函數(shù),如┩3所示。

      2.1 設(shè)備驅(qū)動(dòng)程序用戶(hù)API

      eCos為應(yīng)用程序提供了一組用戶(hù)API函數(shù),這些操作包括對(duì)設(shè)備進(jìn)行初始化和配置,獲取配置信息,對(duì)設(shè)備進(jìn)行讀寫(xiě)等。設(shè)備驅(qū)動(dòng)程序必須使用設(shè)備句柄進(jìn)行設(shè)備操作,通過(guò)cyg_io_lookup()函數(shù)把設(shè)備在系統(tǒng)中的惟一名字映射成設(shè)備句柄。

      2.2 eCos驅(qū)動(dòng)程序與內(nèi)核及HAL的接口

      應(yīng)用程序在使用設(shè)備的時(shí)候,通過(guò)驅(qū)動(dòng)程序的用戶(hù)API函數(shù)訪(fǎng)問(wèn)設(shè)備驅(qū)動(dòng)程序,設(shè)備驅(qū)動(dòng)程序又調(diào)用設(shè)備內(nèi)核API函數(shù)與內(nèi)核和硬件抽象層HAL進(jìn)行交互,設(shè)備驅(qū)動(dòng)程序和內(nèi)核又通過(guò)硬件抽象層HAL對(duì)硬件平臺(tái)進(jìn)行操作。

      eCos內(nèi)核向設(shè)備驅(qū)動(dòng)程序提供調(diào)度、時(shí)鐘、同步、中斷等內(nèi)核服務(wù)的支持。在某些嵌入式應(yīng)用中,部分內(nèi)核服務(wù)并不是必需的。在配置時(shí)不選擇Kernel包,設(shè)備驅(qū)動(dòng)程序的內(nèi)核服務(wù)支持由硬件抽象層提供。

      HAL包含所有與平臺(tái)相關(guān)的代碼,是eCos操作系統(tǒng)對(duì)硬件進(jìn)行的抽象定義,它直接控制和訪(fǎng)問(wèn)硬件,為eCos內(nèi)核和高層代碼提供服務(wù)。

      I/O包和DEV包構(gòu)成了eCos驅(qū)動(dòng)程序的基本框架。設(shè)備驅(qū)動(dòng)程序一般分為三個(gè)部分,分別為設(shè)備表入口DEVTAB_ENTRY、設(shè)備I/O函數(shù)表DEVIO_TAB和設(shè)備I/O函數(shù)。I/O包提供抽象的設(shè)備操作支持,應(yīng)用程序訪(fǎng)問(wèn)設(shè)備時(shí)使用邏輯設(shè)備名,每個(gè)設(shè)備都對(duì)應(yīng)┮桓霆惟一的邏輯設(shè)備名。DEV包提供設(shè)備操作的底層實(shí)現(xiàn),對(duì)硬件通過(guò)HAL直接操作。

      eCos中的所有設(shè)備驅(qū)動(dòng)程序都使用設(shè)備表入口進(jìn)行描述。設(shè)備表入口使用宏DEVTAB_ENTRY()可以生成一個(gè)設(shè)備表入口數(shù)據(jù)結(jié)構(gòu)。其中,_handlers指向DEVIO_TABLE入口函數(shù),提供用戶(hù)應(yīng)用程序的調(diào)用支持;_priv指向設(shè)備真正的硬件操作數(shù)據(jù)結(jié)構(gòu),提供硬件設(shè)備與上層軟件的交互。設(shè)備I/O入口宏定義如下:

      2.3 設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)模式

      一般來(lái)說(shuō),eCos提供了三種驅(qū)動(dòng)程序設(shè)計(jì)模式。設(shè)備驅(qū)動(dòng)程序與內(nèi)核和HAL之間的API接口主要對(duì)中斷以及中斷處理程序的ISR,DSR和線(xiàn)程的同步進(jìn)行控制和管理。eCos設(shè)備驅(qū)動(dòng)程序的中斷模塊分為┤個(gè)層次,分別是中斷服務(wù)程序ISR,中斷滯后服務(wù)程序DSR和中斷線(xiàn)程。中斷服務(wù)程序ISR在響應(yīng)中斷時(shí)立即調(diào)用,中斷滯后服務(wù)程序DSR由ISR發(fā)出調(diào)用請(qǐng)求后執(zhí)行,中斷線(xiàn)程為驅(qū)動(dòng)程序的客戶(hù)程序。具體為硬件抽象層HAL對(duì)硬件中斷源譯碼,并在最短的時(shí)間內(nèi)調(diào)用ISR中斷服務(wù)程序,ISR對(duì)硬件中斷可以立即處理,但限于與中斷線(xiàn)程交互較少的設(shè)備。大多數(shù)情況下,需要請(qǐng)求相應(yīng)的中斷滯后服務(wù)程序DSR進(jìn)入線(xiàn)程調(diào)度運(yùn)行,DSR將在ISR執(zhí)行完成后立即運(yùn)行。如果需要復(fù)雜的中斷服務(wù)則要用戶(hù)自己定義中斷線(xiàn)程。對(duì)于一個(gè)具有中斷的設(shè)備驅(qū)動(dòng)程序,必須提供ISR和DSR。

      3 [ZK(]基于方舟開(kāi)發(fā)板的Inter FLASH驅(qū)動(dòng)程序分析與移植[ZK)][BT)]

      [BT(3+1]3.1 [ZK(]Inter公司的TE28F320 的FLASH芯片驅(qū)動(dòng)程序分析[ZK)][BT)]

      Inter FLASH驅(qū)動(dòng)程序FLASH_28fxxx.inl文件定義了FLASH設(shè)備低層的管理設(shè)備I/O函數(shù), FLASH_28fxxx_parts.inl文件定義了FLASH設(shè)備邏輯信息,eCos系統(tǒng)I/O包使用DEVTAB_〦NTRY ()和DEVIO_TABLE()定義的_priv指針對(duì)FLASH設(shè)備低層I/O函數(shù)進(jìn)行調(diào)用。

      具體定義如下:

      3.2 系統(tǒng)地址空間的分配方案。

      當(dāng) MMU內(nèi)存管理單元的控制寄存器MCR.ATE為0時(shí),地址映射方式變?yōu)橹苯佑成湮锢矸绞?如圖4所示。

      直接映射方式的映射關(guān)系是:在使用高速緩存方式時(shí)將虛擬地址A1區(qū)域(0x80000000~0xA0000000)映射到實(shí)際物理地址0x00000000~0x20000000的區(qū)域;根據(jù)目標(biāo)開(kāi)發(fā)板的設(shè)計(jì)規(guī)范,系統(tǒng)的FLASH的物理地址從0x00000000開(kāi)始,系統(tǒng)設(shè)計(jì)編寫(xiě)程序時(shí)使用相應(yīng)的虛擬地址空間為 0x80000000~0x80FFFFFF。SRAM的物理地址從0x04000000開(kāi)始,使用相應(yīng)的虛擬地址空間為0x84000000~0x84200000。

      不同的兩塊開(kāi)發(fā)板所采用的芯片,特別是FLASH芯片有可能是不一樣的。由于為無(wú)人機(jī)專(zhuān)門(mén)設(shè)計(jì)開(kāi)發(fā)的目標(biāo)板使用的是Inter公司的TE28F320 的FLASH芯片,與Arca公司使用的FLASH驅(qū)動(dòng)程序不一樣,必須修改FLASH驅(qū)動(dòng)及FLASH和SRAM的配置信息。

      (1) SRAM布局文件修改如下:

      Redboot是一個(gè)標(biāo)準(zhǔn)的嵌入式系統(tǒng)引導(dǎo)和Debug環(huán)境,是基于eCos的一個(gè)應(yīng)用程序,使用eCos的硬件抽象層作為它的基礎(chǔ)。內(nèi)含GDBstub,允許從應(yīng)用程序調(diào)試的GDB宿主機(jī)鏈接目標(biāo)平臺(tái),通過(guò)串口或網(wǎng)口進(jìn)行調(diào)試。既可以用在產(chǎn)品的開(kāi)發(fā)階段(調(diào)試功能),也可以用在最終的產(chǎn)品上。

      [BT3]4.2 系統(tǒng)測(cè)試結(jié)果

      使用eCos圖形配置工具對(duì)修改好的eCos硬件抽象層和FLASH設(shè)備驅(qū)動(dòng)程序進(jìn)行裁剪,并用串口進(jìn)行系統(tǒng)測(cè)試,通過(guò)minicom顯示Redboot運(yùn)行的FLASH和SRAM地址結(jié)果如圖5所示。

      5 結(jié) 語(yǔ)

      本文通過(guò)裁剪和移植FLASH驅(qū)動(dòng)程序到目標(biāo)開(kāi)發(fā)板上,展示了具體的修改硬件抽象層和設(shè)備驅(qū)動(dòng)程序代碼方法。通過(guò)實(shí)際裁剪,配置一個(gè)具有實(shí)際應(yīng)用價(jià)值的Redboot,對(duì)于嵌入式技術(shù)的學(xué)習(xí)和應(yīng)用具有現(xiàn)實(shí)的意義。本文的難點(diǎn)在于eCos硬件抽象層和設(shè)備驅(qū)動(dòng)程序源代碼的理解和修改。

      參 考 文 獻(xiàn)

      [1]李立杰,張麗杰,賈小鐵.基于方舟GT2000嵌入式小系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006(Z9):48[CD*2]51.

      [2]蔣句平.嵌入式可配置實(shí)時(shí)操作系統(tǒng)eCos開(kāi)發(fā)和應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2004.

      [3]方舟科技有限公司.Draco[CD*2]SW[CD*2]Guide[Z].2003.

      [4]方舟科技有限公司.Arca210 Hardware Manual[Z].2003.

      [5][美]Anthony J Massa.嵌入式可配置實(shí)時(shí)操作系統(tǒng)eCos軟件開(kāi)發(fā)[M].顏若麟,孫曉明,尤偉偉,等譯.北京:北京航空航天大學(xué)出版社,2006.

      [6]方舟科技有限公司.GT2000 Board Design Guide[Z].2003.

      [7]秦懷峰,施笑安,周興社,等.eCos設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)分析[J].微電子學(xué)與計(jì)算機(jī),2003,20(7):8[CD*2]12.

      [8]張麗杰,呂少中.基于方舟CPU的嵌入式SoC及其軟硬件開(kāi)發(fā)平臺(tái)[J].半導(dǎo)體技術(shù),2003,29(12):16[CD*2]19.

      [9]Rubini A,Corbet J.Linux設(shè)備驅(qū)動(dòng)程序[M].2版.魏永明,譯.北京:中國(guó)電力出版社,2002.

      [10]邱麗波,邵笑梅,蘇慧祎,等.嵌入式系統(tǒng)eCOS移植分析及應(yīng)用[J].現(xiàn)代電子技術(shù),2008,31(24):45[CD*2]48.

      作者簡(jiǎn)介 石 強(qiáng) 男,1976年出生,內(nèi)蒙古呼和浩特人,在讀碩士研究生,專(zhuān)業(yè)為計(jì)算機(jī)應(yīng)用技術(shù)。

      張麗杰 女,1973年出生,內(nèi)蒙古呼和浩特人,副教授,碩士生導(dǎo)師,在讀博士研究生,內(nèi)蒙古工業(yè)大學(xué)計(jì)算機(jī)系教師。

      常 佶 男,1944年出生,內(nèi)蒙古呼和浩特人,教授,博士生導(dǎo)師,內(nèi)蒙古自治區(qū)機(jī)電控制重點(diǎn)實(shí)驗(yàn)室主任。

      猜你喜歡
      配置驅(qū)動(dòng)
      基于模糊PI控制的驅(qū)動(dòng)防滑仿真系統(tǒng)分析
      屈宏斌:未來(lái)五年,雙輪驅(qū)動(dòng),砥礪前行
      軌旁ATC系統(tǒng)門(mén)控柜接收/驅(qū)動(dòng)板改造
      在808DA上使用WIFI進(jìn)行驅(qū)動(dòng)數(shù)據(jù)同步
      簡(jiǎn)析電力系統(tǒng)繼電保護(hù)技術(shù)及配置應(yīng)用
      一種智能家居系統(tǒng)自學(xué)習(xí)免配置方法
      世界主要國(guó)家軍民融合式發(fā)展財(cái)力資源配置的啟示
      商情(2016年39期)2016-11-21 10:03:22
      論高校網(wǎng)絡(luò)防火墻的配置與管理
      計(jì)算機(jī)Linux網(wǎng)絡(luò)操作系統(tǒng)特點(diǎn)及服務(wù)器配置研究
      試論人力資源配置及其作用與模式
      皮山县| 碌曲县| 万宁市| 玉门市| 内丘县| 沁源县| 铜鼓县| 遂昌县| 乐至县| 桃源县| 宣威市| 板桥市| 亚东县| 宿迁市| 郑州市| 五莲县| 新邵县| 北流市| 衡东县| 嘉鱼县| 庆云县| 绍兴县| 静安区| 梨树县| 柯坪县| 常德市| 密云县| 曲麻莱县| 四川省| 宁安市| 特克斯县| 江油市| 延吉市| 手机| 博白县| 淳化县| 巴东县| 新竹县| 民和| 登封市| 澄江县|