Linux驅動移植(二) 相似或相關資源的獲取

2021-06-26 21:10:40 字數 1339 閱讀 4622

linux驅動程式一般較少從底層開發,有這樣幾種途徑可以有效協助我們較快地完成驅動開發:

借用demo板的驅動主要是求同存異,晶元一般是相同的,主要體現在片選的io、中斷和dma通道等方面。

因而在進行驅動開發時我們一般遵循這樣的設計理念:將硬體和平台相關(記憶體位址、片選的io、中斷號、dma通道和硬體設定等)的資訊放在bsp中,作為platform資訊、spiboard資訊、i2cboard資訊,而不直接放在驅動裡面,以備修改。

2.相似晶元的驅動程式

任何驅動工程師在面對新驅動程式的開發時,都沒有必要一切從頭開始。在核心源**/drivers中已經大量包含了類似晶元的驅動程式,這些都可以借鑑。

3.晶元廠商的範例程式

1)cpu_relax()函式,一般用在忙等待中,其作用降低cpu的消耗,同時也起到記憶體屏障的作用,同時,document/volatile_considered_harmful.txt中也提到,在忙等待中要避免使用volatile關鍵字;

2)bsp

a. bsp是什麼:

bsp是板級支援包,是介於主機板硬體和作業系統之間的一層,應該說是屬於作業系統的一部分,主要目的是為了支援作業系統,使之能更好的執行於硬體主機板。

b. pc機和嵌入式系統中的bsp

在pc機的windos系統或linux系統中也有bsp,只是pc機均採用統一的x86體系架構,所以其bsp是單一確定的,一般不需要做什麼修改。

在嵌入式系統中情況完全不同,目前市場上有多種結構的cpu(risc)並存(ppc、arm、mips),為了效能的需要,外圍裝置也會有不同 選擇和定義。因而,嵌入式系統針對不同的cpu會有不同的bsp,即使相同 的cpu,外圍裝置的差異(如外部擴充套件dram的大小,型別改變),bsp相應的部分也會有所不同。

所以,需要根據硬體設計編寫和修改bsp,以保證系統正常的執行。

c.bsp在嵌入式開發中的位置和作用

bsp開發處於整個嵌入式開發的前期,是後面系統上應用程式能正常執行的保證。

大致步驟如下:

a. 硬體主機板研製,測試;

b. 作業系統的選定,bsp程式設計;

c. 上層應用程式的開發。

bsp部分在硬體和作業系統,上層應用程式之間,所以,這就要求bsp程式設計師對硬體,軟體和作業系統都有一定 的了解,才能做好bsp程式設計。

需要熟悉的工具:電表、示波器、邏輯分析儀、硬體**器、**除錯環境。

程式語言:組合語言、c語言。

1.2. linux裝置驅動開發詳解 宋寶華著

bzoj3230 相似子串 SA lcp 二分

首先用字尾陣列處理出h陣列。因為要問子串的排名,所以我們再記乙個陣列num i 表示前i個字尾有幾個本質不同的子串。然後我們用二分查詢就可以找到排序後的第i個子串是誰了。然後就是求一下lcp了。還有反過來的lcp。算清角標就好了。還有很坑的一點 可能有超過int範圍個實質不同的字串 include ...

Linux裝置驅動 塊裝置(二)之相關結構體

上回最後面介紹了相關資料結構,下面再詳細介紹 核心用結構block device例項代表乙個塊裝置物件,如 整個硬碟或特定分割槽。如果該結構代表乙個分割槽,則其成員bd part指向裝置的分割槽結構。如果該結構代表裝置,則其成員bd disk指向裝置的通用硬碟結構gendisk 當使用者開啟塊裝置檔...

Linux裝置驅動 塊裝置(二)之相關結構體

上回最後面介紹了相關資料結構,下面再詳細介紹 核心用結構block device例項代表乙個塊裝置物件,如 整個硬碟或特定分割槽。如果該結構代表乙個分割槽,則其成員bd part指向裝置的分割槽結構。如果該結構代表裝置,則其成員bd disk指向裝置的通用硬碟結構gendisk 當使用者開啟塊裝置檔...