Android avrdude的包装器库

Android avrdude的包装器库,android,arduino,ftdi,avrdude,Android,Arduino,Ftdi,Avrdude,问题是: 通过Android应用程序,能够通过编程验证arduino flash内容,以确保其未被(恶意)更改 我可以在android的adb shell中使用下面的命令使用avrdude来实现这一点 avrdude -C/data/data/com.myapp.avrdude/local/etc/avrdude.conf -v -patmega2560 -cstk500v2 -P/dev/ttyACM0 -b115200 -D -Uflash:v:firmware.hex:i 这在ardui

问题是: 通过Android应用程序,能够通过编程验证arduino flash内容,以确保其未被(恶意)更改

我可以在android的adb shell中使用下面的命令使用avrdude来实现这一点

avrdude -C/data/data/com.myapp.avrdude/local/etc/avrdude.conf -v -patmega2560 -cstk500v2 -P/dev/ttyACM0 -b115200 -D -Uflash:v:firmware.hex:i
这在arduino上运行得很好,但当我想对使用FTDI芯片的板进行同样的操作时,问题就出现了。当它连接到android设备时,它不会显示在/dev/location中

在linux机器上,arduino设备显示为/dev/ttyACM0,FTDI设备显示为/dev/ttyUSB0。问题是FTDI设备没有出现在android上,因此上面的avrdude命令变得无用

我不想按照指定为FTDI构建内核驱动程序

我认为最可行的方法是为avrdude找到/构建一个简单的java包装器,该包装器在更高级别上与usb设备交互,这样我就可以利用执行命令来验证flash


这种方法可行吗?如果没有,解决此问题的最佳方法是什么?

查看FTDI站点,似乎有些FTDI IC可能有驱动程序: 然后,您可能会在JavaHA中再次构建avrdude

我经常在使用arduino时使用avrdude…主要用于从raspberrypi远程重新格式化/升级3D打印机上的固件

我会去的

1) 看看Arduino司机

2) 如果失败…也许可以尝试在java中运行C程序?那么你可以将avrdude与你的应用打包

3) XY问题->为什么不看看其他途径…真正打开恶意固件的唯一方法是通过物理访问设备和拥有先前源代码的用户(您可以设置锁定位以防止读取EEPROM)。即使是带有时间戳且UUID1024位AES令牌/JWT之类的东西也可以在启动时用于验证构建

https://en.wikipedia.org/wiki/Java_Native_Interface

JNI
构建不会有帮助,而
avrdude
不是使用
FTDI
支持构建的

我已经下载并运行了
/configure--enable linuxgpio

Configuration summary:
----------------------
...
DON'T HAVE libftdi1
DON'T HAVE libftdi
...
查找时:

$ sudo yum whatprovides */libftdi1
它给了我:

libftdi-devel-1.1-4.el7.x86_64 : Header files and static libraries for libftdi
Filename : /usr/include/libftdi1
sudo-yum安装libftdi-devel
还安装
libfuzz
。它还需要
flex
bison

甚至还有用于和的驱动程序

还有ARM的构建

。。。这将进入
jniLibs/armeabi
目录

这取决于它是哪个芯片组,但状态:

为了配合本机D2XX库,FTDI提供了一个Java类和一个JNI包装器,可以 很容易包含在应用程序中。该类提供对所有经典D2XX函数的访问,包括 EEPROM功能

它甚至还附带了一个

还为
avrdude
找到了带有
NDK
avrdude
版本的Arduino
AvrdudeJNI.c
只是一个虚拟文件,jni代码将属于该文件,因此可以访问它。