【问题标题】:SSH one processor from the other processor without network interfaceSSH 一个处理器从另一个处理器,没有网络接口
【发布时间】:2016-07-28 23:21:05
【问题描述】:

我在同一个芯片上有两个处理器。一种是运行 ARM 处理器 linux和另一个是运行linux操作的非ARM处理器 系统(专有过程)。我们没有像网络这样的媒体 两个处理器之间运行的接口或 PCI 或 USB,1GB 除外 共享内存。

我们希望能够通过 SSH 连接 ARM 上的非 ARM 处理器 处理器并挂载 FS。

我想知道是否可以就什么是 在处理器之间建立这种通信的可能方法。

作为一个概念,我只是碰巧写了一个小网络驱动程序 它通过共享内存进行对话并可以在之间传输数据包 他们俩。但这对我更大的用例没有帮助 能够从另一个处理器通过 SSH 连接。

非常感谢这方面的任何建议。

谢谢

【问题讨论】:

    标签: linux-kernel embedded ipc


    【解决方案1】:

    您走在正确的道路上,这是在同一个芯片或同一块板上使用处理器之间共享内存的常见方法。

    您应该只需要实现物理层、更换 NIC 或采用 NIC 驱动程序并在 ram 中实现环(循环缓冲区),而不是与卡通信。头和尾指针,您可以刻录内存并使所有数据包插槽大小相同,大于您支持的最大容量(基本上是 2Kbytes 或说 10Kbytes,如果您支持 jumbo 10K 很容易计算而无需乘法,或者使用乘法) )。或者,如果您想以更多计算为代价来节省内存,则可以使用表结构或链表结构。

    有时该层处理 mac 层校验和,但您不应该做任何与协议相关的事情,不管它是 ssh、ftp 还是 http 或任何高于该层的东西。

    【讨论】:

      【解决方案2】:

      用一个小的用户空间程序在两个内核之间创建一个虚拟串口

      • 确保在两个内核中都配置了 PTY 支持(CONFIG_UNIX98_PTYSCONFIG_LEGACY_PTYS)和 CONFIG_PPP_ASYNC
      • 编写一个用户空间程序
        • mmaps 将一块共享内存放入用户空间
        • 为发送设置环形缓冲区
        • 找到对方的环形缓冲区进行接收
        • stdin 中的所有内容复制到发送缓冲区中
        • 从接收缓冲区到stdout
      • 使用pty 选项在两个内核上启动pppd,并将您的程序作为script 参数

      现在您应该能够ping 一个核心与另一个核心。如果可行,请启动 sshd 或任何您喜欢的网络协议守护进程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多