如何读取BeagleBone Black上的外部计时器计数器?

时间:2015-11-06 17:39:26

标签: linux beagleboneblack

我需要使用BBB计算50KHz二进制信号的转换。我认为使用连接到引脚TIMER4的外部信号触发的P8.07将是最简单的方法。

因此,我发出以下命令来加载正确的斗篷并将引脚设置为计时器:

./config-pin overlay cape-universaln
./config-pin P8.07 timer

一切似乎都有效,dmesg中没有任何内容。

我的问题是:如何阅读TIMER4的值?我看着SysFs,没有发现任何有趣的东西。 /dev中也没有任何内容。如何检索我刚刚设置的计时器计数器的值?我也对C / C ++解决方案持开放态度,但我想避免进行内核空间编程。

我使用最新的Ubuntu Linux for BeagleBone,内核4.1.10-ti-r21。

1 个答案:

答案 0 :(得分:1)

通过一点点Google搜索,我在这里看到了AM335x DMTimer子系统的pps驱动程序:https://github.com/ddrown/pps-gmtimer

看起来它没有合并到上游,README提供了将其构建到3.8内核的说明 - 你可以恢复到3.8,或者你可以适应4.1,在这种情况下你可能需要调整设备树覆盖以及4.1中Item rItem = null; var query = Session.QueryOver<Item>(() => rItem); ... query = query.Select(Projections.Sum( Projections.SqlFunction(new VarArgsSQLFunction("(", "*", ")"), NHibernateUtil.Double, Projections.Property(() => rItem.Ammount), Projections.Property(() => rItem.Wight)))); 编译器的更新版本。

你也可以为PRU写一个脉冲计数器固件(只有50KHz的输入,它根本不需要非常优化以捕获每个脉冲)。您可以经常向ARM发送信号,并在用户空间程序中捕获它。

另一种选择是使用dtc直接从用户空间访问DMTimer寄存器以映射mmap文件(此方法的示例适用于GPIO here),但是&#39; sa漂亮&#34; hacky&#34;这样做的方式,它在GNU / Linux世界中通常不赞成从用户空间而不是从内核空间那样做。