Should Embedded Developers Worry About Endianess?

Most software developers are not interested in learning about computer architecture. And this is not limited to them. Even embedded developers, who are supposed to be more detail oriented routinely gloss over things like cache configuration when they are using a higher level programing language. But memory size and location are important factors and embedded designers must not ignore them.

In this confusion, the endianness of the CPU (the order in which bytes are transmitted over a digital links) is also ignored. There are two circumstances where you have to consider endianness. The first is when you are transmitting data over a communication network or link. Second, when you are handling data in multiple representations. These two circumstances also differ in complexity. Determining endianness in the latter case is more difficult than determining it in the former.

It is true that endianness is CPU determined. And there are many options. So it is no wonder that different semiconductor designers have adopted different endianness for their creations. You can write code without considering endianness but it would be better if you do.

On the other hand, endianness is an old concept (in networking terms) and there are other storage formats and algorithms. However, the advantages are few by far. All this makes a point for embedded designers to use endianness.