嵌入式板开发人员如何决定他们要支持的字节序?

时间:2019-05-22 04:11:32

标签: embedded endianness

ARM MCU支持小字节序和大字节序。但是,当制造商设计微控制器时,即当他们使用ARM微处理器并向其添加外围设备时,它们支持大字节序或小字节序。因此,我的问题是TI像STM32这样的电路板制造商如何决定他们要支持的字节序是小还是大。据我了解,ARM微处理器支持Little Endian和Big Endian。

3 个答案:

答案 0 :(得分:2)

这完全是主观的。

<大>大端和<小>小端一词取自《格列佛游记》,其中两个国家根据关于是否应该孵化的分歧进行激烈的血腥战争。在“大”或“小”侧的鸡蛋。也就是说,他们正在为毫无意义的事情而斗争。

在1970年代至80年代的计算机世界中,Big Endian阵营主要由摩托罗拉和IBM组成,Little Endian阵营主要由Intel组成。其他所有制造商都必须选择任一侧。

因此,大多数情况下是传统选择的。

特别是对于ARM,实际上所有ARM Cortex都是Little Endian。甚至前摩托罗拉公司的飞思卡尔也为其Kinetis家族选择了Little Endian。但是,还有其他使用Big Endian的其他32位架构,包括我相信一些Cortex之前的ARM。

重要的是,“网络耐力”几乎总是Big Endian,这也与传统不符。但这有一个实际的客观和实际的原因,即CRC计算。为了创建具有XOR门的纯数字逻辑的CRC计算器,必须首先以MS字节传输数据。如今很少使用数字门来实现CRC,但这是历史原因。

答案 1 :(得分:1)

ARM Cortex MCU的软件生态系统或多或少都是低端的。没有很好的特定应用原因,任何人不太可能选择仅使用big-endian甚至使用混合endian。因此选择通常很简单,我怀疑设计师是否会考虑它。

答案 2 :(得分:-1)

与其他ARM实现不同,Cortex-M MCU不支持字节顺序的“即时”更改,并且字节顺序的选择由芯片供应商确定。所有流行的(甚至可能不受欢迎的)Cortex-M MCU都实现了低字节序,因此这是实际的答案。

小尾数法更容易将字节/ ASCII字符流映射到内存中。因此,也许这就是它更受欢迎的原因之一。

字节序的选择非常无关紧要。如果您正在以不与其他任何人交换数据的高级语言编写独立代码,那么您选择哪种字节顺序确实无关紧要。即使必须交换数据,通常也可以将数据访问权限封装在一些低级函数中,因此总的来说,字节序仍然没有太大影响。