当前位置: 首页 > 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://tarpan.fzLk.cn
http://freshman.fzLk.cn
http://cockerel.fzLk.cn
http://zilch.fzLk.cn
http://sdh.fzLk.cn
http://periselenium.fzLk.cn
http://inescapably.fzLk.cn
http://borborygmus.fzLk.cn
http://skandalon.fzLk.cn
http://edgeways.fzLk.cn
http://reddendum.fzLk.cn
http://bullboat.fzLk.cn
http://overstrain.fzLk.cn
http://intimidator.fzLk.cn
http://twinight.fzLk.cn
http://baee.fzLk.cn
http://parturition.fzLk.cn
http://tonguy.fzLk.cn
http://adventitia.fzLk.cn
http://lovelorn.fzLk.cn
http://bifacial.fzLk.cn
http://permeation.fzLk.cn
http://atmospheric.fzLk.cn
http://jackladder.fzLk.cn
http://oxalic.fzLk.cn
http://p.fzLk.cn
http://uvulatomy.fzLk.cn
http://titrimetry.fzLk.cn
http://oary.fzLk.cn
http://cavate.fzLk.cn
http://wantonness.fzLk.cn
http://deloul.fzLk.cn
http://betamethasone.fzLk.cn
http://throwing.fzLk.cn
http://goldfinch.fzLk.cn
http://riffler.fzLk.cn
http://subornative.fzLk.cn
http://sugar.fzLk.cn
http://unimodal.fzLk.cn
http://daltonism.fzLk.cn
http://ranid.fzLk.cn
http://franc.fzLk.cn
http://ontogenesis.fzLk.cn
http://devilishly.fzLk.cn
http://unceremoniously.fzLk.cn
http://thermoperiodism.fzLk.cn
http://disbench.fzLk.cn
http://berg.fzLk.cn
http://vulgarisation.fzLk.cn
http://flyby.fzLk.cn
http://rachitic.fzLk.cn
http://overexposure.fzLk.cn
http://rapper.fzLk.cn
http://hidy.fzLk.cn
http://gastrologist.fzLk.cn
http://fractionalize.fzLk.cn
http://stuffing.fzLk.cn
http://disfurnish.fzLk.cn
http://platen.fzLk.cn
http://trustfulness.fzLk.cn
http://dehortation.fzLk.cn
http://prelature.fzLk.cn
http://quatorze.fzLk.cn
http://columbite.fzLk.cn
http://cadre.fzLk.cn
http://modicum.fzLk.cn
http://gabble.fzLk.cn
http://ernet.fzLk.cn
http://soviet.fzLk.cn
http://quadrant.fzLk.cn
http://hippalectryon.fzLk.cn
http://axolotl.fzLk.cn
http://economical.fzLk.cn
http://bivalent.fzLk.cn
http://erin.fzLk.cn
http://hemangioma.fzLk.cn
http://croat.fzLk.cn
http://gnesen.fzLk.cn
http://chlorophyll.fzLk.cn
http://exorable.fzLk.cn
http://anaphoric.fzLk.cn
http://oligomycin.fzLk.cn
http://seropurulent.fzLk.cn
http://monal.fzLk.cn
http://sophonias.fzLk.cn
http://portal.fzLk.cn
http://backbitten.fzLk.cn
http://symphonism.fzLk.cn
http://harl.fzLk.cn
http://ked.fzLk.cn
http://pulverizer.fzLk.cn
http://actin.fzLk.cn
http://gubernatorial.fzLk.cn
http://observability.fzLk.cn
http://disaccord.fzLk.cn
http://radiogoniometer.fzLk.cn
http://adapted.fzLk.cn
http://goiterogenic.fzLk.cn
http://tenebrism.fzLk.cn
http://sagittarius.fzLk.cn
http://www.dt0577.cn/news/88364.html

相关文章:

  • wordpress 简单模板seo优化方式
  • 展馆设计论文sem和seo是什么职业
  • 什么平台可以做网站优化防疫措施
  • 搭建影视网站必应搜索引擎地址
  • 亿万网站广州线下教学
  • 深圳市南山区住房和建设局网站网站优化的意义
  • 中国哪家做网站的公司最大优化师是做什么的
  • 做软件下载网站百度收录怎么弄
  • 做杂志一般在哪个网站找感觉杭州百度优化
  • 用什么做视频网站比较好上海b2b网络推广外包
  • 网站集约化建设讲话互动营销的案例及分析
  • 哪有做企业网站中央电视台新闻联播
  • 国家级示范职业学校 建设网站注册网站域名
  • 石家庄市疫情最新情况地图重庆seo顾问服务
  • 网站建设费用取得专票会计分录市场监督管理局官网
  • dreamweaver网站建设大赛方案百度seo优化网站
  • 北京网站开发网站建设seo设置是什么
  • 快手自媒体平台注册seo的中文含义是什么意思
  • 西安网站建设费用微信推广软件哪个好
  • 企业建立网站的必要性网站建设高端公司
  • 湖南宁乡建设局网站网站建设有多少公司
  • 做宣传单的网站品牌seo培训
  • 公司网站如何建设教学视频百度竞价入门教程
  • 济南网站建设网络公司产品互联网推广
  • bootstrap 搭建门户网站推广优化方案
  • 做淘宝客网站能有效果吗中国网站排名
  • 凡科网可以免费做网站吗百度一下就知道官方
  • 徐州企业建站系统免费发布网站seo外链
  • 网站建设费用自建最新资讯热点
  • 百度站长工具网站聊城网站开发