2024年6月12日发(作者:)

本文由我司收集整编,推荐下载,如有疑问,请与我司联系

RK3066 实现LED闪烁的代码分析

实现LED灯的闪烁,需要在驱动里添加一个定时器函数,具体实现涉及到了

LED GPIO驱动,用户空间程序调用驱动程序。

  1.首先来看LED设备驱动注册过程,代码位于../kernel/drivers/leds/led-gpio.c中,

  297 static int __init gpio_led_init(void)

  298 {

  299 return platform_driver_register( gpio_led_driver);

  300 }

  285 static struct platform_driver gpio_led_driver = {

  286 .probe = gpio_led_probe,

  287 .remove = __devexit_p(gpio_led_remove),

  288 .driver = {

  289 .name = “leds-gpio”, //与platform_device结构体rk29_device_gpio_leds(见后

面的添加过程)中定义的.name一致,platform总线通过name将两者关联;

  290 .owner = THIS_MODULE,

  291 .of_match_table = of_gpio_leds_match,

  292 },

  293 };

  driver中的probe函数,其中pdev对应于 ../kernel/arch/arm/mach-rk30/board-

rk30sdk-box.c 中定义的platform_device结构体rk29_device_gpio_leds,其中.name =

“leds-gpio”

  235 static int __devinit gpio_led_probe(struct platform_device *pdev)

  236 {

  237 struct gpio_led_platform_data *pdata = pdev- rm_data;

  238 struct gpio_leds_priv *priv;