1.概述 MYD-YG2LX采用瑞薩RZ/G2L作為核心處理器,該處理器搭載雙核Cortex-A55@1.2GHz+Cortex-M33@200MHz處理器,其內部集成高性能3D加速引擎Mail-G31 GPU(500MHz)和視頻處理單元(支持H.264硬件編解碼),16位的DDR4-1600 / DDR3L-1333內存控制器、千兆以太網(wǎng)控制器、USB、CAN、SD卡、MIPI-CSI等外設接口,在工業(yè)、醫療、電力等行業(yè)都得到廣泛的應用。 本文主要介紹基于MYD-YG2LX開(kāi)發(fā)板進(jìn)行系統啟動(dòng)時(shí)間優(yōu)化的調試案例,一般啟動(dòng)方式有去掉常規uboot,直接使用SPL加載內核和保留常規uboot加載內核的方式,MYD-YG2LX目前使用的是保留常規uboot的方法啟動(dòng),啟動(dòng)時(shí)間20s+,接下來(lái)介紹的主要包括TFA、Uboot、Kernel和文件系統時(shí)間優(yōu)化。 2.硬件資源
3.軟件資源
4.環(huán)境準備 進(jìn)行調試之前,需要安裝好Linux虛擬機等相關(guān)開(kāi)發(fā)環(huán)境,具體可以參考《MYD-YG2LX_Linux軟件開(kāi)發(fā)指南》的2.0章節。 5.啟動(dòng)時(shí)間優(yōu)化 5.1.1. TFA優(yōu)化TFA引導啟動(dòng)的log主要有以下,如果我們認為不是太美觀(guān),可以到TFA源碼中使用grep命令去搜索關(guān)鍵的信息打印,然后把相關(guān)的打印去掉,這可能需要花點(diǎn)功夫去尋找。例如(grep -rn “BL2:”)搜索到關(guān)鍵的文件(以下圖示只是其中的一個(gè)地方),然后屏蔽即可。 另外,需要檢查源碼下面的這個(gè)寄存器有沒(méi)有設置,有則忽略,沒(méi)有則需要打開(kāi),這樣會(huì )減少系統在啟動(dòng)中的時(shí)間。
最后編譯TFA以及更新即可。 5.1.2. Uboot優(yōu)化正常的啟動(dòng)log如下,我們需要對這部分進(jìn)行優(yōu)化,優(yōu)化可以從下面3個(gè)點(diǎn)出發(fā)。
最后編譯與更新uboot即可。 5.1.3. Kernel優(yōu)化Kernel典型的修改主要有以下:
總之優(yōu)化還算是一項蠻復雜的項目,我們此次主要從以下幾點(diǎn)優(yōu)化:
Uboot修改如下:
然后啟動(dòng)內核,采集啟動(dòng)log,如下:
返回內核源碼目錄,進(jìn)入內核源碼scripts目錄,只需下面命令,生成直觀(guān)圖形,如下:
然后打開(kāi)boot.svg查看花費時(shí)間最大的驅動(dòng)調用,沒(méi)用的就關(guān)閉,需要用的就優(yōu)化。 最后編譯以及更新內核即可。 5.1.4. 文件系統優(yōu)化MYD-YG2LX的文件系統是基于yocto構建的,關(guān)于yocto如何構建可以參考《MYD-YG2LX_Linux軟件開(kāi)發(fā)指南》的3.0章節。文件系統主要使用下面這3個(gè)命令就可以找到花費時(shí)間最多的服務(wù),然后可以根據實(shí)際情況優(yōu)化。當然也可以把所有的服務(wù)以圖形的形式表現出來(lái),這樣更加直觀(guān),采用systemd-analyze plot > boot.svg 可以把每個(gè)服務(wù)啟動(dòng)順序和消耗時(shí)間顯示出來(lái),針對這些服務(wù),移除掉不需要的或者調整服務(wù)之間的啟動(dòng)順序。
5.1.5. 啟動(dòng)測試經(jīng)過(guò)以上的優(yōu)化后可以打包一個(gè)sd卡刷機包并刷到板子的emmc,關(guān)于如何打包可以參考《MYD-YG2LX_Linux軟件開(kāi)發(fā)指南》的4.3章節,最后再啟動(dòng)測試,執行systemd-analyze即可看到啟動(dòng)時(shí)間,效果如下: |