TIM Linux driver

来自百问网嵌入式Linux wiki

Article purpose

本文介绍了用于TIM内部外围设备的TIM Linux® 驱动程序[1]:

  • 驱动程序支持哪些TIM功能
  • 如何配置,使用和调试驱动程序
  • 驱动程序的结构是什么,以及在哪里可以找到源代码。

Short description

Linux驱动程序(内核空间)“ TIM” [1] 基于 PWMIIO 框架。 它提供了几种功能:

MFD驱动程序:

  • 处理寄存器,时钟和DMA[2]资源
  • 检测TIM计数器分辨率,例如 16或32位。

PWM驱动器:

  • 检测TIM通道数。
  • 处理PWM输出通道。
  • 处理PWM捕捉通道(输入)。 请注意,PWM捕获依赖于由MFD内核处理的DMA。

IIO 驱动程序:

  • 处理其他内部外围设备的硬件触发源(与PWM同步),例如ADC [3], DAC[4], DFSDM[5].
  • 处理‘正交编码器quadrature encoder interface[6].

Configuration

Kernel configuration

使用Linux Menuconfig工具在内核配置中激活TIM驱动程序[1]Menuconfig or how to configure kernel.

启用以下配置(及其依赖项)

  • CONFIG_MFD_STM32_TIMERS
  • CONFIG_PWM_STM32
  • CONFIG_IIO_STM32_TIMER_TRIGGER
Device Drivers  --->
  -> Multifunction device drivers  --->
     <*> Support for STM32 Timers
  -> Pulse-width modulation (PWM) support  --->
     <*> STMicroelectronics STM32 PWM
  -> Industrial I/O support  --->
     -> Triggers - standalone  --->
        <*> STM32 timer trigger

Device tree

配置TIM Linux内核驱动程序时,请参阅TIM device tree configuration 文章。

How to trace and debug

Linux驱动程序“ TIM”[1] 可以通过REGMAP访问定时器寄存器。

它带有debugfs [7]条目,这些条目允许转储寄存器:


$ ls
40004000.timer  44000000.timer

$ cd 44000000.timer
$ cat registers
000: 00000081
004: 00000000
008: 00000000
00c: 00000000
...

它还带有tracepoints [8]:

$ cd /sys/kernel/debug/tracing
$ cat available_events | grep regmap
...
regmap:regmap_reg_read
regmap:regmap_reg_write