• 
    

    
    

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

      ?

      MQX操作系統(tǒng)底層驅(qū)動設計分析與改進*

      2020-03-20 03:05:32潘俊虹蔡闖華1
      吉首大學學報(自然科學版) 2020年1期
      關鍵詞:驅(qū)動程序調(diào)用隊列

      潘俊虹,彭 濤,蔡闖華1,

      (1.武夷學院數(shù)學與計算機學院,福建 武夷山 354300;2.蘇州大學計算機科學與技術學院,江蘇 蘇州 215006;3.認知計算與智能信息處理福建省高校重點實驗室,福建 武夷山 354300)

      MQX(Message Queue eXecutive,消息隊列執(zhí)行)是由恩智浦公司推出的一款免費、開源且提供持續(xù)技術支持的嵌入式實時操作系統(tǒng)(Embedded Real Time Operation System,RTOS)[1].MQX以其豐富的外設驅(qū)動、精簡的內(nèi)核、清晰的架構(gòu)和較強的實時性等優(yōu)點,在工業(yè)自動化、智能家居等領域廣泛應用.MQX版本在不斷更新,目前的最新版本是于2015年7月推出的MQX 4.2.0.鑒于MQX在嵌入式開發(fā)領域廣闊的市場前景[2-4],分析研究MQX底層設備驅(qū)動設計的原理和方法對促進其發(fā)展具有一定的意義.

      在嵌入式軟件系統(tǒng)中,底層設備驅(qū)動直接面向底層硬件,實現(xiàn)對底層硬件的訪問控制,是操作系統(tǒng)的重要組成部分[5].MQX采用統(tǒng)一的模型來管理設備驅(qū)動,用戶在應用程序中可以通過一組標準的接口函數(shù)對設備進行訪問.MQX根據(jù)管理設備方式的不同,將設備驅(qū)動分為內(nèi)核安裝管理的輸入輸出(Input/Output,I/O)子系統(tǒng)層設備驅(qū)動和非內(nèi)核安裝管理的驅(qū)動2大類.對于非內(nèi)核安裝類驅(qū)動,用戶直接調(diào)用MQX提供的應用程序編程接口(Application Programming Interface,API)函數(shù)或者靜態(tài)庫即可[6].筆者主要針對內(nèi)核安裝的I/O子系統(tǒng)層設備驅(qū)動管理和設計方法進行闡述,通過分析MQX底層設備驅(qū)動管理和設計模式,給出了底層驅(qū)動開發(fā)的基本方法,并在此基礎上對底層驅(qū)動設計方式進行改進.

      1 MQX設備驅(qū)動機制分析

      1.1 MQX底層設備驅(qū)動運行模式

      圖1 MQX I/O設備驅(qū)動層次結(jié)構(gòu)Fig.1 Hierarchical Structure of MQX I/O Device Drivers

      MQX標準I/O設備驅(qū)動可分為格式化ANSI(American National Standards Institute,美國國家標準協(xié)會)I/O層、MQX I/O子系統(tǒng)層和底層設備驅(qū)動層[7],具體結(jié)構(gòu)如圖1所示.

      格式化ANSI I/O層由應用程序調(diào)用,是MQX為應用程序提供的一組格式化ANSI文件接口.在源文件“MQXincludeio.h”中可以看出,MQX通過宏定義映射到I/O子系統(tǒng)層對應的接口函數(shù)上(表1).

      表1 MQX設備驅(qū)動函數(shù)映射關系Table 1 Mapping Relationship Between MQX Device Driver Functions

      MQX I/O子系統(tǒng)層遵循可移植操作系統(tǒng)接口(Portable Operating System Interface of UNIX,POSIX)標準[8],由格式化ANSI I/O層調(diào)用,是格式化ANSI I/O層與底層設備驅(qū)動的紐帶,它提供了專門的API函數(shù)將標準I/O函數(shù)與設備的私有信息及底層設備驅(qū)動進行關聯(lián).這些API函數(shù)中,最關鍵的是驅(qū)動注冊安裝函數(shù)io_dev_install.該函數(shù)主要功能是將包含有I/O設備的標識符、驅(qū)動函數(shù)名及其數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)體安裝到操作系統(tǒng)的設備管理隊列中.實際打開設備時,I/O子系統(tǒng)以設備標識符作為索引檢索設備管理隊列,建立設備文件到設備結(jié)點的關聯(lián),并返回文件指針,通過文件指針句柄調(diào)用關聯(lián)的設備驅(qū)動函數(shù)來執(zhí)行操作.通過這種方式,底層設備在MQX中被抽象成文件,借助文件名間接調(diào)動底層設備驅(qū)動,以實現(xiàn)打開設備和打開文件的方式統(tǒng)一.

      底層設備驅(qū)動層是根據(jù)各種具體設備開發(fā)的驅(qū)動程序.MQX為不同型號的嵌入式MCU提供了大量的板級支持包(Board Support Package,BSP)級底層驅(qū)動程序,用戶也可以根據(jù)需要改寫或自己編寫設備驅(qū)動程序.當用戶在應用工程中需要訪問這些底層設備時,只需將所需的底層驅(qū)動程序添加到用戶工程,并將驅(qū)動程序注冊到I/O子系統(tǒng)設備管理隊列中,就可以在用戶任務中直接調(diào)用fopen,fclose,fread和fwrite等標準函數(shù)對底層設備進行訪問和控制.

      1.2 I/O設備驅(qū)動隊列管理器

      圖2 I/O驅(qū)動管理隊列設備結(jié)點結(jié)構(gòu)Fig.2 Node Structure of I/O Driver Management Queue Device

      MQX通過鏈隊列的形式來實現(xiàn)I/O設備驅(qū)動的組織和管理.MQX系統(tǒng)在內(nèi)核初始化時創(chuàng)建設備驅(qū)動鏈隊列的頭結(jié)點,如圖2所示,隊列中每一個結(jié)點都是IO_DEVICE_STRUCT結(jié)構(gòu)體類型,包括設備標識符、驅(qū)動接口指針和驅(qū)動設備信息指針等.用戶在使用驅(qū)動前需將驅(qū)動注冊到I/O子系統(tǒng)層的設備管理隊列中,注冊安裝過程實際上就是將各設備的驅(qū)動結(jié)點插入到驅(qū)動管理隊列當中,并通過指針連接成完整的驅(qū)動鏈表隊列.設備驅(qū)動必須注冊到I/O設備驅(qū)動管理隊列才能為標準I/O層的格式化標準函數(shù)提供服務.設備驅(qū)動結(jié)點由_io_dev_install函數(shù)安裝設備驅(qū)動時動態(tài)創(chuàng)建,并由I/O子系統(tǒng)維護.新添加的設備驅(qū)動被插入到鏈隊列的尾部.由于每個I/O設備傳入安裝函數(shù)的初始化信息參數(shù)不同,在調(diào)用安裝函數(shù)之前每個I/O設備都要定義自己的安裝函數(shù)_io_dev_install.在打開設備時,先由fopen函數(shù)創(chuàng)建一個設備文件描述符,并由該描述符的DEV_PTR指針(文件句柄)建立與設備驅(qū)動結(jié)點的關聯(lián),通過該句柄在設備隊列中快速定位設備結(jié)點,然后調(diào)用標準I/O函數(shù)如同訪問文件一樣對設備進行訪問.

      1.3 底層設備驅(qū)動參數(shù)的組織和分解

      MQX底層設備驅(qū)動程序的設計開發(fā)相對獨立于上層I/O子系統(tǒng)層[9].只要明確上層函數(shù)傳遞來的參數(shù)格式,在底層驅(qū)動中將其分解出來供底層設備驅(qū)動程序使用,其他設計原則和方法與無操作系統(tǒng)下的驅(qū)動開發(fā)一致.因此,設備驅(qū)動設計的關鍵就是函數(shù)參數(shù)的組織、傳遞和分解.

      (1)底層設備驅(qū)動參數(shù)的組織封裝.MQX操作系統(tǒng)底層設備驅(qū)動函數(shù)的參數(shù)傳遞過程,一般是先將參數(shù)信息封裝在數(shù)據(jù)結(jié)構(gòu)體中,再將數(shù)據(jù)結(jié)構(gòu)體指針傳遞給底層設備驅(qū)動程序.底層設備驅(qū)動程序通過結(jié)構(gòu)體指針從數(shù)據(jù)結(jié)構(gòu)中分解出所需的參數(shù),參數(shù)的這種封裝有利于簡化參數(shù)的傳遞且更加方便快捷.MQX將底層設備驅(qū)動初始化參數(shù)分為2個部分:一部分與MCU型號和開發(fā)板密切相關,基本不再改變;另一部分由標準函數(shù)fopen在打開設備時傳入,可根據(jù)用戶工程需要進行動態(tài)調(diào)整和改變.

      (2)底層設備驅(qū)動初始化參數(shù)分解.底層設備驅(qū)動的初始化參數(shù)在執(zhí)行fopen函數(shù)(已映射到_io_fopen函數(shù))時傳入,其格式如下:

      驅(qū)動在注冊時,IO_OPEN代表device_open函數(shù)指針,因此上面代碼相當于調(diào)用device_open函數(shù),其中參數(shù)file_ptr為文件句柄,是指向的結(jié)構(gòu)體中保存了設備驅(qū)動結(jié)點的指針.設備驅(qū)動結(jié)點的DRIVER_INT_PTR指針指向封裝了設備與BSP相關的信息,其他指針則指向設備標識符和相應的驅(qū)動函數(shù).由此可見,只要明確傳入底層驅(qū)動函數(shù)的指針含義,并熟悉參數(shù)結(jié)構(gòu)體各成員的作用,即可解析出底層驅(qū)動模塊所需的初始化參數(shù).

      2 MQX底層設備驅(qū)動設計基本方法

      MQX將底層設備驅(qū)動統(tǒng)一在三層體系結(jié)構(gòu)模型中,雖然設備驅(qū)動的實現(xiàn)內(nèi)容各有不同,但是在MQX統(tǒng)一模型中設備驅(qū)動計方法是一致的[10].主要步驟如下:按照嵌入式底層軟件構(gòu)件的設計思想,將底層驅(qū)動封裝成device.h和device.c軟件構(gòu)件(device表示具體的設備模塊名);在device.h頭函數(shù)中封裝定義與板級相關的驅(qū)動模塊參數(shù),定義初始化參數(shù)值;給出用戶可以動態(tài)修改的初始化參數(shù)結(jié)構(gòu)體結(jié)構(gòu),以便于調(diào)用fopen函數(shù)時依據(jù)工程的需要動態(tài)修改底層模塊的性能;在device.c中編寫設備驅(qū)動的各個功能函數(shù),在初始化設備功能函數(shù)(一般為device_open)中解析傳入的初始化參數(shù)結(jié)構(gòu)體,獲取初始化參數(shù);編寫注冊安裝設備驅(qū)動函數(shù),主要調(diào)用MQX提供的系統(tǒng)函數(shù)_io_dev_install注冊設備驅(qū)動到管理隊列中,但也可以對初始化參數(shù)進一步封裝.

      下面通過一個串行通信接口(Serial Communication Interface,SCI)設備驅(qū)動實例來介紹設備驅(qū)動設計過程.主要步驟如下:

      (ⅰ)SCI設備屬性信息封裝.設備屬性信息是在操作系統(tǒng)中配置設備驅(qū)動、調(diào)用驅(qū)動函數(shù)必須的參數(shù),這些參數(shù)在MQX設備驅(qū)動三層模型中的不同層之間傳遞,對于調(diào)用的上層應用程序是透明的.SCI設備屬性通常包含設備號、模塊時鐘和通信波特率等,可用SCI_INIT_STRUCT屬性信息結(jié)構(gòu)體進行封裝,結(jié)構(gòu)體類型定義放在sci.h文件中.在加載設備時,MQX將該結(jié)構(gòu)體加載到設備驅(qū)動鏈隊列的對應SCI設備結(jié)點中,并由 DRIVER_INIT_PTR類型指針來指向,實際使用時可通過該指針提取SCI設備屬性信息.描述SCI設備屬性的結(jié)構(gòu)體代碼如下:

      ∥SCI_INIT_STRUCT 結(jié)構(gòu)體

      typedef struct _sci_init_struct{

      uint_8 SCI_ID;∥SCI設備號

      uint_32 BUS_CLK;∥模塊工作時鐘

      uint_32 BAUD_RATE;∥通信波特率

      } SCI_INIT_STRUCT,*SCI_INIT_PTR;

      (ⅱ)編寫SCI驅(qū)動函數(shù).SCI驅(qū)動函數(shù)利用設備標識符可快速定位到設備驅(qū)動隊列中的SCI結(jié)點,并通過該節(jié)點中的設備驅(qū)動初始化句柄DRIVER_INIT_PTR解析出設備屬性信息,由傳入的設備參數(shù)對串口模塊進行訪問以實現(xiàn)具體的各個功能.驅(qū)動函數(shù)聲明放在sci.h文件中,驅(qū)動函數(shù)的實現(xiàn)放在對應的sci.c文件中.SCI串口驅(qū)動包含串口打開、關閉、發(fā)送和接收數(shù)據(jù)等功能,部分串口驅(qū)動函數(shù)代碼如下:

      ∥串口打開函數(shù)

      _mqx_int _io_sci_open(MQX_FILE_PTRfile_dev_ptr,char_ptr sci_name,char_ptrparams)

      ∥串口關閉函數(shù)

      _mqx_int_io_sci_close(MQX_FILE_PTRfile_dev_ptr)

      ∥串口讀取函數(shù)

      _mqx_int_io_sci_read(MQX_FILE_PTRfile_dev_ptr,char_ptrbuff,_mqx_intlen)

      ∥串口寫入函數(shù)

      _mqx_int_io_sci_write(MQX_FILE_PTRfile_dev_ptr,char_ptrbuff,_mqx_intlen)

      其中:參數(shù)file_dev_ptr為關聯(lián)設備文件句柄;open_name為設備標識符;params 為設備初始化屬性;buff為數(shù)據(jù)緩沖區(qū);len為數(shù)據(jù)長度.

      (ⅲ) 編寫SCI驅(qū)動注冊安裝函數(shù).MQX的I/O子系統(tǒng)層提供專門的API函數(shù)來管理設備驅(qū)動隊列,包括_io_dev_install,_io_dev_uninstall,_io_get_handle,_io_init和_io_set_handle等.其中_io_dev_install函數(shù)負責將設備驅(qū)動結(jié)點(包含設備標識符、設備驅(qū)動函數(shù)名和指向設備屬性信息結(jié)構(gòu)體指針)安裝到設備管理隊列中,從而建立I/O設備驅(qū)動的中間轉(zhuǎn)換層.下面代碼段是在MQX/IO/io_inst.c文件中定義的_io_dev_install函數(shù)聲明部分:

      _mqx_uint_io_dev_install(char_ptr identifier,∥設備標識符

      _mqx_int(_CODE_PTR_ io_open)∥I/O設備打開函數(shù)

      (MQX_FILE_PTR,char_PTR_,char_PTR_),∥I/O設備關閉函數(shù)

      _mqx_int(_CODE_PTR_o_close)(MQX_FILE_PTR),

      _mqx_int(_CODE_PTR_ io_read)∥I/O設備讀取函數(shù)

      (MQX_FILE_PTR,char_PTR_,_mqx_int),∥I/O設備寫函數(shù)

      _mqx_int(_CODE_PTR_io_write)(MQX_FILE_PTR,char_PTR_,_mqx_int),

      _mqx_int(_CODE_PTR_io_ioctl)∥I/O控制設備屬性函數(shù)

      (MQX_FILE_PTR,_mqx_uint,pointer),∥I/O設備初始化數(shù)據(jù)結(jié)構(gòu)體

      pointer io_init_data_ptr)

      對于驅(qū)動函數(shù)注冊安裝,需要具體設備的標識符和指向存有設備屬性信息結(jié)構(gòu)的指針作為參數(shù),并在注冊驅(qū)動函數(shù)內(nèi)部調(diào)用系統(tǒng)API函數(shù)_io_dev_install實現(xiàn)注冊安裝.SCI注冊安裝驅(qū)動函數(shù)編寫如下:

      _mqx_uint io_sci_install(char_ptr identifier,SCI_INIT_PTR sci_init_ptr){

      ∥調(diào)用系統(tǒng)注冊安裝API函數(shù)

      return_io_dev_install(identifier,_io_sci_open,_io_sci_close,_io_sci_read,_io_sci_write,_io_sci_ioctl,(pointer) sci_init_ptr);}

      其中:參數(shù)identifier為SCI 設備標識符;sci_init_ptr為設備屬性信息結(jié)構(gòu)體指針._io_dev_install 函數(shù)的形參在實際調(diào)用時與第2大部分步驟(ii)中定義的SCI具體驅(qū)動功能函數(shù)指針關聯(lián),安裝成功即將SCI設備結(jié)點添加到系統(tǒng)的設備管理隊列之后.執(zhí)行打開SCI設備文件操作時,I/O子系統(tǒng)以SCI設備標識符作為索引檢索設備管理隊列,定位到設備后,通過關聯(lián)的文件句柄調(diào)用驅(qū)動函數(shù)對SCI進行訪問.

      (ⅳ) 在任務中調(diào)用驅(qū)動服務.底層設備驅(qū)動注冊成功后,就可在MQX的功能任務中調(diào)用驅(qū)動服務.用戶可像對文件操作一樣,通過系統(tǒng)I/O層提供的標準函數(shù)對底層設備進行訪問和控制.在調(diào)用設備之前,需要獲取設備文件訪問句柄,這一操作由標準函數(shù)fopen函數(shù)實現(xiàn).用戶打開設備時,實際上是獲取設備文件的訪問句柄,有了設備訪問句柄,其他標準函數(shù)就可以通過其來對設備進行操作.以下是測試串口驅(qū)動調(diào)用代碼:

      void task_sci_test(uint_32 init_data)

      {

      MQX_FILE_PTR file_dev_ptr;

      char buff=”This is SCI test!”;

      file_dev_ptr=fopen(“sci2”,null);∥打開設備,獲取設備文件句柄

      if(file_dev_ptr){

      write(file_dev_ptr,buff,strlen(buff));∥串口輸出字符串

      }

      fclose(file_dev_ptr);∥關閉設備

      _task_block();∥任務阻塞

      }

      3 MQX底層設備驅(qū)動設計方法改進

      3.1 底層設備驅(qū)動可移植性分析

      對于無操作系統(tǒng)驅(qū)動調(diào)用而言,傳入的參數(shù)一般可被驅(qū)動函數(shù)直接調(diào)用.而通過對MQX系統(tǒng)底層驅(qū)動機制的分析可以發(fā)現(xiàn),在其三層驅(qū)動模型中,底層設備驅(qū)動與無操作系統(tǒng)下設計驅(qū)動構(gòu)件的主要區(qū)別在于,MQX底層驅(qū)動傳入的是結(jié)構(gòu)體類型指針,包含了傳入?yún)?shù)信息的解析操作.這些操作都是由操作系統(tǒng)的API函數(shù)進行組織和傳遞的,這樣可以提高設備驅(qū)動與操作系統(tǒng)的粘合性,降低底層設備驅(qū)動的移植和復用效率,也難以復用被驗證過的成熟設備驅(qū)動構(gòu)件,導致增加嵌入式軟件的開發(fā)難度,同時也延長開發(fā)周期[11].

      3.2 驅(qū)動設計改進基本思想

      對于底層驅(qū)動過于依附操作系統(tǒng)API函數(shù)的情況,可以將MQX底層設備驅(qū)動程序所需的參數(shù)由專門的函數(shù)(接口構(gòu)件)進行解析后,再提供給底層設備驅(qū)動函數(shù)使用,這樣MQX底層設備驅(qū)動程序就與無操作系統(tǒng)下的設備驅(qū)動程序趨于一致.同樣地,無操作系統(tǒng)下的設備驅(qū)動程序只需加上一層負責參數(shù)解析的接口構(gòu)件,就可以掛接到MQX操作系統(tǒng)的設備管理隊列中,在MQX操作系統(tǒng)環(huán)境下使用.通過在I/O子系統(tǒng)層和底層設備驅(qū)動層之間增加接口驅(qū)動層(圖3),可以使得底層設備驅(qū)動程序不再緊密依附操作系統(tǒng),實現(xiàn)設備驅(qū)動完全獨立于MQX操作系統(tǒng).這樣一來,底層驅(qū)動就不必為某種操作系統(tǒng)專門設計,應用成熟的驅(qū)動構(gòu)件還可以進入構(gòu)件庫,為用戶提供面向底層設備而不是面向操作系統(tǒng)的驅(qū)動構(gòu)件.根據(jù)軟件工程構(gòu)件化開發(fā)思想,成熟的構(gòu)件復用不僅能提高軟件開發(fā)效率,還能提高系統(tǒng)的穩(wěn)定性和可靠性[12].

      圖3 改進的I/O驅(qū)動層次結(jié)構(gòu)Fig.3 Improved I/O Driver Hierarchy

      3.3 接口驅(qū)動構(gòu)件設計

      根據(jù)前文的分析,接口驅(qū)動構(gòu)件可以作為操作系統(tǒng)內(nèi)核與底層驅(qū)動程序的連接通道,實現(xiàn)接口轉(zhuǎn)接功能.其主要職責可以歸結(jié)為3點:(1)接收來自I/O子系統(tǒng)層傳入的設備管理隊列中底層設備屬性結(jié)構(gòu)體參數(shù);(2)提取分解結(jié)構(gòu)體參數(shù)信息;(3)調(diào)用底層驅(qū)動函數(shù)傳入至設備參數(shù),供其使用.考慮到MQX驅(qū)動函數(shù)采用的是統(tǒng)一的模型,操作系統(tǒng)對設備驅(qū)動屬性信息的解析方式和對驅(qū)動函數(shù)的調(diào)用規(guī)則是一致的,在設計接口驅(qū)動構(gòu)件時,可復制工程中成熟的接口驅(qū)動構(gòu)件進行改寫,在提高效率的同時也能使接口驅(qū)動構(gòu)件更好地與操作系統(tǒng)銜接.因此,1.3節(jié)中SCI串口打開接口驅(qū)動函數(shù)可改寫如下(其他接口驅(qū)動與此類似,不再贅述):

      _mqx_int _io_sci_open(MQX_FILE_PTRfile_dev_ptr,char_ptrbuff,_mqx_int len){

      ∥在設備管理隊列中定位設備驅(qū)動結(jié)點

      IO_DEVICE_STRUCT_PTRdev_ptr=file_dev_ptr-DEV_PTR;

      ∥通過文件句柄訪問設備屬性信息結(jié)構(gòu)體

      SCI_INIT_PTR sci_init_ptr=(SCI_INIT_PTR)(dev_ptr-DRIVER_INIT_PTR);

      ∥提取設備屬性信息

      uint_32 bus_clk=sci_init_ptr-BUS_CLK;

      uint_32 b_rate=sci_init_ptr-BAUD_RATE;

      ∥調(diào)用底層驅(qū)動函數(shù)實現(xiàn)功能

      sci_init(dev_id,bus_clk,baud_rate);∥初始化∥串口

      sci_send(dev_id,len,buff);∥串口數(shù)據(jù)發(fā)送

      }

      3.4 SCI驅(qū)動構(gòu)件測試

      圖4 串口驅(qū)動構(gòu)件測試Fig.4 Test of Serial Port Driver Component

      測試工程使用MQXFW工程框架[2],硬件采用基于ARM Cortex-M0+內(nèi)核的KL25評估板.用串口轉(zhuǎn)USB線連接PC與KL25評估板,通過嵌入式集成開發(fā)軟件KDS(Kinetis Design Studio,Kinetis設計工作室)將包含SCI驅(qū)動構(gòu)件和發(fā)送接收任務的工程進行編譯并下載到KL25啟動運行.程序的主要功能是KL25定時向PC機發(fā)送字符串“This is SCI test!”,并通過中斷接收來自PC機發(fā)送的字符串,然后將字符串回發(fā)給PC機.運行在PC機端的串口測試軟件顯示接收到的字符串如圖4所示.測試結(jié)果表明,KL25串口模塊正常接收發(fā)送字符串,所設計的SCI驅(qū)動構(gòu)件運行穩(wěn)定可靠,結(jié)果正確.

      4 結(jié)語

      在嵌入式操作系統(tǒng)中,設備是應用程序必使用的資源,然而設備具有多樣性,為了使操作系統(tǒng)下的應用程序與設備無關,須將設備的復雜性和多樣性屏蔽起來,為應用程序提供統(tǒng)一的使用接口.在MQX操作系統(tǒng)中采用了三層模型,以設備驅(qū)動隊列管理器為核心載體實現(xiàn)統(tǒng)一的驅(qū)動管理模式,使得用戶可以使用標準的I/O函數(shù)來訪問控制底層設備.但從設備驅(qū)動開發(fā)、移植和復用角度來看,由于設備參數(shù)信息需要MQX系統(tǒng)API函數(shù)進行解析傳遞,因此增加了設備驅(qū)動程序與操作系統(tǒng)的粘合性,一定程度上也增加了設備驅(qū)動的開發(fā)難度,降低了驅(qū)動構(gòu)件的可移植性和可復用性.從嵌入式軟件工程構(gòu)件開發(fā)角度,在底層設備驅(qū)動外層再次進行封裝,通過接口構(gòu)件來解析設備屬性參數(shù)信息,實現(xiàn)底層驅(qū)動與操作系統(tǒng)轉(zhuǎn)接,這樣就可實現(xiàn)面向底層設備的驅(qū)動設計,與操作系統(tǒng)無關,將底層驅(qū)動從操作系統(tǒng)中完全獨立出來.實驗證明,這種底層驅(qū)動開發(fā)方式有效提高了軟件開發(fā)效率,開發(fā)的底層驅(qū)動構(gòu)件在不同應用、不同操作系統(tǒng)間的移植和復用更加方便快捷.

      猜你喜歡
      驅(qū)動程序調(diào)用隊列
      隊列里的小秘密
      基于多隊列切換的SDN擁塞控制*
      軟件(2020年3期)2020-04-20 00:58:44
      核電項目物項調(diào)用管理的應用研究
      在隊列里
      LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
      測控技術(2018年5期)2018-12-09 09:04:46
      豐田加速駛?cè)胱詣玉{駛隊列
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
      利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
      驅(qū)動程序更新與推薦
      驅(qū)動程序更新與推薦
      股票| 阳谷县| 江山市| 新丰县| 玛曲县| 通城县| 隆回县| 阳谷县| 赤水市| 寻甸| 博乐市| 德州市| 兴安盟| 宝坻区| 瑞昌市| 两当县| 山东| 绥宁县| 环江| 浪卡子县| 甘洛县| 锦屏县| 永昌县| 卢湾区| 淮安市| 嘉义县| 玉树县| 中阳县| 德钦县| 福鼎市| 太和县| 巨野县| 博野县| 博爱县| 鹿邑县| 平遥县| 临泽县| 南宁市| 保山市| 安平县| 噶尔县|