一、编写一个hello world驱动
懒,不写了
二、编写Kconfig和Makefile
我们在kernel/driver目录下创建一个hello目录
然后创建一个Kconfig文件:
config HELLO tristate "Hello world for Firefly" help Hello for Firefly
然后创建一个Makefile文件:
obj-$(CONFIG_HELLO) += hello.o
接着在上一级目录里,就是driver目录Kconfig加入:
source "drivers/hello/Kconfig"
然后再上一级目录的,Makefile中加入:
obj-$(CONFIG_HELLO) += hello/
然后重新编译内核,制作镜像,烧录。
观察启动输出是否有打印信息
三、GPIO设置
GPIO常用系统调用函数,位于include/linux/gpio.h:
1. 申请GPIO static inline int gpio_request(unsigned gpio, const char *label) 2. 设置GPIO电平 static inline int gpio_set_value(unsigned int gpio, int value) 3. 获取GPIO电平 static inline int gpio_get_value(unsgined int gpio) 4. 设置GPIO为输出,并设置电平 static inline int gpio_direction_output(unsigned gpio, int value) 5. 设置GPIO为输入 static inline int gpio_direction_input(unsigned gpio)
ROC-RK3328-CC 的 GPIO 驱动是在以下 pinctrl 文件中实现的:
kernel/drivers/pinctrl/pinctrl-rockchip.c