Java硬件中断处理

我想知道在引发硬件中断时是否可以自动调用Java方法。

可能有另一种选择。

我正在做类似的事情:在一个应用程序中,我监视4只鼠标的点击。 这些点击产生了中断,但我很高兴不直接从Java处理它们。

在Linux下,事实certificate有些设备文件( /dev/input/mouse# )在鼠标出现问题时会发出一堆字符。 我有一个Thread,每个文件都有一个FileReader阻塞读取。 一旦角色到达,相关的线程就会解锁,我可以做任何我喜欢的处理。

所以我的想法是:如果可能的话,找到一种方法来获取设备驱动程序,使文件/设备forms的数据可访问,然后你可以使用Java库中的IO调用从Java访问它,没有奇怪的位 – 两个代码和C之间需要的代码。

原则上是的,但它需要一些C代码和JNI将它与Java联系起来。 如果您非常幸运,也许已经有人已经为您感兴趣的平台构建了一个合适的库。

底线:如果可以在C中完成,您可以将其挂钩到Java。

如果您想直接响应来自Java的中断,那么VM必须在内核空间中运行(或在某些具有用户空间驱动程序的系统上运行,在驱动程序上下文中)。 JamaicaVM在某些RTOS上运行,例如Thread-X或VxWorks作为DKM。 RTSJ的下一个版本将支持用Java编写中断服务例程。

即使在用户空间中,RTSJ也可用于运行二级中断处理程序。 这需要一个小型设备驱动程序,它可以向VM发送POSIX信号,或者提供一个字符设备接口,其中VM中的一个线程在读取设备时阻塞。 在第一种情况下,AsyncEventHandler可以与POSIX信号相关联。 在第二种情况下,每次从设备读取一个字节时,阻止读取设备的踏板都可以触发AsyncEvent。 然后将释放附加到AsyncEvebt的任何AsyncEventHandler。

如果您想在Linux下试用,可以下载JamaicaVM个人版:“http://www.aicas.com/jamaica-pe.html”。 JamaicaVM有一个实时垃圾收集器,可以静态编译代码以确保实时性能。 这是与传统JVM不同的部署模型。

这是一篇处理相同主题的论文。 你可能会看看SWT ,我认为它们也在处理硬件中断,尽管它们可能依赖于操作系统API。

它是嵌入式实时java的标准。 访问www.ajile.com或systrmonx.com并购买评估板。

嵌入式java 不是 pc上的标准。 你可以在PC硬件上获得实时java,但不能在嵌入式位上获得。

看看Swig 。 Java实现具有允许您从C / C ++调用Java的Director 。

我已经使用这种技术处理调用C#的中断,它运行得很好。 调用Java应该没什么不同。