查看kernel的dts文件:
./build.sh kernel
在文件目录Z:\kernel\arch\arm64\boot\dts\rockchip下找到rk3308b-roc-cc-plus-amic_emmc然后在里面添加pwm配置,如下所示:配置了一个pwm10
pwm-roll {
status = "okay";
compatible = "pwm-roll";
pwms = <&pwm10 0 25000 0>;
};
在下面添加有&符号后面添加一个:
&pwm10 {
status = "okay";
pinctrl-names = "active";
pinctrl-0 = <&pwm10_pin_pull_down>;
};
在Z:\kernel\drivers(自己创建的文件夹):
创建一个如下的文件夹:
Z:\kernel\drivers的makefile最后添加:
obj-y += (自己文件夹名字)/pwm_roll/
切换到:
除了pwm_roll文件以外都可以在drivers文件中找到,复制过来后只用修改Makefile和Kconfig,将其串联进kernel中:
Makefile文件如下
obj-y += pwm_roll.o
Kconfig文件如下
config PWM_ROLL
bool "PWM_ROLL"
default y
depends on PWM_SYSFS
---help---
Serial Port Transmitter support
编写pwm_roll.c
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/pwm.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/miscdevice.h>
#include <linux/slab.h>
#include <linu