经过数个版本的迭代,终于拿到一份可行的驱动程序。FT2232官方给的那份TI的案例即完整又残缺,命令文档AN-108也不够清晰,绕了不少路。
既然承接自JAVA UI,自然需要java来调用,传输数据和接受返回值。我选用JNI来做接口,初始化有点麻烦:
1、JNI 接口
JNI接口首先要准备一个java文件,我喜欢把loading DLL和native 函数的声明放在一起做到大概这个样子:c
package copy;
public class Jtag_FTDI {
static {
// test.textArea.append(System.getProperty("user.dir"));
System.out.println(System.getProperty("user.dir"));
System.load("C:\\Users\\zhihuideng\\source\\repos\\USB2JTAG\\x64\\Debug\\USB2JTAG.dll");
}
public native String hello();
public native static String chiphello(String freq);
public native static String chipclose();
public native static String reset2idle(String length, String TDI);
public native static String idle2ir2idle(String length, String TDI);
public native static String dr2ir(String length, String TDI);
public native static String idle2dr2idle(String length, String TDI);
public native static String dr2dr(String length, String TDI);
public native static String idle2reset(String length, String TDI);
}
然后利用之前我文章中讲到的方法
这样就能拿到一份.h的c语言头文件 ,大概长这个样子:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class test_Jtag_FTDI */
#ifndef _Included_test_Jtag_FTDI
#define _Included_test_Jtag_FTDI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: test_Jtag_FTDI
* Method: hello
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_test_Jtag_1FTDI_hello
(JNIEnv *, jobject, jstring);
JNIEXPORT jstring JNICALL Java_test_Jtag_1FTDI_chiphello
(JNIEnv*, jobject, jstring);
JNIEXPORT jstring JNICALL Java_test_Jt