Библиотека оболочек для avrdude - PullRequest
0 голосов
/ 01 ноября 2018

Проблема: Через приложение для Android можно программно проверять содержимое флэш-памяти arduino, чтобы убедиться, что оно не было изменено (злонамеренно)

Я могу сделать это с помощью avrdude, используя команду как показано ниже в оболочке Android ADB

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, как указано здесь

Подход, который я хочу использовать, который, на мой взгляд, наиболее эффективен, заключается в том, чтобы найти / построить простую Java-оболочку для avrdude, которая взаимодействует с USB-устройством на более высоком уровне, таким образом я могу использовать FTDI java библиотека для выполнения команды для проверки прошивки.

Является ли этот подход жизнеспособным? Если нет, то как лучше всего подойти к этой проблеме?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

здание для JNI не поможет, в то время как avrdude не было построено с поддержкой FTDI.

Я скачал avrdude-6.3.tar.gz и запустил ./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 install libftdi-devel также устанавливает libconfuse. ему также нужно flex и bison.

есть даже драйверы для D2XX и FT4222H .

см. AN_357 Демо-приложение Android D2XX для FT4222H .

и есть сборки для ARM libft4222-linux-1.4.1.231.tgz

... который попадет в каталог jniLibs/armeabi.

это зависит от того, какой это набор микросхем, но Драйвер TN 134 FTDI для Android *1042* сообщает:

Для сопровождения собственной библиотеки D2XX, FTDI предоставил класс Java и оболочку JNI , которая может быть легко включается в приложение. Класс обеспечивает доступ ко всем классическим функциям D2XX, включая ЭСППЗУ функции.

поставляется даже с видеоинструкцией по установке .

также нашел Arduino build-скрипт для avrdude.

0 голосов
/ 10 ноября 2018

Глядя на сайт FTDI, кажется, что для некоторых микросхем FTDI может быть драйвер: Драйвер FTDI Android Тогда вы, возможно, снова создадите avrdude в java ha.

Я часто использовал avrdude при использовании arduino ... в основном для удаленного переформатирования / обновления прошивки на 3D-принтере из raspberrypi ...

Я бы пошел

1) Посмотрите на драйвер Arduino ...

2) если не получится ... Может быть, попробовать запустить программы на C в Java? Таким образом, вы можете упаковать avrdude с вашим приложением?

3) Проблема XY -> Почему бы не посмотреть на другие возможности ... Единственный способ по-настоящему использовать вредоносную прошивку - это физический доступ к устройству и пользователь с исходным исходным кодом (вы можете установить биты блокировки чтобы предотвратить чтение EEPROM). Даже метку времени и UUID 1024-битный AES / JWT-подобный предмет можно использовать при запуске для проверки сборки?

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