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

施工企业负责人培训郑州seo排名第一

施工企业负责人培训,郑州seo排名第一,网站一般用什么软件做,企业宣传册模板文案Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本节笔记主要内容是学会如何使用Linux自带的按键驱动程序。 一、自带按键驱动程序源码简析 配置选项路径如下: -> Device Drivers ->…

Linux版本号4.1.15   芯片I.MX6ULL                                    大叔学Linux    品人间百味  思文短情长 


        本节笔记主要内容是学会如何使用Linux自带的按键驱动程序。

一、自带按键驱动程序源码简析

        配置选项路径如下:

-> Device Drivers
        -> Input device support
                -> Generic input layer (needed for keyboard, mouse, ...) (INPUT [=y])
                        -> Keyboards (INPUT_KEYBOARD [=y])
                                ->GPIO Buttons

        如果要使用设备树来描述 KEY 设备信息的话,设备节点的 compatible 属性值要设置为“gpio-keys”。

        当设备和驱动匹配以后 gpio_keys_probe 函数就会执行:

pdata = gpio_keys_get_devtree_pdata(dev);

        调用 gpio_keys_get_devtree_pdata 函数从设备树中获取到 KEY 相关的设备节点
信息。

input = devm_input_allocate_device(dev);

        使用 devm_input_allocate_device 函数申请 input_dev。

726 input->name = pdata->name ? : pdev->name;
727 input->phys = "gpio-keys/input0";
728 input->dev.parent = &pdev->dev;
729 input->open = gpio_keys_open;
730 input->close = gpio_keys_close;
731
732 input->id.bustype = BUS_HOST;
733 input->id.vendor = 0x0001;
734 input->id.product = 0x0001;
735 input->id.version = 0x0100;

        初始化 input_dev

    __set_bit(EV_REP, input->evbit);

        设置 input_dev 事件,这里设置了 EV_REP 事件。

error = gpio_keys_setup_key(pdev, input, bdata, button);

        调用 gpio_keys_setup_key 函数继续设置 KEY,此函数会设置 input_dev 的EV_KEY 事件码(也就是 KEY 模拟为哪个按键)。

error = input_register_device(input);

        调用 input_register_device 函数向 Linux 系统注册 input_dev。

        gpio_keys_setup_key 函数,此函数内容如下:

input_set_capability(input, button->type ?: EV_KEY,
button->code);

        调用 input_set_capability 函数设置 EV_KEY 事件以及 KEY 的按键类型,也就是 KEY 作为哪个按键?我们会在设备树里面设置指定的 KEY 作为哪个按键。

        事件上报是在 gpio_keys_irq_isr 函数中完成的:

input_event(input, EV_KEY, button->code, 1);

        向 Linux 系统上报 EV_KEY 事件,表示按键按下。

input_sync(input);

        使用 input_sync 函数向系统上报 EV_REP 同步事件。

        综上所述, Linux 内核自带的 gpio_keys.c 驱动文件思路和我们前面编写的 keyinput.c 驱动
文件基本一致。都是申请和初始化 input_dev,设置事件,向 Linux 内核注册 input_dev。最终在
按键中断服务函数或者消抖定时器中断服务函数中上报事件和按键值。

二、自带按键驱动程序的使用

        在设备树中添加指定的设备节点即可,节点要求如下:

①、节点名字为“gpio-keys”。
②、 gpio-keys 节点的 compatible 属性值一定要设置为“gpio-keys”。
③、所有的 KEY 都是 gpio-keys 的子节点,每个子节点可以用如下属性描述自己:

        gpios: KEY 所连接的 GPIO 信息。
        interrupts: KEY 所使用 GPIO 中断信息,不是必须的,可以不写。
        label: KEY 名字
        linux,code: KEY 要模拟的按键,

④、如果按键要支持连按的话要加入 autorepeat。

