内核自带LED驱动移植
来源:互联网 发布:淘宝怎么更改退款金额 编辑:程序博客网 时间:2024/05/16 19:33
在fl2440的内核中,本身已经有了LED驱动,我们要根据自己的需求将它使能即可,重要的是如何找到需要修改的位置,如何修改。在前面分析过我们自己写的驱动代码,内核中自带的驱动原理也大概相似,首先在make menuconfig 下添加内核对LED驱动的支持,然后我们要在内核的drivers/目录下找到leds,然后去看s3c24xx.c里的代码,前面在plat-led中分析过设备和驱动是如何找到彼此的,通过.name,找到设备名,然后返回内核目录下,用grep命令查找我们在驱动中的.name,看设备文件在哪里,然后根据fl2440的硬件原理图对其进行修改,返回内核目录下执行make, OK。
下面是实际操作过程。
一、首先在内核中添加对LED的支持。
[fanmaolin@Centeros linux-3.0]$ make menuconfig
Device Drivers --->
[*] LED Support --->
[*] LED Class Support
<*> LED Support for Samsung S3C24XX GPIO LEDs
二、找到设备信息,进行修改
[fanmaolin@Centeros linux-3.0]$ cd drivers/
会看到leds,
[fanmaolin@Centeros drivers]$ cd leds/
在里面找到 leds-s3c24xx.c
[fanmaolin@Centeros leds]$ vim leds-s3c24xx.c
找到.name = "s3c24xx_led"我们用它来找到设备信息文件
用grep命令寻找包含这个字符串的文件
[fanmaolin@Centeros linux-3.0]$ grep s3c24xx_led -r *
去arch/arm/plat-s3c24xx/common-smdk.c里寻找
根据原理图修改结构体里的信息
[fanmaolin@Centeros linux-3.0]$ vim arch/arm/plat-s3c24xx/common-smdk.c
/* LED devices */ 50 51 static struct s3c24xx_led_platdata smdk_pdata_led4 = { 52 .gpio = S3C2410_GPB(5),//根据手册改引脚 分别改为5、6、8、10 53 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, 54 .name = "led0",//.name 可以根据自己习惯改,不改也无所谓 55 .def_trigger = "timer", 56 }; 57 58 static struct s3c24xx_led_platdata smdk_pdata_led5 = { 59 .gpio = S3C2410_GPB(6), 60 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, 61 .name = "led1", 62 .def_trigger = "nand-disk", 63 }; 64 65 static struct s3c24xx_led_platdata smdk_pdata_led6 = { 66 .gpio = S3C2410_GPB(8), 67 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, 68 .name = "led2", 69 }; 70 71 static struct s3c24xx_led_platdata smdk_pdata_led7 = { 72 .gpio = S3C2410_GPB(10), 73 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, 74 .name = "led3", 75 };
这样就可以了,然后make编译,重新安装内核。。。
三、开发板上进行测试
我们可以在sys/class下看到leds
关于sys/:
sysfs 文件系统总是被挂载在 /sys 挂载点上,sysfs 是 Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。它给用户提供了一个从用户空间去访问内核设备的方法,写程序访问sysfs,可以像读写普通文件一样来操作/sys目录下的文件。在/sys/devices 下是所有设备的真实对象,包括如视频卡和以太网卡等真实的设备,也包括 ACPI 等不那么显而易见的真实设备,还有 tty, bonding 等纯粹虚拟的设备;在其它目录如 class, bus 等中则在分类的目录中含有大量对 devices 中真实对象引用的符号链接文件.
更多详细的关于sysfs的介绍,可以参考:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/index.html
对于我们的LED,linux把他当作是直接挂载在总线上的,可以直接通过/sys上操作对应文件而控制LED。
可以看到设备信息。
进入led2,
brightness是控制灯的亮灭,>1亮,0灭。 max_brightness可以控制灯的亮度
现在我们对其进行实际操作
>: echo 2 > brightness
可以看到第三盏灯亮
>: echo 0 > brightness ,,灯灭。
其它的灯可以同样进行这样的操作。
也可以写一个程序直接对其进行操作,而不用进到文件里面。。。
- 内核自带LED驱动移植
- linux3.0-内核自带led驱动移植
- sc32440 内核自带LED驱动
- tiny4412内核自带led驱动分析
- fl2440内核自带的LED驱动修改与使用
- Linux4.3.2内核自带LCD驱动移植
- fl2440内核自带按键驱动移植及hexdump命令
- FL2440添加自带led驱动
- STM8S103F3P6自带LED灯驱动汇编
- fl2440——linux内核自带的led驱动添加
- fl2440使能linux-3.0内核自带的led驱动,并测试
- fl2440——内核自带按键驱动的移植与测试
- 移植mini2440 2.6.32.2内核LED驱动到3.10.17
- fl2440内核linux-3.0移植-----添加led驱动
- fl2440——内核自带LED的使用
- 05-S3C2440学习之内核(移植)linux3.4.2移植(4)支持LED驱动、按键驱动
- Linux-2.6.32.2内核在mini2440上的移植(十五)---移植LED驱动
- Linux-2.6.32.2内核在mini2440上的移植(十五)---移植LED驱动
- zfs日常管理以及替换损坏磁盘
- Android 保存和恢复activity的状态数据
- Unity中内嵌网页插件UniWebView使用总结
- 排序算法(5)--快速排序
- 椭圆与圆的拟合
- 内核自带LED驱动移植
- ac_automation 模板
- numpy库
- Linux下将文件打包、压缩并分割成指定大小
- 【信贷业务】信贷五级分类的定义
- eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法
- Linux free -m 详细说明
- Minimum Moves to Equal Array Elements问题及解法
- yum更新源