0

我正在为 Xilinx FPGA 编写异步通信控制器,我想省去弄清楚 x86 处理器发送数据的顺序的麻烦。

在主机端,我使用的是使用以下教程的 C 程序:http: //slackware.osuosl.org/slackware-3.3/docs/mini/Serial-Port-Programming

另外,发送数据时是否可以在大端和小端之间切换格式?

4

3 回答 3

3

如果您谈论的是异步通信——串行端口——那么字节顺序取决于您在该串行端口上运行的协议。x86 是 little-endian,因此发送整数字节的程序会先发送 LSB。

由于您通常会使用某种协议来发送数据,因此您需要使用该协议的字节顺序。

因此,您的答案取决于向您发送数据的 x86 程序实际上将使用什么。

于 2013-02-18T17:58:57.960 回答
3

对于串行通信协议,字节序是由协议定义的,而不是由处理器定义的。USB 是小端序。请参阅此处的 USB 3.0 规范第 7.1 节。

您拥有 x86 的事实无关紧要。可以编写在 x86 上运行的串行通信驱动程序以符合小端或大端协议。

于 2013-02-19T13:46:58.837 回答
3

USB 是小端序。

但是,如果您正在谈论通过 USB 串行端口发送字节,那么它完全取决于程序发送它们的顺序。

在英特尔系统上,除非它最初打算与大端系统通信,否则我希望(但想要验证)它们首先发送最低有效字节。

于 2013-02-19T13:59:40.640 回答