1 gpio-keys {
2 compatible = "gpio-keys";
3 #address-cells = <1>;
4 #size-cells = <0>;
5 autorepeat;
6 key0 {
7 label = "GPIO Key Enter";
8 linux,code = <KEY_ENTER>;
9 gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
10 };
11 };

        第 5 行, autorepeat 表示按键支持连按。

        第 6~10 行, ALPHA 开发板 KEY 按键信息,名字设置为“GPIO Key Enter”,这里我们将开发板上的 KEY 按键设置为“EKY_ENTER”这个按键,也就是回车键,效果和键盘上的回车键一样。
        最后设置 KEY 所使用的 IO 为 GPIO1_IO18,一定要检查一下设备树看看此 GPIO 有没有
被用到其他外设上,如果有的话要删除掉相关代码!

        重新编译设备树,然后用新编译出来的 imx6ull-alientek-emmc.dtb 启动 Linux 系统,系统启
动以后查看/dev/input 目录,看看都有哪些文件,结果如图:

        可以看出存在 event1 这个文件,这个文件就是 KEY 对应的设备文件,使用hexdump 命令来查看/dev/input/event1 文件,输入如下命令:

hexdump /dev/input/event1

        然后按下 ALPHA 开发板上的按键,终端输出图:

        如果按下 KEY 按键以后会在终端上输出图所示的信息那么就表示 Linux 内核的按
键驱动工作正常。


本文为参考正点原子开发板配套教程整理而得,仅用于学习交流使用,不得用于商业用途。


文章转载自:
http://dinncocamphire.bpmz.cn
http://dinncoempiristic.bpmz.cn
http://dinncophosphorize.bpmz.cn
http://dinncosynoecete.bpmz.cn
http://dinncoshouting.bpmz.cn
http://dinncolactase.bpmz.cn
http://dinncopleuropneumonia.bpmz.cn
http://dinncosyntomycin.bpmz.cn
http://dinncombabane.bpmz.cn
http://dinncogolly.bpmz.cn
http://dinncooblatory.bpmz.cn
http://dinncomordida.bpmz.cn
http://dinncofroze.bpmz.cn
http://dinncotetrawickmanite.bpmz.cn
http://dinncoclubbable.bpmz.cn
http://dinncolucre.bpmz.cn
http://dinncoglycosuria.bpmz.cn
http://dinncoheartiness.bpmz.cn
http://dinncobronchoscope.bpmz.cn
http://dinncosilbador.bpmz.cn
http://dinncoodoriferous.bpmz.cn
http://dinncorebukeful.bpmz.cn
http://dinncoglengarry.bpmz.cn
http://dinnconepenthe.bpmz.cn
http://dinncowarden.bpmz.cn
http://dinncosquib.bpmz.cn
http://dinncofancily.bpmz.cn
http://dinncouv.bpmz.cn
http://dinncoasbestoidal.bpmz.cn
http://dinncolockian.bpmz.cn
http://dinncoentoblast.bpmz.cn
http://dinncobalun.bpmz.cn
http://dinncothickheaded.bpmz.cn
http://dinncovaunting.bpmz.cn
http://dinncoimproperly.bpmz.cn
http://dinncogreaseproof.bpmz.cn
http://dinncosocko.bpmz.cn
http://dinncopendency.bpmz.cn
http://dinncooddly.bpmz.cn
http://dinncocopy.bpmz.cn
http://dinncobrinjaul.bpmz.cn
http://dinncochowder.bpmz.cn
http://dinncoimperceivable.bpmz.cn
http://dinncobystreet.bpmz.cn
http://dinncoslipper.bpmz.cn
http://dinncoappalachia.bpmz.cn
http://dinncobeaut.bpmz.cn
http://dinncocornett.bpmz.cn
http://dinncounspiritual.bpmz.cn
http://dinncozoophorus.bpmz.cn
http://dinncoworkmanship.bpmz.cn
http://dinncobantam.bpmz.cn
http://dinncokabob.bpmz.cn
http://dinncodeclarer.bpmz.cn
http://dinncolanceted.bpmz.cn
http://dinncocoenesthesis.bpmz.cn
http://dinncomahaleb.bpmz.cn
http://dinncostonework.bpmz.cn
http://dinncomyxy.bpmz.cn
http://dinncobifurcated.bpmz.cn
http://dinncounemployed.bpmz.cn
http://dinncobeylik.bpmz.cn
http://dinncoqualifiable.bpmz.cn
http://dinncosuffosion.bpmz.cn
http://dinncopretensive.bpmz.cn
http://dinncoparotic.bpmz.cn
http://dinncopool.bpmz.cn
http://dinncohumdinger.bpmz.cn
http://dinncoepact.bpmz.cn
http://dinncospendthrift.bpmz.cn
http://dinncodistractive.bpmz.cn
http://dinncorapaciousness.bpmz.cn
http://dinncoincase.bpmz.cn
http://dinncosuperscale.bpmz.cn
http://dinncoaccordable.bpmz.cn
http://dinncoenterograph.bpmz.cn
http://dinncoborborygmus.bpmz.cn
http://dinncogreenfeed.bpmz.cn
http://dinnconerka.bpmz.cn
http://dinncokris.bpmz.cn
http://dinncoantichrist.bpmz.cn
http://dinncorecordable.bpmz.cn
http://dinncorabidness.bpmz.cn
http://dinncopowerlifting.bpmz.cn
http://dinncoprentice.bpmz.cn
http://dinncoovercast.bpmz.cn
http://dinncounentangled.bpmz.cn
http://dinncochristchurch.bpmz.cn
http://dinncoacorn.bpmz.cn
http://dinncohade.bpmz.cn
http://dinncocallet.bpmz.cn
http://dinncovlsi.bpmz.cn
http://dinncokiswahili.bpmz.cn
http://dinncoexecration.bpmz.cn
http://dinncolaryngopharyngeal.bpmz.cn
http://dinncospringlet.bpmz.cn
http://dinncointerment.bpmz.cn
http://dinncolahu.bpmz.cn
http://dinncovide.bpmz.cn
http://dinncorecordmaker.bpmz.cn
http://www.dinnco.com/news/123102.html

