1、原理分析
无线数码相框的GPQ3脚用于充电控制,当GPQ3为高电平是为充电状态,当为低电平时不充电。led的控制原理和充电脚的控制原理是一模一样的都是对某个io口置1或清零,所以在这里可以用led驱动实现对充电控制脚的控制。
Linux内核下drivers/leds/ledsgpio.c实现了一个和体系结构无关的led驱动,使用此led驱动我们只需要在BSP的板文件(arch/arm/mach-s3c6410/mach-smdk6410.c)中定义相关platform设备和数据
2、ut-s3c6410开发板的led控制驱动实现
在ut-s3c6410开发板上,用GPM0—GPM3外界4个lcd,因此对于的platform设备信息如下:
static struct gpio_led smdk6410_leds[] = {
[0] = {
.name = "LED1",
.gpio = S3C64XX_GPM(0),
},
[1] = {
.name = "LED2",
.gpio = S3C64XX_GPM(1),
.active_low = 1,
},
[2] = {
.name = "LED3",
.gpio = S3C64XX_GPM(2),
.active_low = 0,
},
[3] = {
.name = "LED4",
.gpio = S3C64XX_GPM(3),
.default_trigger = "heartbeat",
},
};
static struct gpio_led_platform_data smdk6410_gpio_led_pdata = {
.num_leds = ARRAY_SIZE(smdk6410_leds),
.leds = smdk6410_leds,
};
static struct platform_device smdk6410_device_led = {
.name = "leds-gpio",
.id = 1,
.dev = {
.platform_data = &smdk6410_gpio_led_pdata,
},
};
并将“&smdk6410_device_led,”语句填入 struct platform_device *ldd6410_devices[]数组,作为该数组的一个成员。
启动内核时会打印:
Registered led device: LED1
Registered led device: LED2
Registered led device: LED3
Registered led device: LED4
LED1—LED4对应开发板的四个led灯通过如下命令可分别点亮四个led灯:
#echo 1 > /sys/class/leds/LED1/brightness
#echo 1 > /sys/class/leds/LED1/brightness
#echo 1 > /sys/class/leds/LED1/brightness
#echo 1 > /sys/class/leds/LED1/brightness
通过如下命令可分别熄灭四个led等:
#echo 0 > /sys/class/leds/LED1/brightness
#echo 0 > /sys/class/leds/LED1/brightness
#echo 0 > /sys/class/leds/LED1/brightness
#echo 0 > /sys/class/leds/LED1/brightness
3、无线数码相框充电控制驱动实现
控制原理和以上分析的LED灯的控制是一模一样的,只需将smdk6410_leds结构体改为:
static struct gpio_led smdk6410_leds[] = {
[0] = {
.name = "charge",
.gpio = S3C64XX_GPQ(3),
},
};
通过如下命令开始电池充电:
#echo 1 > /sys/class/leds/ charge /brightness
通过如下命令停止电池充电:
#echo 0 > /sys/class/leds/ charge /brightness
其它的参见上面一节“ut-s3c6410开发板的led控制驱动实现”进行设置。
转载请注明出处,文章来源:http://www.threeway.cc/sitecn/InformationInfo.aspx?pid=1907&tid=1381
分享到:
相关推荐
很详细的基于三星S3C6410的linux内核移植,包括详细的LCD驱动、Nand驱动、LED驱动、ADC驱动等的移植。对三星的linux内核移植感兴趣的有福了……
S3C6410手册学习记录------系统控制器 S3C6410手册学习记录------系统控制器 S3C6410手册学习记录------系统控制器
S3C6410手册学习----memory map S3C6410手册学习----memory map S3C6410手册学习----memory map
s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤 s3c2440A linux内核移植步骤
S3C6410-ARM11 AD模块 LINUX平台驱动代码,包含Makefile、Linux、驱动测试应用程序
S3C6410-ARM11-pwm Linux驱动,可直接编译运行,值得学习与快速开发
S3C6410官方驱动测试代码(内容全),可用于嵌入式应用软件、驱动开发参考
s3c6410LED驱动程序移植,该文档给出了详细的程序代码,供初学嵌入式驱动开发的同学参考学习
S3C6410原理图,网上资料的整理集合,绝对物有所值。包括pcb元件封装库,不同厂商的pdf原理图,以及一些protel原理图,甚至pcb图,对6410硬件开发有较高的参考价值。
基于S3C6410的linux下的AD驱动,有8通道可选择,10/12 BIT精度可选,带测试程序。
基于S3C2440的嵌入式Linux内核移植及字符设备驱动开发.pdf
s3c6410支持onenand的u-boot-1.3.4,支持POP封装的s3c6410
s3c6410 LED的linux驱动程序及应用测试程序
Real6410\s3c6410 wxcat43-tgLCD裸机驱动可显图显ascii字符串
基于s3c6410的gps无线模块功能的实现,包括驱动程序.ko文件,还附有测试程序,非常方便移植到各类arm平台
代码为视频监控中T.264在三星S3C6410中的移植,在LINUX下编译通过了。只需要执行命令arm-linux-gcc main.c *.o -lm 然后在下载到板子上执行./a.out 就可以对接入的摄像头进行编码了。程序中的编码文件自动保存在s3c...
S3C6410-ARM11 IIC模块 Linux驱动代码,完美运行,供大家学习使用
【S3C2440 Linux 按键驱动】-【鹏哥教学】系列资料.pdf