当前位置: 首页 > news >正文

做旅游海报的软件或是网站长沙最好网站建设

做旅游海报的软件或是网站,长沙最好网站建设,wordpress的编辑器在哪个目录,中秋节网页设计素材目录 一、简介 二、使能Linux自带LED驱动 三、Linux内核自带LED驱动框架 四、设备树节点编写 五、运行测试 一、简介 前面我们都是自己编写 LED 灯驱动,其实像 LED 灯这样非常基础的设备驱动, Linux 内核已经集成了。 Linux 内核的 LED 灯驱动采用 …

目录

一、简介

二、使能Linux自带LED驱动

三、Linux内核自带LED驱动框架

四、设备树节点编写

五、运行测试


一、简介

        前面我们都是自己编写 LED 灯驱动,其实像 LED 灯这样非常基础的设备驱动, Linux 内核已经集成了。 Linux 内核的 LED 灯驱动采用 platform 框架,因此我们只需要按照要求在设备树文件中添加相应的 LED 节点即可。

        本章我们就来学习如何使用 Linux 内核自带的 LED 驱动来驱动 I.MX6U-ALPHA 开发板上的 LED0。

二、使能Linux自带LED驱动

        要使用 Linux 内核自带的 LED 灯驱动首先得先配置 Linux 内核,使能自带的 LED 灯驱动,输入如下命令打开 Linux 配置菜单:

make menuconfig

按照如下路径打开 LED 驱动配置项:

-> Device Drivers-> LED Support (NEW_LEDS [=y])->LED Support for GPIO connected LEDs

        按照上述路径,选择“LED Support for GPIO connected LEDs”,将其编译进 Linux 内核,也即是在此选项上按下“Y”键,使此选项前面变为“<*>”,如下图所示:

        在“LED Support for GPIO connected LEDs”上按下‘?’ 可以打开此选项的帮助信息,如下图所示:

        从上图可 以 看 出,把 Linux 内 部 自 带 的 LED 灯 驱 动 编 译 进 内 核 以 后 ,CONFIG_LEDS_GPIO 就会等于‘y’, Linux 会根据 CONFIG_LEDS_GPIO 的值来选择如何编译LED 灯驱动,如果为‘y’就将其编译进 Linux 内核。

        配置好 Linux 内核以后退出配置界面,打开.config 文件,会找到“CONFIG_LEDS_GPIO=y”,这一行,如下图所示:

        重新编译 Linux 内核,然后使用新编译出来的 zImage 镜像启动开发板。

三、Linux内核自带LED驱动框架

        LED 灯驱动文件为/drivers/leds/leds-gpio.c,打开/drivers/leds/Makefile 这个文件,找到如下所示内容:

        如果定义了 CONFIG_LEDS_GPIO 的话就会编译 leds-gpio.c 这个文件,在上一小节我们选择将 LED 驱动编译进 Linux 内核,在.config 文件中就会有“CONFIG_LEDS_GPIO=y”这一行,因此 leds-gpio.c 驱动文件就会被编译。 接下来我们看一下 leds-gpio.c 这个驱动文件,找到如下所示内容:

static const struct of_device_id of_gpio_leds_match[] = {{ .compatible = "gpio-leds", },{},
};MODULE_DEVICE_TABLE(of, of_gpio_leds_match);
......
static struct platform_driver gpio_led_driver = {.probe      = gpio_led_probe,.shutdown   = gpio_led_shutdown,.driver     = {.name   = "leds-gpio",.of_match_table = of_gpio_leds_match,},
};module_platform_driver(gpio_led_driver);

        LED 驱动的匹配表,此表只有一个匹配项, compatible 内容为“gpio-leds”,因此设备树中的 LED 灯设备节点的 compatible 属性值也要为“gpio-leds”,否则设备和驱动匹配不成功,驱动就没法工作。

        platform_driver 驱动结构体变量,可以看出, Linux 内核自带的 LED 驱动采用了 platform 框架。可以看出 probe 函数为 gpio_led_probe,因此当驱动和设备匹配成功以后 gpio_led_probe 函数就会执行。驱动名字为“leds-gpio”,因此会在/sys/bus/platform/drivers 目录下存在一个名为“leds-gpio”的文件,如下图所示:

四、设备树节点编写

        打开文档 Documentation/devicetree/bindings/leds/leds-gpio.txt,此文档详细的讲解了 Linux 自带驱动对应的设备树节点该如何编写,我们在编写设备节点的时候要注意以下几点:

①、创建一个节点表示 LED 灯设备,比如 dtsleds,如果板子上有多个 LED 灯的话每个 LED灯都作为 dtsleds 的子节点。

②、 dtsleds 节点的 compatible 属性值一定要为“gpio-leds”。

③、设置 label 属性,此属性为可选,每个子节点都有一个 label 属性, label 属性一般表示LED 灯的名字,比如以颜色区分的话就是 red、 green 等等。

④、每个子节点必须要设置 gpios 属性值,表示此 LED 所使用的 GPIO 引脚!

