首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们如何从主机到Android模拟器模拟虚拟CAN设备?

我们如何从主机到Android模拟器模拟虚拟CAN设备?
EN

Stack Overflow用户
提问于 2019-06-04 06:00:13
回答 1查看 569关注 0票数 2

我的主机Linux中有虚拟CAN (vcan0vcan1)。我想让它们在Android虚拟设备(AVD)中可用。我正在使用Androi Studio中的AVD管理器创建AVD。然而,我似乎不能让这个工作。

我通过以下命令在我的主机Linux中创建了Virtual CAN设备:

代码语言:javascript
运行
复制
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,但不起作用:

代码语言:javascript
运行
复制
~/Android/Sdk/tools/emulator -avd Soham_Device_API_25 -qemu -device can_pci,canbus=canbus0,host=vcan0

代码语言:javascript
运行
复制
 ~/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 nameDevice 'vcan0' not found那样工作并抛出错误消息。但是,我已经使用测试应用程序检查了vcan0vcan1在我主机Linux上是否正常工作。有人知道如何在模拟安卓中启用这个vcan0吗?

EN

回答 1

Stack Overflow用户

发布于 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或其他控制器仿真的支持。

根据你问题中的例子,我希望

代码语言:javascript
运行
复制
 ~/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/的项目页面中查找实际代码

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56435051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档