fl2440使能linux-3.0内核自带的led驱动,并测试
来源:互联网 发布:淘宝店以开启,怎么找货 编辑:程序博客网 时间:2024/05/20 15:59
linux-3.0版本内核自带有led的驱动,需要启用首先要配置内核的make menuconfig,
Device drivers--> [*]LED support--> [*]LED Class support <*>LED Support for Samsung S3C24XX GPIO LEDs /*添加led支持*/
之后需要修改一下内核led的设备代码。
根据fl2440底板原理图可以知道
led管脚分别是GPB5,6,8,10,修改设备代码,打开 vim arch/arm/plat-s3c24xx/common-smdk.c
/* LED devices */static struct s3c24xx_led_platdata smdk_pdata_led4 = { .gpio = S3C2410_GPB(5), .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led1", .def_trigger = "timer",};static struct s3c24xx_led_platdata smdk_pdata_led5 = { .gpio = S3C2410_GPB(6), .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led2", .def_trigger = "nand-disk",};static struct s3c24xx_led_platdata smdk_pdata_led6 = { .gpio = S3C2410_GPB(8), .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led3",};static struct s3c24xx_led_platdata smdk_pdata_led7 = { .gpio = S3C2410_GPB(10), .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led4",};
void __init smdk_machine_init(void){ /* Configure the LEDs (even if we have no LED support)*/ s3c_gpio_cfgpin(S3C2410_GPB(5), S3C2410_GPIO_OUTPUT); s3c_gpio_cfgpin(S3C2410_GPB(6), S3C2410_GPIO_OUTPUT); s3c_gpio_cfgpin(S3C2410_GPB(8), S3C2410_GPIO_OUTPUT); s3c_gpio_cfgpin(S3C2410_GPB(10), S3C2410_GPIO_OUTPUT); s3c2410_gpio_setpin(S3C2410_GPB(5), 1); s3c2410_gpio_setpin(S3C2410_GPB(6), 1); s3c2410_gpio_setpin(S3C2410_GPB(8), 1); s3c2410_gpio_setpin(S3C2410_GPB(10), 1);配置好之后,编译内核,烧录运行,在如图路径下有四个led文件,cat其中一个后,内容是0,此时是关闭,向里面写1则亮,写0则灭,其它led也是这么操作的。
对于led这样的设备模型,系统认为所有的设备都是挂接在总线(platform)上的,而要使设备工作,就需要相应的驱动。设备模型会产生一个虚拟的文件系统——sysfs,它给用户提供了一个从用户空间去访问内核设备的方法,它在Linux里的路径是/sys。如果要写程序访问sysfs,可以像读写普通文件一样来操作/sys目录下的文件
测试代码
/********************************************************************************* * Copyright: (C) 2017 ZhangYan<zhangyan@emaill.com> * All rights reserved. * * Filename: test_led_kernelown.c * Description: This file * * Version: 1.0.0(2017年09月12日) * Author: ZhangYan <zhangyan@emaill.com> * ChangeLog: 1, Release initial version on "2017年09月12日 20时16分02秒" * ********************************************************************************/ #include<stdint.h> #include<string.h> #include<fcntl.h> #include<unistd.h> #include<stdio.h> #include<linux/input.h> #include<unistd.h> int main(int argc, char *argv[]) { int fd, no; no=(int)argv[1][3]-48; /*这么做的目的是得到运行./led_test led1(led2,led3,led4)on 命令时中的第二个参数中的数字1,2,3,4*/ switch(no) { case 1: fd = open("/sys/class/leds/led1/brightness", O_RDWR); break; case 2: fd = open("/sys/class/leds/led2/brightness", O_RDWR); break; case 3: fd = open("/sys/class/leds/led3/brightness", O_RDWR); break; case 4: fd = open("/sys/class/leds/led4/brightness", O_RDWR); break; default: return -1; } if(fd<0) { printf("can not open file.\n"); return -1; } /*完成打开或关闭LED操作*/ if(!strcmp(argv[2],"on")) write(fd, "1", 1); else if(!strcmp(argv[2],"off")) write(fd, "0", 1); close(fd); return 0; }编译后,tftp到开发板上运行
可以成功运行了
阅读全文
0 0
- fl2440使能linux-3.0内核自带的led驱动,并测试
- fl2440内核自带的LED驱动修改与使用
- fl2440——linux内核自带的led驱动添加
- fl2440——内核自带LED的使用
- FL2440添加自带led驱动
- fl2440——内核自带按键驱动的移植与测试
- fl2440内核linux-3.0移植-----添加led驱动
- 内核自带LED驱动移植
- sc32440 内核自带LED驱动
- tiny4412内核自带led驱动分析
- 基于FL2440平台在linux内核上led驱动开发
- fl2440——内核自带按键驱动 代码分析
- fl2440内核自带按键驱动移植及hexdump命令
- Linux下fl2440之led驱动编写以及测试
- 内核自带按键驱动的添加与测试
- linux3.0-内核自带led驱动移植
- arm9+linux fl2440 led 驱动 plat_led.c
- linux驱动开发FL2440开发板-LED驱动及其测试程序
- ACM学习计划安排
- JSP学习(一)-------JSP概述
- 微信小程序自我总结
- 深入总结Java关键字this的用法
- 初级测试工程师面试总结
- fl2440使能linux-3.0内核自带的led驱动,并测试
- PAT 甲级 Consecutive Factors (20)
- 菜鸟的自定轮播图
- 计算几何基础算法
- hihocoder 1426 What a Ridiculous Election
- 如何配置 Sublime Text 的 LaTeXTools?
- 八数码 BFS+HASH
- HDU4553(线段树区间合并)
- colorAccent,colorPrimary,colorPrimaryDark做什么的?