⑤、可以设置“linux,default-trigger”属性值,也就是设置 LED 灯的默认功能,可以查阅Documentation/devicetree/bindings/leds/common.txt 这个文档来查看可选功能,比如:

  • backlight: LED 灯作为背光。

  • default-on: LED 灯打开

  • heartbeat: LED 灯作为心跳指示灯,可以作为系统运行提示灯。

  • ide-disk: LED 灯作为硬盘活动指示灯。

  • timer: LED 灯周期性闪烁,由定时器驱动,闪烁频率可以修改

⑥、可以设置“default-state”属性值,可以设置为 on、 off 或 keep,为 on 的时候 LED 灯默认打开,为 off 的话 LED 灯默认关闭,为 keep 的话 LED 灯保持当前模式。

根据上述几条要求在 imx6ul-14x14-evk.dtsi 中添加如下所示 LED 灯设备节点:

led {compatible = "gpio-leds";led0 {lable = "red";gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;default-state = "off";};
};

        因为 I.MX6U-ALPHA 开发板只有一个 LED0,因此在 led 这个节点下只有一个子节点led0, led0 名字为 red,默认关闭。修改完成以后保存并重新编译设备树,然后用新的设备树启动开发板。

五、运行测试

        用 新 的 zImage 和 imx6ull-toto.dtb 启 动 开 发 板 , 启 动 以 后 查 看/sys/devices/platform/led/ 这个目录是否存在,如果存在的话就如到此目录中,如下所示:

/ # ls /sys/devices/platform/led/
driver           leds             of_node          subsystem
driver_override  modalias         power            uevent

进入到 leds 目录中,此目录中的内容如下所示:

/sys/devices/platform/led/leds # ls
led0
/sys/devices/platform/led/leds #

        从上面可以看出,在 leds 目录下有一个名为“led0”子目录,这个子目录的名字就是我们在设备树中led主节点的字节点。

        我们的设置究竟有没有用,最终是要通过测试才能知道的,首先查看一下系统中有没有“sys/class/leds/red/brightness”这个文件,如果有的话就输入如下命令打开 RED 这个 LED 灯:

/ # echo 1 > /sys/devices/platform/led/leds/led0/brightness  //开led0

关闭 RED 这个 LED 灯的命令如下:

/ # echo 0 > /sys/devices/platform/led/leds/led0/brightness  //关led0

        如果能正常的打开和关闭 LED 灯话就说明我们 Linux 内核自带的 LED 灯驱动工作正常。

        我们一般会使用一个 LED 灯作为系统指示灯,系统运行正常的话这个 LED 指示灯就会一闪一闪的。里我们设置 LED0 作为系统指示灯,在 led 这个设备节点中加入“linux,default-trigger”属性信息即可,属性值为“heartbeat”,修改完以后的 led 节点内容如下:

led {compatible = "gpio-leds";led0 {lable = "red";gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;linux,default-trigger = "heartbeat";default-state = "on";};
};

        重新编译设备树并且使用新的设备树启动 Linux 系统,启动以后 LED0 就会闪烁,作为系统心跳指示灯,表示系统正在运行。


        关于更多嵌入式C语言、FreeRTOS、RT-Thread、Linux应用编程、linux驱动等相关知识,关注公众号【嵌入式Linux知识共享】,后续精彩内容及时收看了解。  

http://www.yayakq.cn/news/639594/

相关文章:

  • 做网站制作需要多少钱乔拓云官网免费
  • 微商可以做网站推广吗安徽六安属于哪个市
  • wix做网站手机乱了文创产品设计是什么意思
  • 做一个网站要注意什么东西做网站用框架
  • 黄村网站建设费用山南网站建设
  • 昆明公司建设网站制作广州建站外贸
  • php管理系统 网站模版网站建设三大部分
  • 360海南地方网站wordpress 企业 自适应
  • 杭州网站设计 sitewordpress适合建什么网站吗
  • 正规网站建设学习网公司哪家好instant wordpress
  • 网站建设文化服务网站备案到公司
  • 网站建设公司管理流程图西安建设网站的公司简介
  • 预付做网站定金如何贵阳网站建设odenet
  • 合肥建站企业设计公司需要什么资质
  • 搞个网站要多少钱国外网站 模板
  • 做好网站建设对企业有什么作用一个网站怎么做
  • 昆山高新区规划建设局网站ppt设计师兼职
  • 网站建设第三方平台公司服务器租用
  • 网站 优点竞彩网站建设
  • 制冷+网站建设+中企动力学做网站需要
  • 陕西汉中网站建设wordpress设定主页
  • 公司自己做网站工信网站投诉系统
  • 网站引导页分为三个板块设计风格所得税汇算清缴在哪个网站做
  • 微信第三方网站怎么做2022搜索引擎
  • 用vs2012做网站案例wordpress主题设置导出
  • 许昌网站seowordpress 插件调用文章
  • 如何做网站截流网站备案要到哪里下载
  • 免费建站免费网站申请千库网ppt模板免费
  • 专业网站托管的公司网站建设演讲稿
  • 手机站点cn淮南建设局网站备案