kernel中如何讀取記憶體的大小和位址

2021-07-05 11:57:12 字數 1098 閱讀 9911

**閱覽

本文中所有的描述都是基於高通平台,並且涉及的所有的操作都是在手機上完成

本文並不對ddr具體的物理特性做詳細解讀, 我們只需要了解如下的一些基本概念, 就能夠滿足對本文描述的核心內容的理解的需求.

1. 和lcd, tp等常規器件一樣, ddr也是手機中必不可少的器件之一

2. 我們平時常說的記憶體, 從目前大部分機器來看, 指的就是ddr, 只不過對於這種需要重點考慮功耗的產品來說, 我們加了lp(low power低功耗)的ddr前面, 也就是lpddr.

3. 全稱double rate synchronous dynamic random access memory, wiki翻譯過來就是雙倍資料率同步動態隨機訪問儲存器.

4.就一般意義來說所有的程式軟體必須依靠記憶體才能執行, 此器件非常重要!

就像上面所述, 記憶體雖然必不可少, 但歸根結底就是一種手機器件, 和其他器件一樣, 同樣需要初始化, 只不過比其他的器件初始早而已.

就高通平台而言, 如下圖所示, 記憶體資訊的傳遞如下:

下面的表, 按照順序從lk更新dt, 到kernel讀取dt列出了相應的**實現檔案和函式.

順序階段

檔名函式名1lk

aboot.c

boot_linux2lk

dev_tree.c

update_device_tree3lk

meminfo.c

target_dev_tree_mem4lk

dev_tree.c

dev_tree_add_mem_info

5kernel

setup.c

setup_arch

6kernel

setup.c

setup_machine_fdt

7kernel

fdt.c

early_init_dt_scan

8kernel

fdt.c

early_init_dt_scan_memory

下面的兩塊**實際上是兩部分, 一部分是lk中修改dt, 一部分是kernel中讀取dt: (下面的**是經過精簡的, 只反映了程式執行的流程)

記憶體中讀取

把資源先放到記憶體中,然後從記憶體中讀取資源。1.加到記憶體 plist檔案載入到記憶體,對應的也就被載入到記憶體了。cc.spriteframecache.getinstance addspriteframes plist 載入完後呼叫 可不調 cc.texturecache.getinstanc...

kernel記憶體洩漏的除錯

boot kernel lib kconfig.debug 修改config debug kmemleak early log size中default 400為4000,因為400會洩漏,kernel呼叫log early剛好401次,剛剛把400次耗光,導致log early中滿足crt ear...

如何讀取float型態資料在記憶體中的值

1 include2 include3 main 413 14 或者int i union q q.num 1 for i 3 i 0 i printf x q.n i 可以得到一樣的結果 ieee 754 1 1.0 2 127 1,0111 1111,0000.23個 所以結果 1,011 b,...