Как разработчики встраиваемых плат решили, что они хотят поддерживать? - PullRequest
0 голосов
/ 22 мая 2019

ARM MCU поддерживает как младшие, так и большие порядковые номера. Однако, когда производители проектируют микроконтроллеры, то есть когда они используют микропроцессор ARM и добавляют к нему периферийные устройства, они поддерживают либо с прямым порядком байтов, либо с прямым порядком байтов. Итак, мой вопрос: как производитель плат, такой как STM32, TI решает, хотят ли они поддерживать младший или старший порядок байтов. Насколько я понимаю, микропроцессор ARM поддерживает как прямой, так и прямой порядок байтов.

Ответы [ 3 ]

2 голосов
/ 22 мая 2019

Это совершенно субъективно.

Термины Big Endian и Little Endian взяты из книги «Путешествия Гулливера», где две нации ведут ожесточенную, кровавую войну, основанную на разногласии относительно того, следует ли высиживать яйцо на «большой» стороне или «маленькой» стороне. То есть они боролись за что-то совершенно бессмысленное.

В компьютерном мире 1970–80-х годов лагерь Big Endian состоял в основном из Motorola и IBM, а лагерь Little Endian состоял в основном из Intel. Все остальные производители должны были выбрать любую сторону.

Так что в основном это выбирается по традиции.

Что касается ARM, то все ARM Cortex на практике являются Little Endian. Даже Freescale, бывшая Motorola, выбрала Little Endian для своей семьи Kinetis. Однако существуют другие 32-битные архитектуры, использующие Big Endian, в том числе, я полагаю, некоторые pre-Cortex ARM.

Важно отметить, что "endianess сети" почти всегда является Big Endian, также вне традиции. Но это имеет реальную объективную и практическую причину, а именно, вычисления CRC. Чтобы создать калькулятор CRC в чисто цифровой логике с вентилями XOR, данные должны быть переданы MS байт в первую очередь. В настоящее время редко используют CRC с использованием цифровых ворот, но это историческая причина.

1 голос
/ 22 мая 2019

Программная экосистема для микроконтроллеров ARM Cortex более или менее исключительно порядковая. Маловероятно, что кто-либо выберет использование исключительно байтов с прямым порядком байтов или даже со смешанным порядком байтов без очень веской причины для конкретного приложения. Поэтому выбор обычно прост, и я сомневаюсь, что дизайнеры вообще об этом думают.

0 голосов
/ 22 мая 2019

В отличие от других реализаций ARM, микроконтроллеры Cortex-M не поддерживают изменение порядка байтов «на лету», и выбор порядка байтов фиксируется производителями кремния. Все популярные (и, возможно, даже непопулярные) микроконтроллеры Cortex-M реализуют порядок байтов, так что это практический ответ.

С прямым порядком байтов проще отобразить поток байтов / символов ASCII в память. Так что, возможно, это одна из причин, почему он более популярен.

Выбор порядка байтов довольно несущественен. Если вы пишете автономный код на языке высокого уровня, который не обменивается данными ни с кем другим, тогда действительно не имеет значения, какой порядок байтов вы выберете. Даже если вам приходится обмениваться данными, обычно вы должны инкапсулировать доступ к данным в некоторых низкоуровневых функциях, так что в целом порядок байтов по-прежнему не слишком эффективен.

...