嵌入式er告訴你啥是驅(qū)動?它的地位和意義
一、總體說明
提到嵌入式的概念,一時間腦容量已經(jīng)容納不下,轉(zhuǎn)到驅(qū)動的設(shè)計剛剛好,習(xí)慣將一件事分層次去做,驅(qū)動設(shè)計亦是如此,很多人做工程時因為項目的時間緊張,直接想到如何去實現(xiàn),甚至直接跳到工具上去,學(xué)習(xí)編程語言。時常將做一個工程比作建一座大廈,有了圖紙,有了地基才可以建造更漂亮更完美的建筑,如果開始就去關(guān)注一個鍬,一個蓋樓的機器,一磚一瓦的樣子,可能建造出來的早已不是自己想要的樣子。這里本人想就嵌入式驅(qū)動設(shè)計,以what、why和how搭建出,嵌入式驅(qū)動設(shè)計的簡單藍(lán)圖,給出嵌入式驅(qū)動設(shè)計的“圖紙”,“大廈”的 “一磚一瓦”留給每個想要建造這個“大廈”的人去設(shè)計。
二、什么是驅(qū)動(what 驅(qū)動概念)?
一個沒接觸過嵌入式底層設(shè)計的人員可能會對驅(qū)動的概念比較模糊,它是什么?以什么形式存在?什么作用?個人的理解,驅(qū)動是一種軟件,這個軟件一方面可以直接與CPU、各種總線和外設(shè)進(jìn)行交互,讓這些板上的硬件組成單元活躍起來,另一方面,它還與操作系統(tǒng)和應(yīng)用程序聯(lián)系,將自己對外的接口嵌入到系統(tǒng)或者應(yīng)用程序中,當(dāng)業(yè)務(wù)需要某一個外設(shè)參與時,它就開始活躍了,聽從上層的指令,并將旨意傳達(dá)到硬件資源,讓硬件工作。簡而言之,所謂驅(qū)動,驅(qū)而動之,以“主”之意,驅(qū)使硬件“動”起來。
三、為什么做驅(qū)動(why 驅(qū)動存在的意義、地位)?
一般做工程時,應(yīng)用程序關(guān)心的多數(shù)是協(xié)議和業(yè)務(wù)相關(guān)的調(diào)度,而不關(guān)心底層或者硬件的執(zhí)行過程,也沒有必要去關(guān)心硬件的執(zhí)行過程,驅(qū)動作為一個庫或者調(diào)度的接口即可,這時就需要驅(qū)動的存在,任何的業(yè)務(wù)都要有硬件的支撐,驅(qū)動的存在,可以將硬件的初始化,讀寫,配置等基本操作嵌入應(yīng)用之中,于無聲之中操作硬件的執(zhí)行邏輯,使其工作起來。
嵌入式驅(qū)動在其體系中所處的位置示意
四、怎么實現(xiàn)驅(qū)動設(shè)計(how 驅(qū)動設(shè)計的過程)?
這是本人對于一個板卡的硬件資源抽象,驅(qū)動,驅(qū)而動之的外設(shè),一般分為兩類,一類藏于CPU之內(nèi),稱為片上外設(shè)。另一類存在于板卡之上,CPU之外,叫接口芯片,或者板級外設(shè)(個人叫法)。如何實現(xiàn)驅(qū)動設(shè)計,最簡單的是首先進(jìn)入CPU內(nèi)部,先搞定CPU的內(nèi)核,指令集,幸好這一步有每個平臺開發(fā)軟件做了(編譯器),然后搞定CPU組成架構(gòu),總線和片上外設(shè)都有什么,然后找到每個外設(shè)的基本協(xié)議,至少知道它是如何工作的,然后找到這個CPU的開發(fā)平臺,找到它的開發(fā)語言,比如:C語言,找到官方提供的簡單測試程序。學(xué)習(xí)并二次開發(fā)(當(dāng)然可以完全自己來),搞定CPU之后,這個板子的心臟就跳起來了,下一步找到每一個板級外設(shè)的資料(datasheet),搞定其初始化,讀寫操作邏輯,利用掌握的語言和開發(fā)環(huán)境,利用固定的通信接口搞定板級外設(shè)。做到這一步之后驅(qū)動就基本搭建起來了,之后的事就是每個“屋子”的裝修問題,問住這個屋子的人需要什么樣的風(fēng)格,按照其意愿,完成這個“大廈”每一個房間的裝修,到此“大廈”竣工





