2

嗨 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 无法使用 AVRDUDE 与 Arduino 对话,我尝试了解决方案并将 /dev/bus/usb/002/002 更改为 /dev/ttyACM0。

/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 微控制器,我有一个:

  • 三星 Galaxy S2 以 root 运行 Android 4.1.2 股票
  • 三星 Galaxy S3 以 root 运行 Android 4.1.2 股票
  • Samsumg Galaxy Tab Note 10.1 无需 root 即可运行 Android 4.1.2 库存
  • 华硕Transfomer Pad TF700T 运行Android 4.2.1 库存,无需root

问题是三星设备没有枚举 Arduino 板和华硕选项卡是的。

在所有设备中,我在移动终端中运行命令:

cat /proc/tty/drivers

华硕提供了具体的驱动程序:

ACM /dev/ttyACM 166 0-31 serial

此驱动程序未在三星设备中显示,此驱动程序对于将 hex 文件上传到 Arduino 板至关重要,那么如何在三星设备中安装此驱动程序?或者我怎样才能上传十六进制文件?

所有设备中的 Android 在 /dev/bus/USB/002/xxx 中创建一个文件,其中 xxx 是 Arduino 板或其他 USB 设备。

此致!

4

1 回答 1

1

如果你想使用这个方法,你需要加载 cdc_acm 内核模块——你的设备可能没有提供它,所以你必须构建它。然后创建相应的 /dev/ttyACM0 设备节点,因为在桌面 linux 上执行此操作的守护程序可能不存在。您将需要 root 来执行这些操作,并适度关闭内核源代码以进行编译。

如果您的设备支持这些 API,则另一种方法可能是使用 Android USB 主机 API 从 Android 应用程序以用户模式实现 CDC_ACM 类型通信。这将是一个更“android 风格”的解决方案,但需要对 avrdude 进行一些更改,因为它必须通过打包在应用程序中的 Android 感知后端服务进行通信。

另请注意,最近的 arduino(Uno 等)和少数克隆使用了 CDC_ACM;较旧的 Arduino 板和大多数克隆使用 FTDI USB 串行转换器并需要 ftdi 驱动程序模块或协议。

于 2013-05-30T14:49:16.480 回答