a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式軟件中延遲回調的設計和應用

嵌入式軟件中延遲回調的設計和應用

作者:胡丙龍 時間:2013-02-27 來源:電子產品世界 收藏

  引言

本文引用地址:http://www.j9360.com/article/142446.htm

  系統通常由處理器外掛多種周邊芯片構成,工程師需要花較多的時間來設計和調試這些外圍芯片的驅動程序,驅動程序的性能將直接決定系統能否穩定運行和達成設計目標。一般地,處理器廠家會將目標應用中用到的外設驅動打包成板級支持包(board support package),該提供標準的API給用戶,開發人員只需按指定方式調用相應的函數獲取服務,從而簡化系統設計,而廠家在發布包前會做一些測試來確保功能和性能。也有例外,工程師有時不得不定制或重新開發驅動程序,例如: 1)廠家提供的驅動程序是針對某一操作系統的,而用戶的系統則是經過充分裁剪甚至無操作系統;2)用戶程序框架很成熟,新的驅動程序需要修改以匹配該軟件框架,并只使用現有的系統服務。

  一個架構良好的軟件,能提供的系統服務將涵蓋現時用到的全部功能,并支持有序擴充,為嵌入式系統設計系統服務最重要的是框架簡潔高效。驅動程序則是構筑在系統服務之上,為應用程序提供簡單易用的與外設通訊的接口,如圖1所示。  

 

  在事件驅動的應用中,需要用到的系統服務就包括回調函數(callback functions),它被廣泛使用來簡化驅動程序的設計。以UART驅動程序為例: 應用程序首先向系統申請DMA服務, 由DMA控制器從內存中將一個100字節的包順序從UART控制器發出,發送過程可能會持續1000ms, 發送完成才可以執行后續相關任務。如果內核此時通過查詢方式獲取發送狀態,無疑將大大地降低系統運行效率。更簡便高效的方式是引入回調函數機制,在初始化時提供回調函數,請求的任務完成時該回調函數將被自動調用。

  事件的處理過程一般和硬件中斷關聯在一起。高優先級的處理任務需要直接放在中斷服務程序中執行,對于實時性要求很高的應用,中斷服務程序中應盡可能短小。而大量的、長時間的處理則可以放入回調函數中,以較低優先級(通常是軟件中斷級)運行,并隨時可以被高優先級的其它硬件中斷搶占。這樣的機制要求對所有的回調函數統一管理和分派,有些可能還要求能設置回調函數的優先級。此時,回調函數并不是在請求的事件發生時馬上被執行,而是延遲至合理的被調度時刻運行。這稱為延遲回調(DCB, deferred callback)。

  以高性能Blackfin和SHARC處理器平臺為例,ADI公司提供了完備的系統服務和驅動包(System Service & Device Driver),它能夠獨立運行,也可與操作系統協同工作,其中就包括高效率的延遲回調服務,用戶編寫驅動程序的工作被大大簡化。不過,一些高實時系統比如電機驅動器無需操作系統,類似的框架在實際應用中仍顯復雜。這里介紹的方法以最簡潔的方式實現延遲回調服務,可單獨封裝成模塊,應用于任何處理器。

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


關鍵詞: 嵌入式 BSP

評論


相關推薦

技術專區

關閉