• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

米爾-瑞薩RZ/G2L核心板開發(fā)板的系統(tǒng)啟動時間優(yōu)化應(yīng)用筆記

05/12 11:23
214
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

1.概述

MYD-YG2LX采用瑞薩RZ/G2L作為核心處理器,該處理器搭載雙核Cortex-A55@1.2GHz+Cortex-M33@200MHz處理器,其內(nèi)部集成高性能3D加速引擎Mail-G31 GPU(500MHz)和視頻處理單元(支持H.264硬件編解碼),16位的DDR4-1600 / DDR3L-1333內(nèi)存控制器、千兆以太網(wǎng)控制器、USB、CAN、SD卡、MIPI-CSI等外設(shè)接口,在工業(yè)、醫(yī)療、電力等行業(yè)都得到廣泛的應(yīng)用。

米爾基于瑞薩RZ/G2L開發(fā)板

本文主要介紹基于MYD-YG2LX開發(fā)板進(jìn)行系統(tǒng)啟動時間優(yōu)化的調(diào)試案例,一般啟動方式有去掉常規(guī)uboot,直接使用SPL加載內(nèi)核和保留常規(guī)uboot加載內(nèi)核的方式,MYD-YG2LX目前使用的是保留常規(guī)uboot的方法啟動,啟動時間20s+,接下來介紹的主要包括TFA、Uboot、Kernel和文件系統(tǒng)時間優(yōu)化。

2.硬件資源

  • USB-TTL調(diào)試串口線一根
  • MYD-YG2LX開發(fā)板一塊
  • 12V電源適配器一個

3.軟件資源

  • Linux虛擬機(jī)
  • 米爾提供的SDK交叉工具鏈
  • Linux5.10.83

4.環(huán)境準(zhǔn)備

進(jìn)行調(diào)試之前,需要安裝好Linux虛擬機(jī)等相關(guān)開發(fā)環(huán)境,具體可以參考《MYD-YG2LX_Linux軟件開發(fā)指南》的2.0章節(jié)。

5.啟動時間優(yōu)化

5.1.1. TFA優(yōu)化

TFA引導(dǎo)啟動的log主要有以下,如果我們認(rèn)為不是太美觀,可以到TFA源碼中使用grep命令去搜索關(guān)鍵的信息打印,然后把相關(guān)的打印去掉,這可能需要花點(diǎn)功夫去尋找。

例如(grep -rn “BL2:”)搜索到關(guān)鍵的文件(以下圖示只是其中的一個地方),然后屏蔽即可。

另外,需要檢查源碼下面的這個寄存器有沒有設(shè)置,有則忽略,沒有則需要打開,這樣會減少系統(tǒng)在啟動中的時間。

static void cpu_cpg_setup(void)
{
while ((mmio_read_32(CPG_CLKSTATUS) & CLKSTATUS_DIVPL1_STS) != 0x00000000);
mmio_write_32(CPG_PL1_DDIV, PL1_DDIV_DIVPL1_SET_WEN | PL1_DDIV_DIVPL1_SET_1_1);
while ((mmio_read_32(CPG_CLKSTATUS) & CLKSTATUS_DIVPL1_STS) != 0x00000000);
}
void cpg_early_setup(void)
{
cpu_cpg_setup();
cpg_ctrl_clkrst(&early_setup_tbl[0], ARRAY_SIZE(early_setup_tbl));
}

最后編譯TFA以及更新即可。

5.1.2. Uboot優(yōu)化

正常的啟動log如下,我們需要對這部分進(jìn)行優(yōu)化,優(yōu)化可以從下面3個點(diǎn)出發(fā)。

  • 裁剪uboot,減少uboot大小。

MYD-YG2LX平臺的2G DDR配置文件在configs/myc-rzg2l_defconfig,1G DDR的配置文件在configs/myc-rzg2l_ddr1gb_defconfig,可以在這個配置文件中屏蔽掉一些自己不需要的功能,這個需要根據(jù)實(shí)際情況刪除不需要的功能,例如:

  • 移除bootdelay的倒計(jì)時時間

bootdelay一般默認(rèn)都是2-3s,移除可以直接修改include/configs/myc-rzg2l.h文件,例如:

  • 關(guān)閉uboot的打印log關(guān)

閉uboot相關(guān)的日志打印,可以到uboot的源碼路徑下搜索關(guān)鍵的信息,然后進(jìn)行屏蔽即可(以下圖示只是其中的一個地方),例如:

最后編譯與更新uboot即可。

5.1.3. Kernel優(yōu)化

Kernel典型的修改主要有以下:

  • 簡單:通過在 cmdline 中添加 quiet 來減少控制臺消息
  • 適度:通過移除驅(qū)動程序、文件系統(tǒng)、子系統(tǒng)來精簡內(nèi)核,從減少內(nèi)核解壓或加載的時間
  • 適度:通過移除未使用的硬件接口精簡設(shè)備樹
  • 棘手:開始優(yōu)化行為不良的驅(qū)動程序,這是一個相對復(fù)雜和困難的任務(wù)。優(yōu)化驅(qū)動程序可以提高其性能、穩(wěn)定性和兼容性,從而改善系統(tǒng)的整體表現(xiàn)。然而,如果驅(qū)動程序的行為不良,例如出現(xiàn)崩潰、卡頓或沖突等問題,那么進(jìn)行優(yōu)化就會變得更加棘手和挑戰(zhàn)。這需要深入分析和修復(fù)驅(qū)動程序的問題,調(diào)整其代碼和算法,以使其更加高效和可靠。
  • 使用Bootgraph分析內(nèi)核啟動的調(diào)用時間,移除花費(fèi)時間長的驅(qū)動和優(yōu)化需要使用的驅(qū)動

