问题是:
通过android应用程序,能够以编程方式验证arduino flash内容,以确保它没有被更改(恶意地)
我可以用avrdude在android adb shell中使用下面的命令
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构建指定的内核驱动程序here
我认为最可行的方法是为avrdude找到/构建一个简单的java包装器,它在更高的层次上与usb设备交互,这样我就可以使用FTDI java library来执行一个命令来验证flash。
这种方法可行吗?如果没有,解决这个问题的最佳方法是什么?
最佳答案
在ftdi站点上,似乎有一些ftdi ic的驱动程序:FTDI Android Driver
然后,您很可能在java ha中再次构建avrdude。
我经常在使用Arduino时使用Avrdude…主要是从Raspberrypi远程重新格式化/升级3D打印机上的固件…
我要走了
1)查看Arduino司机……
2)如果失败了…也许可以尝试在Java中运行C程序?所以你可以用你的应用程序打包avrdude?
3)XY问题->为什么不看看其他途径…真正弹出恶意固件的唯一方法是物理访问设备和具有先前源代码的用户(您可以设置锁定位以防止读取EEPROM)。启动时甚至可以使用带时间戳的uuid 1024bit aes令牌/jwt之类的东西来验证构建?
https://en.wikipedia.org/wiki/Java_Native_Interface
关于android - Avrdude的包装器库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53099360/