FreeBSD下如何实现JAVA串口AT指令通信?急!

来源:百度知道 编辑:UC知道 时间:2024/05/27 01:36:44
用Sun的commAPI,可以找到串口,但打开串口时出错

Exception in thread "main" java.lang.RuntimeException:
Error opening "/dev/cuaa0"
lockf(): Invalid argument
at com.sun.comm.LinuxDriver.getCommPort(LinuxDriver.java:66)
at javax.comm.CommPortIdentifier.open(CommPortIdentifier.java:369)
at nulltest.<init>(nulltest.java:133)
at nulltest.main(nulltest.java:76)

好像是调用lockf()函数时出错?

安装了java-commapi-freebsd之后,仍然是在打开串口时报错

FreebsdSerial: UnsatisfiedLinkError = /usr/local/java/jre/lib/i386/libSerial.so: /usr/local/java/jre/lib/i386/libSerial.so: ELF file OS ABI invalid
java.lang.UnsatisfiedLinkError: /usr/local/java/jre/lib/i386/libSerial.so: /usr/local/java/jre/lib/i386/libSerial.so: ELF file OS ABI invalid
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586)
at java.lang.ClassLoader.loadLibrary(ClassLoader.j

引言

FreeBSD 是从 BSD 衍生而来的高级操作系统,BSD 则是加利福尼亚大学伯克力分校开发的 UNIX® 版本。它提供了很高的性能,与其他系统的兼容性更强,并且需要的系统管理更少。FreeBSD 包含了内核级的状态式 (Stateful) IP 防火墙以及许多其他服务,如 IP 代理网关、访问控制列表、强制访问控制、基于 Jail 的虚拟主机以及加密保护的存储。

在开发内核代码或运行开发内核时,偶尔会发生内核崩溃。重要的是诊断核心转储以便提取有用的信息。如果尝试使用同一台开发计算机来调试此核心转储,则可能影响系统的性能。每次只能调试一个核心转储。要想高效地调试内核的核心转储,最好是在开发计算机和目标计算机之间建立远程调试会话,然后使用串行通信远程调试内核。

kgdb 实用程序是基于 gdb 的调试器,允许调试内核核心文件。FreeBSD 5.3 及更高版本提供了 kgdb 实用程序。如果您有早期版本的 FreeBSD,那么仍然可以使用 gdb -k 来读取核心转储文件。kgdb 可帮助在内核代码中放置断点,这样您就可以逐步通过断点来观察变量。

本文介绍如何使用串行通信端口来设置调试环境、如何编译经过修改的内核代码,以及如何开始内核调试。还介绍了一些故障诊断提示。

设置调试环境

要设置进行 FreeBSD 内核调试的远程调试环境,您需要两台计算机:一台目标计算机和一台开发计算机。目标计算机上运行需要调试的新内核映像。开发计算机用于调试目标计算机上运行的内核。为了获得更好的性能,您可以使用配置较好的计算机作为开发计算机。

零调制解调器电缆 (Null modem cable)

零调制解调器 (Null modem) 是一种使用 RS-232 串行电缆连接两台计算机的通信方式。原始 RS-232 标准只定义了使用调制解调器连接计算机的方式。使用零调制解调器连接时,发送线和接收线要交叉连接。根据使用目的而定,有时需要交叉连接一个或多个握手线。有多种连接方式可供选择,因为标准中并未涵盖零调制解调器连接。

如果将零调制解调器电缆连接到串行端口,与使用调制