您好stackoverflow.com的成员!
我尝试在Android中构建一个可以上传avr-gcc生成的HEX文件的应用程序。我安装了AndAVR这个chaintool http://code.google.com/p/andavr/
运行avrdude(在使用USB-OTG线缆的根设备中)我在移动终端中使用此命令:
/data/data/jackpal.androidterm/local/bin/avrdude -F -V -c arduino -p m2560 -P /dev/bus/usb/002/001 -b 115200 -C /data/data/jackpal.androidterm/local/etc/avrdude.conf -U flash:w:/sdcard/megademo/Blink1.cpp.hex
之后阅读这篇文章Android cannot talk to Arduino using AVRDUDE我尝试解决方案并通过/ dev / ttyACM0更改/ dev / bus / usb / 002/002。
/data/data/jackpal.androidterm/local/bin/avrdude -F -V -c arduino -p m2560 -P /dev/ttyACM0 -b 115200 -C /data/data/jackpal.androidterm/local/etc/avrdude.conf -U flash:w:/sdcard/megademo/Blink1.cpp.hex
但avrdude回答我:
avrdude: ser_open(): can't open device "unkown". No such file or directory.
我有一个Arduino Mega 2560和Mega ADK 2560 R3,两个主板都有一个ATmega2560微型控制器,我有一个:
问题是三星设备没有列举Arduino板和华硕标签是的。
在所有设备中,我在移动终端中运行命令:
cat /proc/tty/drivers
和华硕提出具体的驱动因素:
ACM /dev/ttyACM 166 0-31 serial
这个驱动程序没有显示在三星设备中,这个驱动程序对于将hex文件上传到Arduino板是必不可少的,那么如何在三星设备中安装此驱动程序?或者我如何上传hex文件?
所有设备中的Android都在/ dev / bus / USB / 002 / xxx中创建一个文件,其中xxx是Arduino板或其他USB设备。
祝你好运!
答案 0 :(得分:1)
如果要使用此方法,则需要加载cdc_acm内核模块 - 可能未随设备提供,因此您必须构建它。然后创建相应的/ dev / ttyACM0设备节点,因为在桌面linux上执行此操作的守护程序可能不存在。您将需要root来执行这些操作,并适度关闭内核源代码以进行编译。
另一种方法可能是使用Android USB Host API在Android应用中以用户模式实现CDC_ACM类型通信(如果您的设备支持这些通信)。这将是一个更“安卓风格”的解决方案,但需要对avrdude进行一些更改,因为它必须通过打包在应用程序中的Android感知后端服务进行通信。
另请注意,最近的arduinos(Uno等)和少数克隆使用CDC_ACM;较旧的Arduino板和大多数克隆使用FTDI USB串行转换器,需要ftdi驱动程序模块或协议。