我正在为 RISC V 编写 Forth(别问!)——并且想添加帧缓冲区访问,但我很挣扎。
RISC V 盒子运行着 Linux,位于另一个房间,没有插入显示器,我只是通过 SSH 访问它。
我现在已经编写了一些操作帧缓冲区的 Forth 代码,它运行顺利,但我看不到任何输出。
显然,仅使用 X 意味着我正在查看本地机器的帧缓冲区输出,而不是远程机器。我尝试使用 VNC(tightvnc),但似乎也不起作用 - 因为它是基于 X/11 的?
有没有办法让它工作 - 例如在这种设置下远程查看 /dev/fb0 提供的屏幕?
答案1
TigerVNC 服务器程序是基于 X11 的(“Xvnc”托管 X11 服务器,“x11vnc”连接到现有的 X11 服务器并抓取其缓冲区),但总体而言,VNC 并非本质上与 X11 绑定。
https://github.com/ponty/framebuffer-vncserver是支持读取 fb0 设备的 VNC 服务器。当前版本似乎存在转发问题输入,但是,它作为仅供查看的服务器运行。(此外,预计 CPU 会持续占用,因为它需要不断地重新检查帧缓冲区的变化。)
更常见的解决方案是将“KVM-over-IP”设备连接到盒子(代替显示器)。虽然大多数 IP KVM 设备相当昂贵,但 PiKVM 可能是一种选择。
但是,如果您的代码设计得当,它应该使用抽象层进行图形输出(例如 SDL),而不是直接绑定到 /dev/fb0 接口 - 这样您就可以让它绘制到 X11 或 Wayland 窗口(并且 X11 和 Wayland 都可以通过 SSH 隧道传输到您的本地计算机)。您需要做的就是运行ssh -Y riscbox ./goforth
并让它在本地弹出。