《驅動設計的思想 物件導向 分層 分離》

2022-09-16 03:21:08 字數 1108 閱讀 2826

1.物件導向

字元裝置驅動程式抽象出乙個 file_operations 結構體;

我們寫的程式針對硬體部分抽象出 led_operations 結構體。

在linux核心中,所謂的物件導向可以理解為用結構體來表示某個物件。

2.分層

上下分層,比如我們前面寫的 led 驅動程式就分為 2 層:

上層實現硬體無關的操作,比如註冊字元裝置驅動: leddrv.c

下層實現硬體相關的操作,比如 board_a.c 實現單板 a 的 led 操作

3.分離

以led驅動為例子,硬體驅動中,對某個led的開關就是針對固定的位址進行操作,如果要還成另外乙個led就必須更換這些位址,就很麻煩。

實際情況是,每一款晶元它的 gpio 操作都是類似的。比如: gpio1_3、 gpio5_4 這 2個引腳接到led。

① gpio1_3 屬於第 1 組,即 gpio1。

有方向暫存器 dir、資料暫存器 dr 等,基礎位址是 addr_base_addr_gpio1。

設定為 output 引腳:修改 gpio1 的 dir 暫存器的 bit3。

設定輸出電平:修改 gpio1 的 dr 暫存器的 bit3。

② gpio5_4 屬於第 5 組,即 gpio5。

有方向暫存器 dir、資料暫存器 dr 等,基礎位址是 addr_base_addr_gpio5。

設定為 output 引腳:修改 gpio5 的 dir 暫存器的 bit4。

設定輸出電平:修改 gpio5 的 dr 暫存器的 bit4。

可以針對某款晶元寫出乙個chipy_gpio.c,此檔案實現晶元上所有gpio的操作。然後在寫乙個board_led.c,來告訴chipy_gpio.c檔案操作哪個gpio引腳。這就是分離的概念。(gpio.c一般廠家都有提供)

物件導向設計思想

封裝 繼承 多型 既然是設計思想我想設計模式才是主要的 封裝 public,protect,private 繼承 單繼承 public,private 多重繼承,虛擬繼承 多型 靜態多型 函式過載,模板 動態多型 虛函式 封裝的目的 隱藏物件的屬性和實現細節,對外提供公開介面。降低和使用者 的耦合,...

物件導向的設計思想

新設計的板子多加了乙個振鏡控制和雷射器的控制,我畫pcb板的時候是把它們給分開了,就是雷射器控制介面在一起,振鏡控制介面在一起,原本是雷射器和控制雷射移動的位置 振鏡是一對的,我為了佈線方便,就把它們分開了。還發現了乙個問題,就是介面設計得太近了,同時插上兩個公頭的時候就會卡住,只能插上乙個。板子是...

物件導向思想設計原則

物件導向思想設計原則 物件導向思想設計原則 在實際的開發中,我們要想更深入的了解物件導向思想,就必須熟悉前人總結過的物件導向的思想的設計原則。單一職責原則 開閉原則 黎克特制替換原則 依賴注入原則 介面分離原則 迪公尺特原則 單一職責原則 其實就是開發人員經常說的 高內聚,低耦合 也就是說,每個類應...