lpc1768中結構體在RAM中的存儲格式

最近在調試1768和外接的字節存取存儲器,涉及到了由於不瞭解結構體類型在ram中的存儲格式,出現bug也不知道是哪裏的問題.今天好好看了下,這裏做一總結.

 lpc1768是小端存儲(註釋①),四字節對齊,下面舉例子說明結構體在ram中的存儲格式.

例子1:

結構體定義如下:

struct{
 uint8  arg1;//arg1 =0x01
 uint8  arg2;//arg2 =0x02
 uint32 arg3;//arg3 =0x12345678
 uint8  arg4;//arg4 =0x04
 uint32 arg5;//arg5 =0x23456789
 uint8  arg6;//arg6 =0x06                                                                                                                                  uint16 arg7;//arg7 =0x0755
 uint32 arg8;//arg8 =0x456789ab
}TEST_STRUCT; 

 假設結構體首地址爲0x2007C124,則 其在存儲器中的存儲形式如下:

結構體中元素所佔的空間都要湊成4byte對齊...

    

註釋①:在 <<34.5 ARM Cortex-M3 User Guide: Glossary>>(參見1768手冊)有這麼一段話: 不知道可不可以認爲基於cortex-M3內核的存儲結構都是小端模式.望知情者告知,以免誤導他人.

34.3.1.5 Data types
The processor:
• supports the following data types:
– 32-bit words
– 16-bit halfwords
– 8-bit bytes
• supports 64-bit data transfer instructions.
• manages all data memory accesses as little-endian. See Section 34.3.2.1 for more 
information.








發佈了11 篇原創文章 · 獲贊 19 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章