1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 银河麒麟龙芯mips64架构集成RXTX串口通讯兼容问题

银河麒麟龙芯mips64架构集成RXTX串口通讯兼容问题

时间:2023-02-27 09:33:23

相关推荐

银河麒麟龙芯mips64架构集成RXTX串口通讯兼容问题

前言

应用涉及到串口通讯,用到的是RXTX。一直部署在win环境,项目要求用国产服务器、银河麒麟操作系统、龙芯处理器、国产中间件、国产数据库。因此出现rxtx在以上环境中兼容问题,下面记录下我遇到的问题。如有其他问题可邮箱联系mokeily99@

问题

1:龙芯基于open jdk,不同于sun jdk。对rxtx是否有兼容问题?

安装中测试中出现openjdk崩溃的情况,只要一发送指令jdk就崩溃,所以开始人为是openjdk不兼容rxtx,尝试很多办法后发现openjdk是可以兼容的,大家不用考虑这个问题

2:rxtx是否兼容mips64架构?

网上找了很多版本,win、arm、i386、mac、x86_64但是没看到有mips64的,也尝试过用x86_64的但是还是报错JDK崩溃,报如下错误

## A fatal error has been detected by the Java Runtime Environment:## SIGBUS (0xa) at pc=0x000000ffe40078b4, pid=7969, tid=0x000000ffdf6ff1d0## JRE version: OpenJDK Runtime Environment (8.0_312-b07) (build 1.8.0_312-b07) (Loongson 8.1.10-loongson3a-Fedora)# Java VM: OpenJDK 64-Bit Server VM (25.312-b07 mixed mode linux-mips64el compressed oops)# Problematic frame:# C [librxtxSerial.so+0x78b4] Java_gnu_io_RXTXPort_nativeDrain+0x144## Core dump written. Default location: /root/web-app/apache-tomcat-8.5.69/bin/core or core.7969## An error report file with more information is saved as:# /root/web-app/apache-tomcat-8.5.69/bin/hs_err_pid7969.logCould not load hsdis-mips64el.so; library not loadable; PrintAssembly is disabled## If you would like to submit a bug report, please visit:# /bugreport/crash.jsp# The crash happened outside the Java Virtual Machine in native code.# See problematic frame for where to report the bug.#Experimental: JNI_OnLoad called.

当时用的是RXTX-2.1-7版本,openjdk8。后来发现是版本问题,下面记录解决办法

解决办法

切记要从官网下载可编译包,别从其他地方下载编译完的,编译完的基本都没有mips64架构的,

官网地址:Download - Rxtx

我下载的是rxtx-2.2pre2.zip,别下载2.1.7版本,2.1.7版本不兼容我这套环境

千万要下载zip包,别下载bins.zip包,bins.zip是可直接拿去用的,但是没有mips64架构的,咱们下载的这个可在服务器环境进行编译,它会根据环境生成相应架构的库文件

下载后上传至服务器,本人上传到/usr/local/src目录,解压rxtx-2.2pre2.zip进入目录

cd /usr/local/srcunzip rxtx-2.2pre2.zip​cd /usr/local/src/rxtx-2.1-7r2

编译前要进行一些处理,不然会报错

1:添加系统版本信息

首选获取系统版本信息

uname -r

本人操作系统版本是4.19.90-21.3.ky10.mips64el

在/usr/include/linux/version.h中添加版本信息,#define UTS_RELEASE "4.19.90-21.3.ky10.mips64el"

vi /usr/include/linux/version.h

添加完如下图

2:删除<sys/io.h>

修改/usr/local/src/rxtx-2.2pre2/./src/RawImp.c文件,删除<sys/io.h>。不然会报<sys/io.h>错误

修改完后可进行编译

cd /usr/local/src/rxtx-2.1-7r2./configuremakemake install

make过程中会出现warn,不用管,只要没有error就可以。

编译过程中rxtx会自动生成一个匹配当前架构的文件夹,我的是mips64el-unknown-linux-gnu,里面有rxtx用到的库文件和jar,同时会自动将librxtxSerial.so、librxtxParallel.so等库文件和RXTXcomm.jar复制到openjdk环境遍历的目录中,so库文件在jdk的jre/lib/mips64el中,jar在jdk的jre/lib/ext中。

完成以上操作后rxtx即可兼容当前环境。启动应用发送指令后就不会出现jdk崩溃问题,总结来说,就是因为rxtx版本和库文件不兼容导致的。如有疑问mokeily99@

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。