热度 31
2014-3-1 12:34
1263 次阅读|
0 个评论
Linux驱动中已经将led驱动作为一个子系统来实现了,针对Tiny210采用通用IO口来控制led的情况,linux采用platform驱动来实现led子系统,因此我们可以通过led子系统来了解一下platform驱动的框架结构和驱动移植过程应该注意的地方。 首先,我们应该找到通用IO口驱动led的platform驱动代码的位置:drivers/leds/leds-gpio.c,如图26: 图26 根据platform驱动和设备的匹配原则,我们找到driver对应的name为”leds-gpio”,如图27: 图27 其次,我们需要在板级文件(arch/arm/mach-s5pv210/mach-mini210.c)中添加一项platform device,如下: static struct gpio_led gpio_leds ,还需要添加头文件linux/leds.h,之后配置menuconfig可以将其编译为模块mini210_leds.ko。修改之后的板级文件如mach-mini210.c(附件中)。 最后,动态插入leds模块之后我们进入/sys/class/leds/led2,查看trigger的值为none,如图28: 图28 可以使用cat和echo命令修改brightness的值观察led的状态,将brightness的值改为1时,对应的led2点亮,将brightness的值改为0时,对应的led2熄灭。如图29: 图29