完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
RK3288开发板该驱动需要涉及到的知识点:1,DTS设备树的作用,2,platform虚拟总线驱动的编写。
第一步,添加DTS节点 在/kernel/arch/arm/boot/dts/rockchip.dts下添加如下内容。 下图rockchip-leds-gpio这部分的内容,修改保存, 第二步,在kernel/drivers下创建个LED文件夹,然后加入如下几个文件驱动文件leds.c,Makefile和Kconfig.如下图 源码: /*********************************************************************************** * driver for led0 * **********************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include static int leds_probe(struct platform_device *pdev) { int ret =-1 int i int led enum of_gpio_flags flag struct device_node *led_node = pdev->dev.of_node led = of_get_named_gpio_flags(led_node,”led-gpios”,0,&flag) printk(“get gpio id successfuln”) if(!gpio_is_valid(led)){ printk(“invalid led-gpios: %dn”,led) return -1 } if(gpio_request(led,”led_gpio”)){ printk(“led gpio request failed!n”) return ret } gpio_direction_output(led,1) for(i=0 i < 10 i++) { gpio_set_value(led,1) mdelay(500) gpio_set_value(led,0) mdelay(500) printk(“it’s %dn”,i) } return 0 } static int leds_remove(struct platform_device *pdev) { return 0 } static struct of_device_id leds_of_match[] = { { .compatible = “rockchip-leds-gpio” }, { } } MODULE_DEVICE_TABLE(of, leds_of_match) static struct platform_driver leds_driver = { .driver = { .name = “leds-drivers”, .owner = THIS_MODULE, .of_match_table = of_match_ptr(leds_of_match), }, .probe = leds_probe, .remove = leds_remove, }; /*static int __init leds_init(void) { printk(KERN_INFO “Enter %sn”, __FUNCTION__) return platform_driver_register(&leds_driver) return 0 } static void __exit leds_exit(void) { platform_driver_unregister(&leds_driver) printk(“close ledsn”) }*/module_platform_driver(leds_driver) module_platform_driver(leds_driver) MODULE_DESCRIPTION(“leds Driver”) MODULE_LICENSE(“GPL”) MODULE_ALIAS(“platform:leds-drivers”) /*********************************************************************************** * driver for led0 * **********************************************************************************/ Kconfig: Makefile: 第三步,修改drivers下的Kconfig和Makefile,修改内容如下 在Kconfig末尾添加:source “drivers/led/Kconfig” 在Makefile末尾添加: obj-$(CONFIG_LED0_TEST) +=led/ 第四步,编译新的kernel与resource并烧写进板子里, 然后DTS中定义的引脚就会按照驱动的内容,进行高低电平的变化。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
458 浏览 0 评论
716 浏览 1 评论
620 浏览 1 评论
1850 浏览 1 评论
3099 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 20:18 , Processed in 0.702490 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号