UBOOT-內存地址分析圖

                                                   UBOOT-內存地址分析圖

 

 

 

 

 

回顧內存四區的知識:在執行一個C語言程序時,此程序將擁有唯一的“內存四區”--堆區,棧區,全局區,代碼區。

 

其中,棧區:由編譯器自動分配,存放函數的形參,局部變量等,函數執行完畢時自動釋放。

堆區:程序員手動分配釋放(常見malloc,free等函數涉及)。

全局區:存放全局變量和(static)靜態變量,裏面細分有一個常量區,字符串常量和其他常量也存放在此。該區域在程序結束後由操作系統釋放,

       補充:全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域, 未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域。

代碼區:存放程序執行代碼的一塊內存區域、裏面是二進制的代碼、內存區域通常屬於只讀, 某些架構也允許代碼段爲可寫,其實就是存放代碼框架、或者說函數體、代碼體的地方。

 

uboot的上述內存圖如何對應C的內存四區呢?全局區如何構成?

代碼區=start.o+*(.text)

全局區 = *(.rodata*)+*(.data)+*(.u_boot_cmd)+*(.rel*)+*(.dynsym)+*(.mmutable)+*(.bss) 

或者

全局區 = *(.rodata*)+*(.data)+空+*(.bss) 

 

重定位以後的uboot內存分佈圖:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章