【问题标题】:Ring Oscillator Device Driver环形振荡器设备驱动程序
【发布时间】:2017-03-28 01:49:46
【问题描述】:

我被要求在 Linux 中调出环形振荡器。首先,我尝试直接读取控制和状态寄存器(有趣的位),我可以使用 devmem 访问它们(使用寄存器的物理地址)。有两个环形振荡器模块 0 和 1。每个模块由 4 个环形振荡器组成。模块 0 输出为随机数生成器提供数据。模块 1 用于过程监控——这方面的信息不多。每个模块都有单独的一组寄存器用于控制、状态等。每个环形振荡器都有一个频率计数器,当适当地设置环形振荡器的控制寄存器时,我可以从频率计数器的计数寄存器中读取频率计数。

现在我必须为 Ring Oscillator 编写一个设备驱动程序来启动。我不太清楚的是在 dts 文件中我应该尝试将环形振荡器表示为时钟源还是将其视为平台设备。无法弄清楚有关 Linux 如何处理环形振荡器的大量信息。我是否应该查找环形振荡器的设备地址并尝试将其添加为 dts 文件中的任何其他平台外围设备条目。在那里,我可以将它注册为驱动程序文件中的平台设备,并通过探测函数控制它的寄存器。或者我应该把它当作时钟源吗?但是,从可用的文档中,我看不到它被用作任何其他外围设备的时钟源。任何人都可以对此有所了解吗?任何帮助将不胜感激。

谢谢。

问候

维韦克

【问题讨论】:

    标签: linux driver device dts


    【解决方案1】:

    我已将 Ring Oscillator 实现为平台驱动程序。 dts/dtsi 变化如下:

    dtsi:

    ring_osc: ring-oscillator@F00xxxxx {
        compatible = "abc,abc-ring";
        reg = <0xF00xxxxx 0x14>;
        status = "disabled";
    };
    

    dts:

    &ring_osc {
        status = "okay";
    };
    

    我编写的驱动程序只是使用它的配置寄存器来配置振荡器。此外,还提供了一个 sysfs 接口,用于设置附加到它的频率计数器的周期值,并从频率计数器中读回频率计数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      相关资源
      最近更新 更多