總之優(yōu)化還算是一項(xiàng)蠻復(fù)雜的項(xiàng)目,我們此次主要從以下幾點(diǎn)優(yōu)化:

  • 去掉kernel的打印等級,需要到內(nèi)核源碼下屏蔽掉log屬性和到uboot源碼下把log等級升高,內(nèi)核修改如下:

Uboot修改如下:

  • 關(guān)掉kernel不需要的一些外設(shè)資源,縮小內(nèi)核大小(需要根據(jù)自己的情況來進(jìn)行修改)

可以到設(shè)備樹中屏蔽掉一些不需要的接口和到內(nèi)核配置文件中屏蔽掉一些不需要的驅(qū)動配置,例如:

  • 使用Bootgraph分析內(nèi)核啟動的調(diào)用時間,移除花費(fèi)時間長的驅(qū)動和優(yōu)化需要使用的驅(qū)動。

首先需要在uboot加上時間戳和init debug調(diào)用:

setenv bootargs 'rw rootwait earlycon root=/dev/mmcblk0p2 printk.time=1 initcall_debug=1'

然后啟動內(nèi)核,采集啟動log,如下:

dmesg > boot-kernel.log

返回內(nèi)核源碼目錄,進(jìn)入內(nèi)核源碼scripts目錄,只需下面命令,生成直觀圖形,如下:

./bootgraph.pl boot-kernel.log > boot-kernel.svg

然后打開boot.svg查看花費(fèi)時間最大的驅(qū)動調(diào)用,沒用的就關(guān)閉,需要用的就優(yōu)化。

最后編譯以及更新內(nèi)核即可。

5.1.4. 文件系統(tǒng)優(yōu)化

MYD-YG2LX的文件系統(tǒng)是基于yocto構(gòu)建的,關(guān)于yocto如何構(gòu)建可以參考《MYD-YG2LX_Linux軟件開發(fā)指南》的3.0章節(jié)。

文件系統(tǒng)主要使用下面這3個命令就可以找到花費(fèi)時間最多的服務(wù),然后可以根據(jù)實(shí)際情況優(yōu)化。當(dāng)然也可以把所有的服務(wù)以圖形的形式表現(xiàn)出來,這樣更加直觀,采用systemd-analyze plot > boot.svg 可以把每個服務(wù)啟動順序和消耗時間顯示出來,針對這些服務(wù),移除掉不需要的或者調(diào)整服務(wù)之間的啟動順序。

systemctl list-unit-files --state=enabled #查看所有開機(jī)自啟的服務(wù)
systemd-analyze blame #查看服務(wù)的初始化時間
systemd-analyze critical-chain #查看啟動花費(fèi)時間最多的

5.1.5. 啟動測試

經(jīng)過以上的優(yōu)化后可以打包一個sd卡刷機(jī)包并刷到板子的emmc,關(guān)于如何打包可以參考《MYD-YG2LX_Linux軟件開發(fā)指南》的4.3章節(jié),最后再啟動測試,執(zhí)行systemd-analyze即可看到啟動時間,效果如下:

米爾科技

米爾科技

米爾電子,是一家專注于嵌入式處理器模組設(shè)計(jì)、研發(fā)、生產(chǎn)和銷售于一體的國家級高新技術(shù)企業(yè),也被評為專精特新企業(yè)。米爾電子深耕嵌入式領(lǐng)域10多年,致力于為企業(yè)級客戶提供基于ARM、FPGA、RISC-V和AI等各種架構(gòu),穩(wěn)定可靠的處理器模組,滿足客戶大批量產(chǎn)品應(yīng)用部署的需求,同時為客戶提供產(chǎn)品定制設(shè)計(jì)、行業(yè)應(yīng)用解決方案和OEM的一站式服務(wù)。

米爾電子,是一家專注于嵌入式處理器模組設(shè)計(jì)、研發(fā)、生產(chǎn)和銷售于一體的國家級高新技術(shù)企業(yè),也被評為專精特新企業(yè)。米爾電子深耕嵌入式領(lǐng)域10多年,致力于為企業(yè)級客戶提供基于ARM、FPGA、RISC-V和AI等各種架構(gòu),穩(wěn)定可靠的處理器模組,滿足客戶大批量產(chǎn)品應(yīng)用部署的需求,同時為客戶提供產(chǎn)品定制設(shè)計(jì)、行業(yè)應(yīng)用解決方案和OEM的一站式服務(wù)。 收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

米爾電子,是一家專注于嵌入式處理器模組設(shè)計(jì)、研發(fā)、生產(chǎn)和銷售于一體的國家級高新技術(shù)企業(yè),也被評為專精特新企業(yè)。米爾電子深耕嵌入式領(lǐng)域10多年,致力于為企業(yè)級客戶提供基于ARM、FPGA、RISC-V和AI等各種架構(gòu),穩(wěn)定可靠的處理器模組,滿足客戶大批量產(chǎn)品應(yīng)用部署的需求,同時為客戶提供產(chǎn)品定制設(shè)計(jì)、行業(yè)應(yīng)用解決方案和OEM的一站式服務(wù)。 米爾英文簡稱“MYIR”,是“Make Your Idea Real”第一個大寫字母的縮寫。我們的理念是“專業(yè)服務(wù)助力客戶成功”,目前米爾已通過專業(yè)高效的服務(wù),幫助全球數(shù)萬家企業(yè)的產(chǎn)品成功上市。