Rumah > Artikel > Tutorial sistem > Pemacu PWM Linux
Artikel ini akan memberikan pengenalan yang mendalam kepada rangka kerja pemacu PWM (Pulse-Width Modulation) Linux, termasuk prinsip pelaksanaannya, kaedah penambahan pemacu dan kaedah penyahpepijatan untuk membantu pembangun lebih memahami dan menggunakan fungsi ini.
Sampel versi kernel Linux yang ditunjukkan dalam artikel ini ialah 6.2.8.
(1) pwmchip_add fungsi. Digunakan untuk mendaftar peranti pengawal PWM baharu. Ditakrifkan dalam ./drivers/pwm/core.c.
(2) pwmchip_remove fungsi. Digunakan untuk mengalih keluar peranti pengawal PWM. Ditakrifkan dalam ./drivers/pwm/core.c. Kaedah pelaksanaan tipikal pemandu 3.4(1) Ringkasan
Fail sumber pemacu PWM terletak di laluan ./drivers/pwm Pembangun pemacu perlu menambah fail sumber yang sepadan Reka bentuk fail sumber boleh merujuk kepada kod pemacu pengeluar lain. Merujuk kepada gaya penamaan kod asal, anda boleh menamakan fail sumber pemacu yang baru ditambah pwm-xx.c, namakan probe dan alih keluar fungsi masing-masing sebagai xx_pwm_probe dan xx_pwm_remove, dan mentakrifkan struktur pengawal PWM sebagai struct xx_pwm_chip. Fail dalam laluan ./drivers/pwm adalah seperti berikut.
(2) gunakan fungsi dan dapatkan_nyatakan definisi fungsiMenurut manual pengawal PWM, fungsi apply dan fungsi get_state ditakrifkan oleh pembangun pemacu.
(3)xx_pwm_probe takrifan fungsi
Kaedah pelaksanaan fungsi xx_pwm_probe ialah: mula-mula mulakan pembolehubah struktur pengawal PWM xx_pwm_chip, dan kemudian panggil fungsi teras rangka kerja pemacu PWM pwmchip_add untuk mendaftar peranti pengawal PWM baharu.
(4)xx_pwm_remove definisi fungsi
Fungsixx_pwm_remove dilaksanakan dengan memanggil fungsi teras rangka kerja pemacu PWM pwmchip_remove untuk mengalih keluar peranti pengawal PWM.
4. Kaedah penambahan pemandu
4.1 Tambah fail sumber pemacu
Ikuti kaedah yang diterangkan dalam Bahagian 3.4, tulis fail sumber pemacu pwm-xx.c, dan tambahkannya pada laluan ./drivers/pwm.
4.2 menambah sokongan kompilasi
(1) Ubah suai fail Kconfig di bawah laluan ./drivers/pwm dan tambahkan pilihan konfigurasi pemacu PWM yang ditambahkan.
(2) Ubah suai fail Makefile dalam laluan ./drivers/pwm dan tambahkan pilihan kompilasi pwm-xx.c.
(3) Dalam antara muka memuconfig, dayakan pemacu PWM yang ditambahkan. Antara muka konfigurasi adalah seperti berikut.
4.3 Tambah nod pokok peranti pengawal PWMTambahkan nod pokok peranti pengawal PWM dalam pepohon peranti. Sifat asas nod ini termasuk keserasian, daftar dan bilangan #pwm-cells Tambah gangguan, jam, set semula dan sifat lain seperti yang diperlukan.
Untuk kaedah reka bentuk pokok peranti pengawal PWM, sila rujuk ./Documentation/devicetree/bindings/pwm.
Di bawah ialah contoh nod pokok peranti pengawal PWM. Dokumen rujukan adalah seperti berikut:
./Dokumentasi/devicetree/bindings/pwm/nvidia,tegra20-pwm.yaml.
5.Kaedah nyahpepijat
Gunakan antara muka sysfs untuk menyahpepijat pemacu PWM secara berfungsi Contoh arahan penyahpepijatan utama adalah seperti berikut.
(1) Lihat nod pengawal PWM
ls /sys/class/pwm/pwmchip0
(2) Hidupkan isyarat saluran PWM yang ditentukan
echo n > /sys/class/pwm/pwmchip0/export
//n ialah nombor saluran
(3) Tetapkan tempoh isyarat PWM
echo pvalue > /sys/class/pwm/pwmchip0/pwm0/tempoh
//pvalue ialah nilai period
(4)Tetapkan kitaran tugas isyarat PWM
echo dvalue > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
// dvalue ialah nilai lebar tahap berkesan
(5) Dayakan isyarat saluran PWM tertentu
gema 1 > /sys/class/pwm/pwmchip0/pwm0/enable
(6) Lumpuhkan isyarat saluran PWM tertentu
gema 0 > /sys/class/pwm/pwmchip0/pwm0/enable
Atas ialah kandungan terperinci Pemacu PWM Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!