高级C语言教程-中断和设备驱动
簡述設(shè)備驅(qū)動、Boot Loader與BSP之間的區(qū)別!
設(shè)備驅(qū)動是介于底層硬件與操作系統(tǒng)之間的一層軟件。設(shè)備驅(qū)動的主要功能就是屏蔽硬件控制的具體細(xì)節(jié),對操作系統(tǒng)提供一個抽象的、統(tǒng)一的硬件資源訪問接口。
Boot Loader的概念。Boot Loader是一段固化在嵌入式系統(tǒng)目標(biāo)系統(tǒng)ROM(或者諸如Flash等非易失性存儲器)中的一段程序,他的主要作用就是引導(dǎo)操作系統(tǒng)(這也是為什么叫他Boot Lodaer 的原因)。
BSP,所謂的板級支持包類似于PC平臺上的BIOS(BasicInputOutput System,基本輸入輸出系統(tǒng))。一般而言,BSP也是一段固化在嵌入式系統(tǒng)目標(biāo)目標(biāo)系統(tǒng)ROM中的程序。
在UNIX系統(tǒng)中將文件抽象為字符流(Byte Sream),所謂的文件就是一個可以輸入/輸出的字符流。設(shè)備也可以被抽象為字符流,用戶對這個設(shè)備的讀和寫可以抽象為對這個字符流的讀和寫,將所有對設(shè)備的操作都抽象為對文件的操作,這樣做的好處就是;
第一,將設(shè)備和文件統(tǒng)一有利于操作系統(tǒng)的管理,實際上很多的外圍的設(shè)備天然的和文件系統(tǒng)相關(guān),比如磁盤驅(qū)動器,CF卡等,第二,不同的設(shè)備被抽象為文件,便于操作系統(tǒng)采用統(tǒng)一的方式管理不同的外為設(shè)備。
中斷處理模塊可能是設(shè)備驅(qū)動中最重要的部分之一,因為設(shè)備的異步特性,操作系統(tǒng)不可能采用輪詢的方式,對設(shè)備進行管理,采用中斷處理異步事件是唯一的選擇。
設(shè)備驅(qū)動的中斷處理程序主要包括
說明:并不是所有的外圍設(shè)備驅(qū)動都需要中斷處理程序,某些設(shè)備(如 LCD)通常情況下是不需要中斷處理的;
中斷的處理過程一般由硬件和軟件兩部分共同完成。實現(xiàn)的部分有:
中斷實現(xiàn)的兩種方式,硬件實現(xiàn)還要軟件實現(xiàn)方式的流程:
可重入函數(shù)和不可重入函數(shù)
可重入函數(shù)主要用于多任務(wù)環(huán)境中,一個可重入的函數(shù)簡單來說就是可以被中斷的函數(shù),也就是說,可以在這個函數(shù)執(zhí)行的任何時刻中斷它,轉(zhuǎn)入OS調(diào)度下去執(zhí)行另外一段代碼,而返回控制時不會出現(xiàn)什么錯誤;而不可重入的函數(shù)由于使用了一些系統(tǒng)資源,比如全局變量區(qū),中斷向量表等,所以它如果被中斷的話,可能會出現(xiàn)問題,這類函數(shù)是不能運行在多任務(wù)環(huán)境下的。
總結(jié)
以上是生活随笔為你收集整理的高级C语言教程-中断和设备驱动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高级C语言教程-指针和存储
- 下一篇: 简述一下extern C的小作用