資源描述:
《Linux設(shè)備驅(qū)動程序ppt課件.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、嵌入式系統(tǒng)主要內(nèi)容版級支持包BSP嵌入式系統(tǒng)初始化以及BSP的設(shè)計Linux系統(tǒng)驅(qū)動程序開發(fā)BSP的概念BSP全稱“板級支持包”(BoardSupportPackages),說的簡單一點,就是一段啟動代碼,和計算機主板的BIOS差不多,但提供的功能區(qū)別就相差很大在WindowsCE中,BSP是驅(qū)動程序、OEM適應層(OEMAdaptationLayers,OAL)、硬件抽象層(HAL)以及啟動設(shè)備和使外設(shè)正常工作所需BIOS文件的集合。BSP和BIOS區(qū)別BIOS主要是負責在電腦開啟時檢測、初始化系統(tǒng)設(shè)備(設(shè)置棧指針,中斷分配,內(nèi)存初始化..)、裝入操作系統(tǒng)并調(diào)度操作系統(tǒng)向硬件發(fā)出的
2、指令。BSP是和操作系統(tǒng)綁在一起運行,盡管BSP的開始部分和BIOS所做的工作類似,但是BSP還包含和系統(tǒng)有關(guān)的基本驅(qū)動BIOS程序是用戶不能更改,編譯編程的,只能對參數(shù)進行修改設(shè)置,但是程序員還可以編程修改BSP,在BSP中任意添加一些和系統(tǒng)無關(guān)的驅(qū)動或程序,甚至可以把上層開發(fā)的統(tǒng)統(tǒng)放到BSP中不同系統(tǒng)中的BSP一個嵌入式操作系統(tǒng)針對不同的CPU,會有不同的BSP即使同一種CPU,由于外設(shè)的一點差別BSP相應的部分也不一樣BSP的特點與功能硬件相關(guān)性因為嵌入式實時系統(tǒng)的硬件環(huán)境具有應用相關(guān)性,所以,作為高層軟件與硬件之間的接口,BSP必須為操作系統(tǒng)提供操作和控制具體硬件的方法。操作
3、系統(tǒng)相關(guān)性不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu),?因此,不同的操作系統(tǒng)具有特定的硬件接口形式BSP的設(shè)計與實現(xiàn)為實現(xiàn)上述兩部分功能,設(shè)計一個完整的BSP需要完成兩部分工作:設(shè)計初始化過程,完成嵌入式系統(tǒng)的初始化;設(shè)計硬件相關(guān)的設(shè)備驅(qū)動,完成操作系統(tǒng)及應用程序?qū)唧w硬件的操作。嵌入式系統(tǒng)初始化以及BSP的功能嵌入式系統(tǒng)的初始化過程是一個同時包括硬件初始化和軟件初始化的過程;而操作系統(tǒng)啟動以前的初始化操作是BSP的主要功能之一初始化過程總可以抽象為三個主要環(huán)境,按照自底向上、從硬件到軟件的次序依次為:片級初始化板級初始化系統(tǒng)級初始化初始化過程片級初始化:主要完成CPU的初始化設(shè)置CPU的
4、核心寄存器和控制寄存器CPU核心工作模式CPU的局部總線模式等片級初始化把CPU從上電時的缺省狀態(tài)逐步設(shè)置成為系統(tǒng)所要求的工作狀態(tài)這是一個純硬件的初始化過程初始化過程(續(xù)1)板級初始化:完成CPU以外的其他硬件設(shè)備的初始化同時還要設(shè)置某些軟件的數(shù)據(jù)結(jié)構(gòu)和參數(shù),為隨后的系統(tǒng)級初始化和應用程序的運行建立硬件和軟件環(huán)境這是一個同時包含軟硬件兩部分在內(nèi)的初始化過程初始化過程(續(xù)2)系統(tǒng)級初始化:這是一個以軟件初始化為主的過程,主要進行操作系統(tǒng)初始化BSP將控制轉(zhuǎn)交給操作系統(tǒng),由操作系統(tǒng)進行余下的初始化操作:包括加載和初始化與硬件無關(guān)的設(shè)備驅(qū)動程序建立系統(tǒng)內(nèi)存區(qū)加載并初始化其他系統(tǒng)軟件模塊(如
5、網(wǎng)絡(luò)系統(tǒng)、文件系統(tǒng)等)最后,操作系統(tǒng)創(chuàng)建應用程序環(huán)境并將控制轉(zhuǎn)交給應用程序的入口硬件相關(guān)的設(shè)備驅(qū)動程序BSP另一個主要功能是硬件相關(guān)的設(shè)備驅(qū)動與初始化過程相反,硬件相關(guān)的設(shè)備驅(qū)動程序的初始化和使用通常是一個從高層到底層的過程盡管BSP中包含硬件相關(guān)的設(shè)備驅(qū)動程序,但是這些設(shè)備驅(qū)動程序通常不直接由BSP使用而是在系統(tǒng)初始化過程中由BSP把它們與操作系統(tǒng)中通用的設(shè)備驅(qū)動程序關(guān)聯(lián)起來,并在隨后的應用中由通用的設(shè)備驅(qū)動程序調(diào)用,實現(xiàn)對硬件設(shè)備的操作。BSP開發(fā)的前提和步驟開發(fā)的前提:熟悉硬件方面:使用CPU等熟悉工具方面:電表,示波器,邏輯分析儀,硬件仿真器,仿真調(diào)試環(huán)境等語言方面:匯編語言
6、,C語言BSP開發(fā)的一般步驟如下:硬件主板研制,測試操作系統(tǒng)的選定,BSP編程上層應用程序的開發(fā)編寫B(tài)SP函數(shù)BSP對板卡中每個芯片的操作都通過多個函數(shù)來完成如果應用程序?qū)Π蹇ǖ牟僮鞫贾苯油ㄟ^調(diào)用BSP中的函數(shù)來完成,那將很不利于源程序的調(diào)試,并降低了程序的可移植性把能完成某個特定功能的函數(shù)封裝在一個庫文件中,并放在應用程序與BSP之間對每個芯片來說,都應當有初始化函數(shù)和狀態(tài)讀取函數(shù)設(shè)計實現(xiàn)BSP的一般方法BSP的開發(fā)需要具備一定的硬件知識要求掌握操作系統(tǒng)所定義的BSP接口兩種快捷方法以經(jīng)典BSP為參考使用操作系統(tǒng)提供的BSP模板設(shè)計實現(xiàn)BSP兩部分功能時應采用以下兩種不同方法“自底
7、向上”地實現(xiàn)BSP中的初始化操作“自頂向下”地設(shè)計硬件相關(guān)的驅(qū)動程序Linux設(shè)備驅(qū)動程序及開發(fā)Linux設(shè)備驅(qū)動程序概述Linux設(shè)備驅(qū)動程序是處理或操作硬件控制器的軟件,被集成在內(nèi)核中,是常駐內(nèi)存的低級硬件處理程序的共享庫,設(shè)備驅(qū)動程序是系統(tǒng)對設(shè)備的抽象管理與控制。Linux允許設(shè)備驅(qū)動程序作為內(nèi)核可加載模塊實現(xiàn),即除了可以在系統(tǒng)啟動時進行注冊外,還可以在啟動后進行加載注冊。Linux驅(qū)動程序開發(fā)建立嵌入式Linux平臺,移植和編寫驅(qū)動程序往往是最具挑