1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
今天学习了RK3288的dts文件结构,特地写了一个gpio驱动点亮led灯,在这里把步骤代码分享给大家。
static const struct of_device_id of_leds_match[] = { { .compatible = "firefly,led", }, {}, }; //of_device_id 用于device和driver的match //compatible 在.dts文件的每个设备,都有一个compatible属性,compatible属性用户驱动和设备的绑定。 static int led_probe(struct platform_device *pdev) { int ret = -1; int gpio; enum of_gpio_flags flag; struct device_node *led_node = pdev->dev.of_node; //设备节点结构体 gpio = of_get_named_gpio_flags(led_node, "led-work", 0, &flag); if (!gpio_is_valid(gpio)){ printk("invalid led-work: %dn",gpio); gpio_free(gpio); return -1; } if (gpio_request(gpio, "led_work")) { printk("gpio %d request failed!n",gpio); gpio_free(gpio); return ret; } gpio_direction_output(gpio, 1); return 0; } //of_get_named_gpio_flags 从设备树中读取 led-power 的 GPIO 配置编号和标志,gpio_is_valid 判断该 GPIO 编号是否有效。 //gpio_request 则申请占用该 GPIO。如果初始化过程出错,需要调用 gpio_free 来释放之前申请过且成功的 GPIO 。 //调用 gpio_direction_output 就可以设置输出高还是低电平,因为是 GPIO_ACTIVE_HIGH ,如果要灯亮,需要写入 1 。
led222: led222{ compatible = "firefly,led"; led-work = <&gpio7 4 GPIO_ACTIVE_HIGH>; status = "okay"; } led222:led222{}这两个参数我感觉就是个变量名可以自己随便定,名字不一样也可以。 我的RK3288dts文件是"rk3288-evb-android-rk808-edp.dts",路径:/kernel/arch/arm/boot/bts 8. 编译kernel.img,resource.img烧录到板子 kernel 编译: cd kernel make ARCH = arm rockchip_deconfig make ARCH = arm rk3288-evb-android-rk808-edp.img -j12
rk3288:/ # cat /sys/kernel/debug/gpio cat /sys/kernel/debug/gpio GPIOs 0-23, platform/pinctrl, gpio0: gpio-5 ( |power ) in hi gpio-6 ( |vcc_phy ) out hi gpio-12 ( |otg_drv_gpio ) out lo gpio-14 ( |vcc_host ) out hi GPIOs 24-55, platform/pinctrl, gpio1: GPIOs 56-87, platform/pinctrl, gpio2: GPIOs 88-119, platform/pinctrl, gpio3: GPIOs 120-151, platform/pinctrl, gpio4: gpio-146 ( |bt_default_wake ) in hi gpio-148 ( |reset ) out hi gpio-149 ( |bt_default_reset ) out lo gpio-151 ( |bt_default_wake_host) in hi GPIOs 152-183, platform/pinctrl, gpio5: gpio-163 ( |bt_default_rts ) in hi GPIOs 184-215, platform/pinctrl, gpio6: GPIOs 216-247, platform/pinctrl, gpio7: gpio-218 ( |enable ) out hi gpio-219 ( |led_work ) out hi |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
498 浏览 0 评论
768 浏览 1 评论
667 浏览 1 评论
1893 浏览 1 评论
3138 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 01:24 , Processed in 0.698781 second(s), Total 70, Slave 54 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号