我需要使用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。
答案 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世界中通常不赞成从用户空间而不是从内核空间那样做。