在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于eCos操作系統(tǒng)的FLASH驅(qū)動(dòng)程序分析與移植

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

      作者: 時(shí)間:2009-12-25 來源:網(wǎng)絡(luò) 收藏

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

      本文引用地址:http://www.biyoush.com/article/152193.htm

      2.1 設(shè)備程序用戶API
      為應(yīng)用程序提供了一組用戶API函數(shù),這些操作包括對(duì)設(shè)備進(jìn)行初始化和配置,獲取配置信息,對(duì)設(shè)備進(jìn)行讀寫等。設(shè)備驅(qū)動(dòng)程序必須使用設(shè)備句柄進(jìn)行設(shè)備操作,通過cyg_io_lookup()函數(shù)把設(shè)備在系統(tǒng)中的惟一名字映射成設(shè)備句柄。
      2.2 eCos驅(qū)動(dòng)程序與內(nèi)核及HAL的接口
      應(yīng)用程序在使用設(shè)備的時(shí)候,通過驅(qū)動(dòng)程序的用戶API函數(shù)訪問設(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)核又通過硬件抽象層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對(duì)硬件進(jì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)用程序訪問設(shè)備時(shí)使用邏輯設(shè)備名,每個(gè)設(shè)備都對(duì)應(yīng)一個(gè)惟一的邏輯設(shè)備名。DEV包提供設(shè)備操作的底層實(shí)現(xiàn),對(duì)硬件通過HAL直接操作。
      eCos中的所有設(shè)備驅(qū)動(dòng)程序都使用設(shè)備表入口進(jìn)行描述。設(shè)備表入口使用宏DEVTAB_ENTRY()可以生成一個(gè)設(shè)備表入口數(shù)據(jù)結(jié)構(gòu)。其中,_handlers指向DEVIO_TABLE入口函數(shù)。提供用戶應(yīng)用程序的調(diào)用支持;_priv指向設(shè)備真正的硬件操作數(shù)據(jù)結(jié)構(gòu),提供硬件設(shè)備與上層軟件的交互。設(shè)備I/O入口宏定義如下:


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


      3 基于方舟開發(fā)板的Inter 驅(qū)動(dòng)程序
      3.1 Inter公司的TE28F320的芯片驅(qū)動(dòng)程序分柢
      Inter 驅(qū)動(dòng)程序FLASH_28fxxx.inl文件定義了FLASH設(shè)備低層的管理設(shè)備I/O函數(shù),F(xiàn)LASH_28fxxx_parts.inl文件定義了FLASH設(shè)備邏輯信息。eCos系統(tǒng)I/O包使用DEVTAB_ENTRY()和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)開發(fā)板的設(shè)計(jì)規(guī)范,系統(tǒng)的FLASH的物理地址從0x00000000開始,系統(tǒng)設(shè)計(jì)編寫程序時(shí)使用相應(yīng)的虛擬地址空間為0x80000000~0x80FFFFFF。SRAM的物理地址從0x04000000開始,使用相應(yīng)的虛擬地址空間為0x84000000~0x84200000。

      linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


      評(píng)論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