Threadx 03 threadx的裝置驅動

2021-10-05 18:18:40 字數 1482 閱讀 4407

裝置驅動包含八個基本的函式模組,

driver control:驅動程式初始化並準備就緒後,該功能區域負責執行時控制。 通常,執行時控制包括對基礎硬體裝置的更改。示例包括更改序列的波特率裝置或在磁碟上尋找新扇區。

driver access:某些裝置驅動程式僅從單個呼叫應用程式執行緒。 在這種情況下,此功能區域不需要。 但是,在多個執行緒需要同時進行驅動程式訪問,他們的互動必須通過新增分配/來控制釋放裝置驅動程式中的功能。 或者,應用程式可以使- 用訊號量來控制驅動程式訪問並避免額外的開銷和複雜性在驅動程式內部。

driver input:該功能區負責所有裝置輸入。 與驅動程式相關的主要問題輸入通常涉及如何緩衝輸入,以及執行緒如何等待此類輸入。only threads are allowed to call the tx_sdriver_input function.

driver output:該功能區負責所有裝置的輸出。 與驅動程式輸出相關的主要問題通常涉及如何緩衝輸出以及執行緒如何等待執行輸出。only threads are allowed to call the tx_sdriver_output function.

driver interrupts:大多數實時系統依靠硬體中斷來通知驅動程式裝置的輸入,輸出,控制和錯誤事件。 中斷提供了保證對此類外部事件的響應時間。 代替中斷,驅動程式軟體可能會定期檢查這些事件的外部硬體。-

driver status:

current device status

input bytes

output bytes

device error counts

driver termination :該功能區域是可選的。 僅在以下情況下才需要驅動程式和/或物理硬體裝置需要被關閉。 終止後,驅動程式在重新初始化之前不得再次呼叫

異常是非同步事件或錯誤情況,會干擾正常流程執行緒處理。 通常,必須立即處理異常,然後將控制權返回給執行緒處理。 arm中有三種異常類別架構如下:

發生異常時,arm嘗試完成當前指令,暫時停止指令處理,處理該異常,然後繼續處理說明。

處理器通過執行以下操作序列來處理異常。

1.將cpsr的當前值儲存到新操作模式的spsr中,以備後用返回。

2.更改為與異常對應的操作模式。

3.修改新操作模式的cpsr。 清除中的t(thumb)位(位5)準備在arm 32位模式下執行。 如果存在irq中斷,則設定i位(位7)禁用進一步的irq中斷。 如果存在fiq中斷,則設定f位(第6位)和i位(第7位)以禁止其他fiq中斷。

5.將pc更改為適當的異常向量,如圖13.1所示,這是應用軟體中斷處理開始的地方。

arm具有簡單的異常和中斷處理體系結構。 有七個中斷向量,從位址0x00000000開始。 每個向量是乙個32位字,

包含實際的arm指令。 通常,大多數應用程式會載入到pc七個異常向量位置中的每個位置處的指令。 圖13.1顯示了七項arm向量表。

03 ThreadX多執行緒Demo學習(一)

目錄簡介 threadx標準開發流程 這一篇我們開始分析threadx官方多執行緒demo,並學習threadx的標準開發流程。注意,由於是演示demo,因此能夠直接編譯出.exe檔案,並且可以在windows環境執行。但官方通過特製的tx.lib限制了可以使用的最大系統資源數量,如下所示 11 t...

按鍵中斷的platform bus裝置和驅動 收藏

platform device include include include include 中斷 include include include include include include include include include include module author ecjtu...

linux核心的裝置驅動模型和平台裝置驅動

為了解決這種驅動 和裝置資訊耦合的問題,linux 提出了裝置驅動模型。裝置驅動模型中包括匯流排,驅動,裝置。在裝置驅動模型中,引入匯流排的概念可以對驅動 和裝置資訊進行分離。對於i2c spi usb這類常見的物理匯流排來說,linux核心回自動建立與之對應的驅動匯流排,因此i2c裝置,spi裝置...