直接从 RAM 发送原始数据

sending raw data directly from RAM

在 SoC 解决方案中,fpga 直接在 RAM 中保存大量整数值。 另一端的处理器可以看到此数据(整数),处理器应通过网络发送此数据,而无需使用 asio 库对其进行修改。 到目前为止,这个数据还不是太大,我将它复制到一个向量中,然后毫无问题地通过以太网发送它(请参阅代码)。 在当前的项目中,数据量已经增加(大约 200MB),我想直接从 ram 发送它,而不用之前将其复制为矢量。当然我会把它分成几部分。 有没有办法直接从 void (void *ptr) 类型的 RAM 指针发送原始数据,或者有更好的方法来做到这一点?

提前致谢

std::vector<int> int_vect;
for( uint32_t i=from_index ; i<=to_index ; i++ )
{   
     int_vect.push_back(my_memory_ptr->get_value_axis(....));
}
asio::write(z_sock_ptr->socket_, asio::buffer(int_vect));

可以从原始数据创建 asio 缓冲区,它本质上只是一个非拥有数组视图:

asio::write(z_sock_ptr->socket_, asio::buffer{p_data, bytes_count});

是。 asio::buffer 的重载之一提供 exactly this functionality:

mutable_buffer buffer(
    void * data,
    std::size_t size_in_bytes);
  » more...

如果数据是连续的,我们可以这样使用:

void* data = /* get data */; 
size_t size = /* get size */; 
asio::write(z_sock_ptr->socket_, asio::buffer(data, size));