我的主机Linux中有虚拟CAN (vcan0、vcan1)。我想让它们在Android虚拟设备(AVD)中可用。我正在使用Androi Studio中的AVD管理器创建AVD。然而,我似乎不能让这个工作。
我通过以下命令在我的主机Linux中创建了Virtual CAN设备:
modprobe can
modprobe can_raw
modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0
ip link show vcan0以上命令来自SocketCAN wiki。
我尝试使用以下命令在模拟的安卓系统中模拟vcan0,但不起作用:
~/Android/Sdk/tools/emulator -avd Soham_Device_API_25 -qemu -device can_pci,canbus=canbus0,host=vcan0或
~/Android/Sdk/tools/emulator -avd Soham_Device_API_25 -qemu -device -device mioe3680_pci,canbus1=canbus0,host1=vcan0还有很多其他的。但它们都不能像'can_pci' is not a valid device model name和Device 'vcan0' not found那样工作并抛出错误消息。但是,我已经使用测试应用程序检查了vcan0和vcan1在我主机Linux上是否正常工作。有人知道如何在模拟安卓中启用这个vcan0吗?
发布于 2020-09-03 17:52:56
如果您想从客户系统访问主机系统的真实或虚拟CAN总线,那么您可以使用QEMU SJA1000 CAN控制器仿真支持。
该支持已在2.12 QEMU版本中得到维护。我没有Android官方开发环境的经验,所以我不知道它是否使用了足够新的QEMU版本。
基本使用说明:https://github.com/qemu/qemu/blob/master/docs/can.txt
要求给定的目标系统支持PCI总线,允许将部分支持SJA1000控制器的板卡映射到目标系统中。当资源可用时,可以实现对平台总线映射的SJA1000或其他控制器仿真的支持。
根据你问题中的例子,我希望
~/Android/Sdk/tools/emulator -avd Soham_Device_API_25 -qemu \
-object can-bus,id=canbus0 \
-object can-host-socketcan,id=canhost0,if=vcan0,canbus=canbus0 \
-device kvaser_pci,canbus=canbus0 \可以工作,但我不确定什么是~/Android/Sdk/tools/模拟器,以及它如何将参数传递给真正的QEMU。但它可能会通过,因为它报告参数不正确。您试图使用仅用于开发和语法的旧虚拟QEMU单板模型,在更改为can_pci对象模型后,参数发生了很大的变化,这是接受主线所需的。
基于开源开放硬件CTU的CAN FD总线和控制器的支持,QEMU和驱动程序的CAN FD内核仿真已经进入主线,但由于缺乏维护审查,驱动程序等待了一年半。现在回顾QEMU补丁。在now http://canbus.pages.fel.cvut.cz/的项目页面中查找实际代码
https://stackoverflow.com/questions/56435051
复制相似问题