歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Mini2440 Linux 內存布局

Mini2440 Linux 內存布局

日期:2017/3/1 10:23:18   编辑:Linux編程

在學習linux內存尋址的過程中,注意到在x86架構上,分段與分頁機制共存。而在RSIC體系結構下一般只支持分頁。《深入理解linux內核》是在x86架構上介紹的linux物理內存布局。在x86架構上,linux被安裝在ram從物理地址的0x00100000也就是第二個1M的地方。內核態的線性地址:0xc0000000~0xffffffff,在內核態可以尋址0x00000000~0xbfffffff的地址,用戶態的線性地址范圍為:0x00000000~0xbfffffff,用戶態的程序不能訪問內核態的線性地址。這幾個是線性地址只是CPU尋址的時候用,最終都是要映射到實際的物理地址。在內核鏡像包括代碼段,數據段。在數據段的後面保存了全局頁表描述了線性地址怎樣轉化成物理地址的。在內核態的線性地址空間裡,內核要映射全部的物理RAM,前8M的RAM有兩個映射分別對應於線性地址0x00000000~0x0x007fffff與0xc0000000~0xc07fffff,這個是為了在內核初始化的時候,MMU開啟前後的操作方便,這是臨時映射。最終的內核態映射是線性地址與物理地址線性映射,就是每個線性地址都是物理地址加上一個偏移量,在x86上這個偏移量就是0xc0000000。以上就是x86架構上linux的物理內存布局。而mini2440的物理內存布局會有很大的不同,以64M的SDRAM來說,RAM的物理地址是從0x30000000開始的,結束與0x34000000。要了解linux在mini2440上的內存布局首先要看System.map文件,這個鏈接器生成的文件。描述了linux鏡像在內存中的布局,地址全部是線性地址。

  1. c0004000 A swapper_pg_dir
  2. c0008000 T __init_begin
  3. c0008000 T _sinittext
  4. c0008000 T _stext
  5. c0008000 T stext
  6. c0008034 t __enable_mmu
  7. ......
  8. ......
  9. c04b08d8 B proc_net_rpc
  10. c04b08dc b sunrpc_table_header
  11. c04b08e0 B rpc_debug
  12. c04b08e4 B nfs_debug
  13. c04b08e8 B nfsd_debug
  14. c04b08ec B nlm_debug
  15. c04b08f0 b nullstats.25712
  16. c04b0910 B __bss_stop
  17. c04b0910 B _end
Copyright © Linux教程網 All Rights Reserved