我有一个自定义版本的 AOSP(基于 kitkat 4.4)。我正在通过 Android 的 USB Host API 控制一个 arduino 板。我也在运行一个支持 CDC-ACM 模块的内核。
我希望能够将新的十六进制文件闪存到板上。我已经看到 ArduinoDroid 在他的应用程序中执行此操作。我已经能够使用 avrdude 和使用 CDC-ACM 驱动程序创建的 /dev/ttyACM* 文件进行闪存。
但是,当我授予我的应用程序与 arduino 板通信的权限时,/dev/ttyACM* 文件会消失。这是有道理的,因为我现在通过 Android 的 USB 主机 API 控制它。我正在寻找一种方法来恢复 /dev/ttyACM* 文件或允许 avrdude 使用 /dev/bus/usb/#/# 文件以便将新的十六进制文件闪存到板上。USBManager 中似乎没有 revokePermission 方法。
/dev/ttyACM* 设备文件即使在关闭设备后也不会出现。我正在运行以下代码来关闭设备。
connection.releaseInterface(device.getInterface(1));
连接.close();
我想我真正的问题是有办法在释放 USB 连接后恢复内核驱动程序。
因为我使用的是自定义版本的 AOSP,所以我没有 google play,也无法在平板电脑上安装 ArduinoDroid。但是,如果需要,我可以将我的应用程序作为系统级应用程序运行。