完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
网上买了一块二手板子Firefly-RK3288 Reload板子,放了一段时间没用。。.。。下班时不时的玩一下。。.。。不玩下载编译都忘记了。。。
以下是步骤: 1.看下主板原理图 DIY-LED,是核心板输出的gpio, 设置成低电平就能亮了。 2.看下引脚定义,原理图上写的不好,DIY_LED变为了POWER_LED,这里是从60来判断是GPIO8_A2的。 3.看下dtsi , 文件名是firefly-rk3288-reload.dts 这里首先看到的是: 1.驱动要匹配compatible“gpio-leds” 2. GPIO_A2 gpio8 是user的设备节点 所以我们软件要申请的是leds的子节点(power) ----》 的兄弟节点user的gpio (备注: 这里代码写的是yellow, 实际硬件是个蓝灯啊。。.。。.。。.。。.。。!! ) 4.写代码 #include 《linux/kernel.h》 #include 《linux/init.h》 #include 《linux/module.h》 #include 《linux/delay.h》 #include 《linux/gpio.h》 #ifdef CONFIG_OF #include 《linux/of.h》 #include 《linux/of_gpio.h》 #include 《linux/of_platform.h》 #endif #define GPIO_LOW 0 #define GPIO_HIGH 1 static int firefly_led_probe(struct platform_device *pdev) { int ret = -1; int i; int gpio; enum of_gpio_flags flag; struct device_node *led_node = pdev-》dev.of_node; printk(“qyc, led_node-》name= %sn”, led_node-》name); printk(“qyc, led_node-》child-》sibling-》name= %sn”, led_node-》child-》sibling-》name); gpio = of_get_named_gpio_flags(led_node-》child-》sibling, “gpios”, 0, &flag); if(!gpio_is_valid(gpio)) { printk(KERN_ALERT “qyc, invalid gpio: %dn”, gpio); return -1; } ret = gpio_request(gpio, “user”); if (ret != 0) { gpio_free(gpio); printk(KERN_ALERT “qyc, request gpio failed !”); return -EIO; } gpio_direction_output(gpio, GPIO_LOW); msleep(500); gpio_direction_output(gpio, GPIO_HIGH); msleep(500); gpio_direction_output(gpio, GPIO_LOW); return 0; } static int firefly_led_remove(struct platform_device *pdev) { return 0; } #ifdef CONFIG_OF static const struct of_device_id of_firefly_led_match[] = { {.compatible = “gpio-leds”}, }; #endif static struct platform_driver firefly_led_driver = { .probe = firefly_led_probe, .remove = firefly_led_remove, .driver = { .name = “firefly_led”, .owner = THIS_MODULE, #ifdef CONFIG_OF .of_match_table = of_firefly_led_match, #endif }, }; static int __init hello_init(void) { printk(KERN_INFO “qyc, at %s.。。n”, __FUNCTION__); return platform_driver_register(&firefly_led_driver); } static void __exit hello_exit(void) { platform_driver_unregister(&firefly_led_driver); } subsys_initcall(hello_init); module_exit(hello_exit); MODULE_LICENSE(“GPL”); 附开机log: 5.现象是蓝灯闪, 开机之后常亮。 OVER !! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
458 浏览 0 评论
716 浏览 1 评论
620 浏览 1 评论
1850 浏览 1 评论
3099 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 04:41 , Processed in 0.528503 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号