在i.MX8M的EVK平台上使用LPDDR4記憶體,其容量為3GByte。
通常客人為了價格的考量,通常會將記憶體容量降低。
當記憶體容量降低,必須有各方面的考量,這樣系統才不會出問題。
一、DDR的設置與Mapping(映射)
以下將Uboot由3GB改為1GB
- i.mx8mq_evk.h à 將 0xC00000000 修改為 0x40000000
- fsl-imx8mq.dtsi à 在memory 這個 node內將 0xC0000000 修改為 0x40000000
- fsl-imx8mq.dtsi à 在 gpu 這個 node內將 0xC0000000 修改為 0x40000000
二、DDR的CMA設置
在 Android 將預設 CMA 的size 1280Mbyte 。這是為了讓有VPU,GPU,HDMI,攝像機等,需要更長的擴展內存,並且這些內存都是需要使用DMA訪問的。
因此,將預設 CMA 的size 1280Mbyte,改成 256Mbyte,不然預設 CMA size 就超過 1GB,
只是由 1280M改成256M 後,如果有大量資料搬移 像是 video decode/encode,圖形顯示的部份,就會變成非常的慢,因為只有每 256M 搬移一次,原本是可以一次超過1GByte的連續性資料搬移
- 修改 Android board config 將 CMA 由 1280M 改為 256M
/home/apollo/AP/imx-p9.0.0_2.0.0-ga/android_build/device/fsl/imx8m/evk_8mq/BoardConfig.mk
ifeq ($(PRODUCT_IMX_DRM),true)
#CMASIZE=736M
CMASIZE=256M
else
#CMASIZE=1280M
CMASIZE=256M
endif
當系統跑起來之後,執行"free -h"即可以知道目前DDR的狀態。
evk_8mq:/ $ su
evk_8mq:/ #
evk_8mq:/ #
evk_8mq:/ # free -h
total used free shared buffers
Mem: 982M 952M 30M 804K 1.7M
-/+ buffers/cache: 950M 32M
Swap: 300M 4.7M 295M
evk_8mq:/ #
以下及為在Android P作業系統,1GB的記憶體,開機訊息
評論