sc32440 内核自带LED驱动

xiaoxiao2021-02-28  96

FL2440添加自带led驱动

本文转自http://blog.csdn.net/edroid1530/article/details/70305807 在之前学习驱动自己写过led的驱动程序,其实s3c2440对于驱动已经支持得非常好,内核里面已经有了led的驱动程序,我们要使能led驱动只需要稍作修改。

make menuconfig 配置

Device Drivers ---> [*] LED Support ---> [*] LED Class Support <*> LED Support for Samsung S3C24XX GPIO LEDs//添加LED支持 1234 1234

源码修改

s3c24xx系列的芯片的led硬件信息基本一致,因此内核将led的硬件设备信息源码放在了 arch/arm/plat-s3c24xx/common-smdk.c,对照芯片手册,我们要把led0~led3的相关GPIO分别配置成PB5,PB6,PB8,PB10

vim arch/arm/plat-s3c24xx/common-smdk.c /* LED devices */ static struct s3c24xx_led_platdata smdk_pdata_led4 = { .gpio = S3C2410_GPB(5),/*led0为PB5*/ .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led0", .def_trigger = "timer", }; static struct s3c24xx_led_platdata smdk_pdata_led5 = { .gpio = S3C2410_GPB(6),/*led1为PB6*/ .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led1", .def_trigger = "nand-disk", }; static struct s3c24xx_led_platdata smdk_pdata_led6 = { gpio = S3C2410_GPB(8),/*led2为PB8*/ .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led2", }; static struct s3c24xx_led_platdata smdk_pdata_led7 = { .gpio = S3C2410_GPB(10),/*led3为PB10*/ .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led3", }; 12345678910111213141516171819202122232425262728 12345678910111213141516171819202122232425262728

完成以上操作之后重新编译内核并且下载到开发板。

测试运行

对于向led这样的设备模型,系统认为所有的设备都是挂接在总线上的,而要使设备工作,就需要相应的驱动。设备模型会产生一个虚拟的文件系统——sysfs,它给用户提供了一个从用户空间去访问内核设备的方法,它在Linux里的路径是/sys。如果要写程序访问sysfs,可以像读写普通文件一样来操作/sys目录下的文件。

下载到内核之后会在/sys/class/目录下生成leds目录,会看到led0 led1 led2 led3,在leds目录下执行ls -l 可知,led0、led1 、led2、 led3都是软连接

进入到led0目录下,可以看到brightness 等文件 其中brightness就是控制等亮灭的文件,max_brightness可以控制亮灭程度的最大值假如设定是100就是0到100代表不同的亮度(需要单板硬件的支持)。 - 向brightness文件中写入1控制灯亮 - 向brightness文件中写入0控制灯亮

cat > brightness //向brightness写入数据 可以看到,写入1时,led0点亮;写入0时,led0熄灭。对于其他的led灯也是同样的操作。

(function () {('pre.prettyprint code').each(function () { var lines = (this).text().split(\n).length;var numbering = $(' ').addClass('pre-numbering').hide(); (this).addClass(hasnumbering).parent().append( numbering); for (i = 1; i
转载请注明原文地址: https://www.6miu.com/read-69120.html

最新回复(0)