#fpga #tftp #astronomy

tapcp

CASPER FPGA设备的TAPCP协议实现

2个不稳定版本

0.2.1 2024年1月21日
0.1.0 2023年3月17日

#500硬件支持


用于 casperfpga

Apache-2.0 OR MIT

41KB
733

tapcp_rs

针对与某些CASPER协作FPGA板交互的TAPCP协议的Rust实现。

目前功能尚不完整,主要缺少与闪存交互的功能。

待办事项

在Rust中重新实现CSL,这样我们就不需要依赖外部C编译器和不安全的FFI

为什么这个实现中包含TFTP的实现

我找不到TFTP客户端crate,而且使用“规范”实现似乎很简单,只有大约300行C代码。

与远程TAPCP客户端通信

与这个包的细节无关,我发现了一个与远程TFTP客户端(包括运行TAPCP的客户端)交互的简单方法。问题是TFTP运行在UDP上,所以你不能使用SSH代理来访问它。为了解决这个问题,你可以使用VPN或一个叫做sshuttle的软件。使用TPROXY模式,你可以将给定子网上的所有流量代理到你的远程机器,而无需服务器上的管理员权限。

例如,我使用以下命令来测试这个包

在首次启动(客户端)时,我运行

ip route add local default dev lo table 100
ip rule add fwmark 0x01 lookup 100
ip -6 route add local default dev lo table 100
ip -6 rule add fwmark 0x01 lookup 100

然后,为了开启对192.168.0.x子网的代理,我执行

sudo sshuttle --method=tproxy -t 0x01 -r <username@server-addr> 192.168.0.0/24

待办事项

设置为nostd,这样我们就可以在某个时候在FPGA软核上运行这个程序

依赖项

~2–2.9MB
~53K SLoC