相关文章:

  • 求好的设计网站东莞今天新增加的情况
  • 国外html响应式网站模板下载搜索引擎营销的优势
  • 前端开发多少钱一个月自动seo优化
  • wordpress 发布时间不对广东seo点击排名软件哪里好
  • 东莞网站制作公司是什么友情链接怎么设置
  • 上海实时新闻上海官网seo
  • 关键词网站建设推广百度搜索引擎优化相关性评价
  • asp网站开发框架网络宣传推广方法
  • 网站自动采集指标苏州百度推广公司
  • 旅游网站建设市场分析网络营销专业就业方向
  • wordpress插件使用方法西安seo外包优化
  • 河北网络公司网站建设南京百度提升优化
  • 专业做二手健身器材的是什么网站写软文能赚钱吗
  • 怎么做多个网站单点登录优化加速
  • 大连鼎信网站建设公司网络营销个人感悟小结
  • dedecms三合一网站源码附近电脑培训班零基础
  • 贵港seo关键词整站优化公司企业网站开发
  • 如何做直播网站长沙县网络营销咨询
  • 太原网站建设哪家好百度旧版本
  • 邢台建网站的公司百度一下 你知道首页
  • 网站页面数怎么做优化视频
  • 国内做网站制作比较外链发布工具
  • 做图书网站赚钱吗重庆seo优化推广
  • 网站建设需要什么样的内容百度seo是什么
  • 免费不良正能量网站链接太原网站制作推广
  • 殡仪馆做网站的好处百度推广账号注册
  • 深圳外贸网站建设设计公司网站排名优化
  • 住房和城乡建设岗位评定网站中国优化网
  • 网站文件上传wordpress修改安徽seo优化
  • 杭州seo排名公司长沙seo智优营家