• Industrial I/O


    工业 IIO configfs 支持

    1. 概述

    Configfs是一个基于文件系统的内核对象管理器。IIO使用了一些可以用configfs轻松配置的对象(例如:设备、触发器)。

    2. 用法

    为了在IIO中使用configfs支持,我们需要在编译时通过CONFIG_IIO_CONFIGFS配置选项选择它。

    然后,挂载configfs文件系统(通常在/config目录下):

    $ mkdir /config
    $ mount -t configfs none /config

    此时,将创建所有默认的IIO组,并可以在/config/iio下访问它们。下一章将描述可用的IIO配置对象。

    3. 软件触发

    “triggers”组是IIO默认的configfs组之一。当挂载configfs时,可以自动访问它,可以在 /config/iio/triggers 下找到它。IIO软件触发器实现支持创建多个触发器类型。一个新的触发器类型通常被实现为一个独立的内核模块,遵循 include/linux/iio/sw_trigger.h 中的接口:

    /*
     * drivers/iio/trigger/iio-trig-sample.c
     * sample kernel module implementing a new trigger type
     */
    #include <linux/iio/sw_trigger.h>
    
    
    static struct iio_sw_trigger *iio_trig_sample_probe(const char *name)
    {
          /*
           * This allocates and registers an IIO trigger plus other
           * trigger type specific initialization.
           */
    }
    
    static int iio_trig_sample_remove(struct iio_sw_trigger *swt)
    {
          /*
           * This undoes the actions in iio_trig_sample_probe
           */
    }
    
    static const struct iio_sw_trigger_ops iio_trig_sample_ops = {
          .probe          = iio_trig_sample_probe,
          .remove         = iio_trig_sample_remove,
    };
    
    static struct iio_sw_trigger_type iio_trig_sample = {
          .name = "trig-sample",
          .owner = THIS_MODULE,
          .ops = &iio_trig_sample_ops,
    };
    
    module_iio_sw_trigger_driver(iio_trig_sample);

    每种触发器类型在/config/iio/triggers下都有自己的目录。加载 iio-trigo-sample 模块将创建' trig-sample '触发器类型目录/config/iio/triggers/trig-sample。

    我们支持以下中断源(触发类型):

    • hrtimer,使用高分辨率定时器作为中断源

    3.1 Hrtimer触发创建和销毁

    加载 iio-trigo-hrtimer 模块将注册 hrtimer 触发器类型,允许用户在 /config/iio/triggers/hrtimer 下创建 hrtimer 触发器。

    例如:

    $ mkdir /config/iio/triggers/hrtimer/instance1
    $ rmdir /config/iio/triggers/hrtimer/instance1

    每个触发器可以有一个或多个特定于该触发器类型的属性。

    3.2 “hrtimer” 触发器类型属性

    " hrtimer "触发器类型没有任何可配置属性从/config 目录。它引入了触发器目录的 sampling_frequency 属性。该属性设置以Hz为单位的轮询频率,具有mHz精度。

    Cirrus Logic EP93xx ADC driver

    该驱动适用于带5通道ADC的低端设备(EP9301, EP9302)和带10通道触摸屏/ADC模块的高端设备(EP9307, EP9312, EP9315)。

    0~4通道的编号方案在EP9301和EP9302数据表中定义。

    EP9307、EP9312、EP9315多3个通道,共8个,但未定义编号。最后三个是随机编号的。

    假设ep93xx_adc是IIO device0,你会在 /sys/bus/iio/devices/iio:device0/ 下找到以下条目:

    sysfs entry

    ball/pin name

    in_voltage0_raw

    YM

    in_voltage1_raw

    SXP

    in_voltage2_raw

    SXM

    in_voltage3_raw

    SYP

    in_voltage4_raw

    SYM

    in_voltage5_raw

    XP

    in_voltage6_raw

    XM

    in_voltage7_raw

    YP

    本文来自博客园,作者:王楼小子,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/15165871.html

  • 相关阅读:
    《七哥说道》第五章:入职惨做苦力,画饼一望无际
    《七哥说道》第四章:理想在远方,现实在流浪
    《七哥说道》第三章:志远淋雨怒辞职,误入保险黄老萍
    《七哥说道》第二章:初出茅庐之拜师学艺
    (十)redis源码解读
    (三十二)线上调优
    (三)栈
    (一)设计模式之代理模式
    Linux whereis、find和locate命令区别以及应用场景
    使用自定义注解和AOP管理shiro权限
  • 原文地址:https://www.cnblogs.com/wanglouxiaozi/p/15165871.html
Copyright © 2020-2023  润新知