嵌入式开发新手。致力于数字KVM

时间:2009-01-19 05:21:38

标签: embedded electronics

我是嵌入式开发的新手 - 但一段时间以来一直对该领域感兴趣。我认为这足以与编程相关;我看到这里有足够多的人展示这个领域的知识,所以我会问这里。

我认为,一个涵盖许多不同编程和硬件领域的酷项目将是开发基于数字LAN的KVM。我的最终游戏是有几个“单位”,其中包含许多(我认为4-8)VGA和PS / 2对女性端口和一个以太网端口。您可以将LAN连接到计算机,然后使用在网络上其他基于Windows的客户端上运行的软件访问它。每个单元都有自己的IP但响应某种广播数据包,这样每个客户端都会有一个插入每个单元的所有计算机的完整列表。正如您可能猜到的那样,我也无法加速网络编程(我选择此项目的另一个原因)。

我最初的想法是每个单元包含三个微处理器。一个(具有许多模拟I / O端口)将与VGA和PS / 2 I / O接口。这会将VGA转换为某种数字包,它将被发送(IC2 / USB /无论如何)到第二个处理器。它还将从第二个处理器接收包含从客户端发送的鼠标/键盘输入的数字打包。然后它会将其转换为模拟输出并通过PS / 2端口发送。

第二个处理器从每台活动计算机接收VGA输出,并将它们组合成一个图像并使用JPEG压缩进行压缩。然后将现在压缩的图像发送到第三个处理器。

第三个处理器将跟踪所有活动客户端并与以太网卡接口。它会将压缩的监视器输出发送到正确的客户端,并接收将被分派到第二个处理器的键盘/鼠标输入。

这是我真正想过的第一个嵌入式项目。我有以下问题。注意:我更感兴趣的是你如何得到答案然后答案本身。这是一种学习经验,而不是其他任何东西。虽然我在一家技术维修店工作,但是当前的模拟KVM发生故障并且没有足够的端口来支持我们在板凳上经常使用的机器数量;所以,如果我能把它拉得足够好,它就会很有用。

问题1:

我目前的计划是否完全愚蠢?我是在考虑还是在思考这个问题?

问题2:

每个处理器需要多快?第一个将转换可能的

165,888,000字节(1440 * 900 * 32 * 4)(最大分辨率我希望支持最大深度乘以4台电脑)

大约158 MB。处理器需要达到什么速度才能每秒处理30次这么多数据?

然后,第二个处理器必须将158 MB的像素压缩到JEPG中。由于压缩,LAN处理器必须工作得更少。

问题3:

我将去哪里获得构建它所需的硬件?就微处理器而言,它们必须具有可用的C编译器。我想我可能会疯狂地在ASM中编写压缩alogo的JPEG文件。


基本上我被卡住了。如果不是不可能的话,在网上找到足够的资源来开始这个领域是很困难的;所以我想知道这里是否有人能指出我正确的方向。

另外,我对电子学的了解相当有限。

修改

我不明白为什么这个问题被贬低了。我认为这个问题的方式可能会有助于帮助程序员进入嵌入式开发的答案。我有一个想法,我知道处理器和内存如何运作良好,足以编码。但是,我知道这与我实现自己设备的能力之间存在差距。对于我所在的人来说,这将是有价值的。

5 个答案:

答案 0 :(得分:1)

  

165,888,000字节(1440 * 900 * 32 * 4)(最大分辨率我希望支持最大深度乘以4台电脑)

  • 如果32是位深度,则计算结束。 32位= 4字节,因此输入数据带宽为(1440 x 900 x 4 x 4)=每帧不到20MB。

  • 8位处理器可能需要至少(1440 x 900 x 4 x 4 x 30)指令/秒,即622MHz才能读取输入。 32位处理器的速度可能是慢速的4倍= 156MHz。但这是记住的最低速度

  • 计算完成所需处理所需的周期数。假设你写了一个可以在10个周期内处理每个输出像素的程序,你有(1440 x 900)像素出现,所以你需要一个32位处理器,速度为(1440 x 900)x(10个周期)x(30fps) )= 389MHz

答案 1 :(得分:1)

对于客户端协议,您可能希望查看使用VNC协议的接口。这样做的好处是可以为您提供内置协议和可能的客户端。

Tight VNC有源代码可用。

答案 2 :(得分:1)

我的观点:你想要解决问题的“结束”了。 VNC对于你所描述的内容已经太好了。让我在看到问题时描述问题:

对于嵌入式应用程序来说,处理要求过高 - 正如其他人提到的那样,视频本身就是惊人的。你几乎肯定需要压缩它,这意味着更多的CPU能力,你需要足够的RAM来存储所有这些信息,并且只需要想象一下这个数据输出了多少 - 每帧20MB左右。这是很多数据。另外,如果你实现这个,你的'计算机'将有两个IP地址 - 一个用于控制视频/键盘和鼠标,另一个用于说访问文件等等。这对我来说似乎很糟糕。

这并没有解决您正在考虑的问题,但我认为您最好不要实现只连接到VNC服务器并处理键盘/鼠标命令的瘦客户端,然后将它们编码为VNC兼容的以太网命令,并在附加的监视器上显示视频数据。您甚至可以在其上放置一个大按钮,在计算机的IP地址列表(类似KVM)之间切换。这可能是用几百兆赫兹的ARM处理能力加上可能的单独视频处理芯片完成的。 TI和AVR使ARM处理器成为一个很好的起点。运行linux的嵌入式ARM板的一个例子是:

http://opencircuits.com/Linuxstamp

它没有视频,但它有以太网,串行,USB等。它是嵌入式ARM Linux开发的良好起点,我认为这是你应该采取的方向。也试试uCLinux,祝你好运!

答案 3 :(得分:1)

这是一个有趣的想法。它确实有一些用途,而不仅仅是远程桌面软件 - 我可以重新启动服务器,做bios甚至远程安装操作系统。

考虑到您将需要的硬件级别(CPU / VGA / OS / tcp)以及少量(您不会销售数百万)的成本,我将从像{{{ 3}}并使用TightVNC和/或RDP协议。 (从远程PC恢复VGA将会很有趣)

考虑到企业级KVM切换器的天文价格,您可以从中获利!

答案 4 :(得分:1)

Q1。除了雄心勃勃之外,听起来它可以起作用。

Q2。我会研究FPGA,它们是能够处理视频捕获的良好候选者。一个好的资源是FPGA4Fun。使用正确的FPGA,您应该能够在单个FPGA上运行捕获和压缩。类似这样的AVR 32bit Networking Processor Kit,可能适用于与网络连接。

Q3。 Octopart是寻找供应商的好地方。

在线电子参考没有特别的顺序

Electronics Wisc-Online

Tom Loredo's Electronics Bookmarks

Lessons in Electric Circuits

这些只是我在美味的电子链接中遇到的一些。我没有超过这些,但他们应该能指出你正确的方向。祝你好运。