我正在为 Xilinx FPGA 编写异步通信控制器,我想省去弄清楚 x86 处理器发送数据的顺序的麻烦。
在主机端,我使用的是使用以下教程的 C 程序:http: //slackware.osuosl.org/slackware-3.3/docs/mini/Serial-Port-Programming
另外,发送数据时是否可以在大端和小端之间切换格式?
我正在为 Xilinx FPGA 编写异步通信控制器,我想省去弄清楚 x86 处理器发送数据的顺序的麻烦。
在主机端,我使用的是使用以下教程的 C 程序:http: //slackware.osuosl.org/slackware-3.3/docs/mini/Serial-Port-Programming
另外,发送数据时是否可以在大端和小端之间切换格式?
如果您谈论的是异步通信——串行端口——那么字节顺序取决于您在该串行端口上运行的协议。x86 是 little-endian,因此发送整数字节的程序会先发送 LSB。
由于您通常会使用某种协议来发送数据,因此您需要使用该协议的字节顺序。
因此,您的答案取决于向您发送数据的 x86 程序实际上将使用什么。
对于串行通信协议,字节序是由协议定义的,而不是由处理器定义的。USB 是小端序。请参阅此处的 USB 3.0 规范第 7.1 节。
您拥有 x86 的事实无关紧要。可以编写在 x86 上运行的串行通信驱动程序以符合小端或大端协议。
USB 是小端序。
但是,如果您正在谈论通过 USB 串行端口发送字节,那么它完全取决于程序发送它们的顺序。
在英特尔系统上,除非它最初打算与大端系统通信,否则我希望(但想要验证)它们首先发送最低有效字节。