1*452f81edSYanteng Si.. include:: ../disclaimer-zh_CN.rst 2*452f81edSYanteng Si 3*452f81edSYanteng Si:Original: :doc:`../../../iio/iio_configfs` 4*452f81edSYanteng Si:Translator: Yanteng Si <siyanteng@loongson.cn> 5*452f81edSYanteng Si 6*452f81edSYanteng Si.. _cn_iio_configfs: 7*452f81edSYanteng Si 8*452f81edSYanteng Si 9*452f81edSYanteng Si===================== 10*452f81edSYanteng Si工业 IIO configfs支持 11*452f81edSYanteng Si===================== 12*452f81edSYanteng Si 13*452f81edSYanteng Si1. 概述 14*452f81edSYanteng Si======= 15*452f81edSYanteng Si 16*452f81edSYanteng SiConfigfs是一种内核对象的基于文件系统的管理系统,IIO使用一些可以通过 17*452f81edSYanteng Siconfigfs轻松配置的对象(例如:设备,触发器)。 18*452f81edSYanteng Si 19*452f81edSYanteng Si关于configfs是如何运行的,请查阅Documentation/filesystems/configfs.rst 20*452f81edSYanteng Si了解更多信息。 21*452f81edSYanteng Si 22*452f81edSYanteng Si2. 用法 23*452f81edSYanteng Si======= 24*452f81edSYanteng Si为了使configfs支持IIO,我们需要在编译时选中config的CONFIG_IIO_CONFIGFS 25*452f81edSYanteng Si选项。 26*452f81edSYanteng Si 27*452f81edSYanteng Si然后,挂载configfs文件系统(通常在 /config directory目录下):: 28*452f81edSYanteng Si 29*452f81edSYanteng Si $ mkdir/config 30*452f81edSYanteng Si $ mount -t configfs none/config 31*452f81edSYanteng Si 32*452f81edSYanteng Si此时,将创建所有默认IIO组,并可以在/ config / iio下对其进行访问。 下一章 33*452f81edSYanteng Si将介绍可用的IIO配置对象。 34*452f81edSYanteng Si 35*452f81edSYanteng Si3. 软件触发器 36*452f81edSYanteng Si============= 37*452f81edSYanteng Si 38*452f81edSYanteng SiIIO默认configfs组之一是“触发器”组。 挂载configfs后可以自动访问它,并且可 39*452f81edSYanteng Si以在/config/iio/triggers下找到。 40*452f81edSYanteng Si 41*452f81edSYanteng SiIIO软件触发器为创建多种触发器类型提供了支持。 通常在include/linux/iio 42*452f81edSYanteng Si/sw_trigger.h:中的接口下将新的触发器类型实现为单独的内核模块: 43*452f81edSYanteng Si:: 44*452f81edSYanteng Si 45*452f81edSYanteng Si /* 46*452f81edSYanteng Si * drivers/iio/trigger/iio-trig-sample.c 47*452f81edSYanteng Si * 一种新触发器类型的内核模块实例 48*452f81edSYanteng Si */ 49*452f81edSYanteng Si #include <linux/iio/sw_trigger.h> 50*452f81edSYanteng Si 51*452f81edSYanteng Si 52*452f81edSYanteng Si static struct iio_sw_trigger *iio_trig_sample_probe(const char *name) 53*452f81edSYanteng Si { 54*452f81edSYanteng Si /* 55*452f81edSYanteng Si * 这将分配并注册一个IIO触发器以及其他触发器类型特性的初始化。 56*452f81edSYanteng Si */ 57*452f81edSYanteng Si } 58*452f81edSYanteng Si 59*452f81edSYanteng Si static int iio_trig_sample_remove(struct iio_sw_trigger *swt) 60*452f81edSYanteng Si { 61*452f81edSYanteng Si /* 62*452f81edSYanteng Si * 这会废弃iio_trig_sample_probe中的操作 63*452f81edSYanteng Si */ 64*452f81edSYanteng Si } 65*452f81edSYanteng Si 66*452f81edSYanteng Si static const struct iio_sw_trigger_ops iio_trig_sample_ops = { 67*452f81edSYanteng Si .probe = iio_trig_sample_probe, 68*452f81edSYanteng Si .remove = iio_trig_sample_remove, 69*452f81edSYanteng Si }; 70*452f81edSYanteng Si 71*452f81edSYanteng Si static struct iio_sw_trigger_type iio_trig_sample = { 72*452f81edSYanteng Si .name = "trig-sample", 73*452f81edSYanteng Si .owner = THIS_MODULE, 74*452f81edSYanteng Si .ops = &iio_trig_sample_ops, 75*452f81edSYanteng Si }; 76*452f81edSYanteng Si 77*452f81edSYanteng Simodule_iio_sw_trigger_driver(iio_trig_sample); 78*452f81edSYanteng Si 79*452f81edSYanteng Si每种触发器类型在/config/iio/triggers下都有其自己的目录。 加载iio-trig-sample 80*452f81edSYanteng Si模块将创建“ trig-sample”触发器类型目录/config/iio/triggers/trig-sample. 81*452f81edSYanteng Si 82*452f81edSYanteng Si我们支持以下中断源(触发器类型) 83*452f81edSYanteng Si 84*452f81edSYanteng Si * hrtimer,使用高分辨率定时器作为中断源 85*452f81edSYanteng Si 86*452f81edSYanteng Si3.1 Hrtimer触发器创建与销毁 87*452f81edSYanteng Si--------------------------- 88*452f81edSYanteng Si 89*452f81edSYanteng Si加载iio-trig-hrtimer模块将注册hrtimer触发器类型,从而允许用户在 90*452f81edSYanteng Si/config/iio/triggers/hrtimer下创建hrtimer触发器。 91*452f81edSYanteng Si 92*452f81edSYanteng Si例如:: 93*452f81edSYanteng Si 94*452f81edSYanteng Si $ mkdir /config/iio/triggers/hrtimer/instance1 95*452f81edSYanteng Si $ rmdir /config/iio/triggers/hrtimer/instance1 96*452f81edSYanteng Si 97*452f81edSYanteng Si每个触发器可以具有一个或多个独特的触发器类型的属性。 98*452f81edSYanteng Si 99*452f81edSYanteng Si3.2 "hrtimer" 触发器类型属性 100*452f81edSYanteng Si---------------------------- 101*452f81edSYanteng Si 102*452f81edSYanteng Si"hrtimer”触发器类型没有来自/config dir的任何可配置属性。 103