从没有网络接口的其他处理器SSH一个处理器

时间:2016-07-28 23:21:06

标签: linux-kernel embedded ipc

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

我们希望能够在ARM上SSH非ARM处理器 处理器和安装FS。

我想知道我是否可以得到一些关于什么的建议 在处理器之间建立这种通信的可能方法。

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

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

由于

2 个答案:

答案 0 :(得分:1)

你走在正确的道路上,这种方法在同一个芯片上或处理器之间共享内存的同一块电路板上接近是不常见的方法。

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

有时候这个层会处理mac层校验和,但是你不应该做任何协议相关的事情,如果它是ssh或ftp或http或者在这个层之上的任何东西都无关紧要。

答案 1 :(得分:-1)

使用小型用户空间程序在两个核心之间创建虚拟串行端口

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

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