嵌入式的八股总结

全局变量放在flash和RAM的什么位置

Flash存储器(程序存储器): Flash存储器通常用于存储程序代码和只读数据。
在某些嵌入式系统中,全局常量和只读数据(如常量字符串、常量数组等)可以存储在Flash存储器中,以便节省RAM。
这些数据通常存储在Flash的只读段(.rodata)中。这些数据在程序运行时不可修改。
RAM(随机存储器): RAM用于存储程序的运行时数据,包括全局变量、堆(动态分配的内存)和栈。
全局变量通常存储在RAM中。RAM中的数据可以读取和写入,因此适用于需要修改的数据。
需要注意的是,某些嵌入式系统可能具有多种存储器,如Flash、RAM、EEPROM等,每种存储器都有其特定的用途和访问方式。
全局变量的存储位置应根据其性质和需求进行选择,并在编译和链接时进行相应的配置。
在嵌入式系统中,Flash通常用于存储程序代码和只读数据,而RAM用于存储可读写的运行时数据。
但是,这些规则可以根据具体的嵌入式系统和应用程序的要求而有所不同。

大端小端是什么

大端(Big Endian)和小端(Little Endian)是用于表示多字节数据在内存中的存储顺序的两种不同方法。它们决定了在多字节数据类型(如整数或浮点数)中,哪个字节位于内存的低地址部分(小端)和高地址部分(大端)。

  1. 大端(Big Endian): 在大端存储中,数据的高位字节(Most Significant Byte,MSB)存储在内存的低地址处,而数据的低位字节(Least Significant Byte,LSB)存储在内存的高地址处。这意味着数据的高位字节在内存中的地址较小,而低位字节在内存中的地址较大。大端存储方式类似于人类书写,从左到右,先写高位再写低位。

    例如,整数值 0x12345678 在大端存储中会按照如下方式存储在内存中:

     

    makefileCopy code

    地址: 0x1000 0x1001 0x1002 0x1003 数据: 0x12 0x34 0x56 0x78

  2. 小端(Little Endian): 在小端存储中,数据的低位字节(LSB)存储在内存的低地址处,而数据的高位字节(MSB)存储在内存的高地址处。这意味着数据的低位字节在内存中的地址较小,而高位字节在内存中的地址较大。小端存储方式与大端相反,从右到左,先写低位再写高位。

    例如,同样的整数值 0x12345678 在小端存储中会按照如下方式存储在内存中:

     

    makefileCopy code

    地址: 0x1000 0x1001 0x1002 0x1003 数据: 0x78 0x56 0x34 0x12

在计算机体系结构中,大端和小端存储方式由硬件架构规定。不同的体系结构可能采用不同的存储方式。例如,x86架构是小端存储,而一些RISC体系结构可能采用大端存储。在网络通信和数据传输中,大端和小端存储方式之间的差异可能导致数据格式不匹配的问题,因此在进行数据交换时需要进行字节顺序的转换。

猜你喜欢

转载自blog.csdn.net/shisniend/article/details/132639023