詳解linux pwm驅動編寫

2022-09-26 14:51:14 字數 1408 閱讀 2140

pwm方波可以用來控制很多的裝置,比如它可以被用來控制電機。簡單來說,就是單位時間內的方波越多,那麼電機的轉速就會越快;反之就越慢。通過這個特性,soc就可以輕鬆地利用pwm對外設進行自動控制。所以,今天的主題就是pwm驅動。

1、驅動目錄

drivers/pwm

2、檢視對應目錄下的kconfig

config pwm_samsung

tristate "samsung pwm support"

depends on plat_samsung || arch_exynos

help

dsttpqtxf generic pwm framework driver for samsung.

to compile this driver as a module, choose m here: the module

will be called pwm-samsung.

3、確認pwm_samsung只依賴於自己之外,繼續看makefile

obj-$(config_pwm) += core.o

obj-$(config_pwm_samsung) += pwm-samsung.o

4、根據makefile查閱pwm-samsung.c檔案,結構比較清楚

static struct platform_driver pwm_samsung_driver = ,

.probe = pwm_samsung_probe,

.remove = pwm_samsung_remove,

};module_platform_driver(pwm_samsung_driver);

5、soc裝置大多數是platform裝置,繼續尋找probe函式中的有用資訊

ret = pwmchip_add(&chip->chip);

if (ret < 0)

6、找到註冊函式後,接續看看函式介面點在什麼地方

static const struct pwm_ops pwm_samsung_ops = ;

7、pwm裝置沒有中斷函式,一般是立馬生效,除此之外,**中還是有裝置樹的內容,可以看看

static const struct of_device_id sams程式設計客棧ung_pwww.cppcns.comwm_matches[程式設計客棧] = ,

, ,, ,

{},};module_device_table(of, samsung_pwm_matches);

static int pwm_samsung_parse_dt(struct samsung_pwm_chip *chip)

chip->variant.output_mask |= bit(val);

} return 0;

}本文標題: 詳解linux pwm驅動編寫

本文位址:

Linux PWM的驅動編寫

比如要用到pwm1,那麼首先要保證這個pwm1並沒有被別的驅動程式占用。比如在驅動的裝置樹裡面 backlight可以看到裡面把pwm1已經占用掉了,那麼除了可以把相應的驅動程式設定為不編譯以外,也可以直接把這個裝置樹裡面的標識遮蔽掉,那麼在載入驅動時在裝置樹裡面沒有找到對應的compatible,...

詳解linux usb host驅動編寫入門

usb協議是乙個複雜的協議,目前涉及到的版本就有usb1.0,usb2.0,usb3.0。大家如果開啟kernel usb host目錄,就會發現下面包含了ohci,uhci,ehci,xhci,whci等多種形式的控制器驅動。那麼,對於我們這些不是很了解usb的開發人員,如何了解usb的 結構呢?...

norflash驅動編寫

首先我們來看 參考drivers mtd maps physmap.c include include include include include include include include include include include include static struct map ...