系統啟動(dòng)時(shí)間優(yōu)化方案--基于米爾MYD-YG2LX開(kāi)發(fā)板

發(fā)布時(shí)間:2025-5-9 19:09    發(fā)布者:swiftman
關(guān)鍵詞: 瑞薩 , G2L , 嵌入式 , 開(kāi)發(fā)板 , 米爾
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è)都得到廣泛的應用。
米爾基于瑞薩RZ/G2L開(kāi)發(fā)板
本文主要介紹基于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.硬件資源
  • USB-TTL調試串口線(xiàn)一根
  • MYD-YG2LX開(kāi)發(fā)板一塊
  • 12V電源適配器一個(gè)


3.軟件資源
  • Linux虛擬機
  • 米爾提供的SDK交叉工具鏈
  • Linux5.10.83


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í)間。

  1. static void cpu_cpg_setup(void)
  2. {
  3. while ((mmio_read_32(CPG_CLKSTATUS) & CLKSTATUS_DIVPL1_STS) != 0x00000000);
  4. mmio_write_32(CPG_PL1_DDIV, PL1_DDIV_DIVPL1_SET_WEN | PL1_DDIV_DIVPL1_SET_1_1);
  5. while ((mmio_read_32(CPG_CLKSTATUS) & CLKSTATUS_DIVPL1_STS) != 0x00000000);
  6. }
  7. void cpg_early_setup(void)
  8. {
  9.   cpu_cpg_setup();
  10. cpg_ctrl_clkrst(&early_setup_tbl[0], ARRAY_SIZE(early_setup_tbl));
  11. }
復制代碼

最后編譯TFA以及更新即可。
5.1.2. Uboot優(yōu)化正常的啟動(dòng)log如下,我們需要對這部分進(jìn)行優(yōu)化,優(yōu)化可以從下面3個(gè)點(diǎn)出發(fā)。

  • 裁剪uboot,減少u(mài)boot大小。
MYD-YG2LX平臺的2G DDR配置文件在configs/myc-rzg2l_defconfig,1G DDR的配置文件在configs/myc-rzg2l_ddr1gb_defconfig,可以在這個(gè)配置文件中屏蔽掉一些自己不需要的功能,這個(gè)需要根據實(shí)際情況刪除不需要的功能,例如:

  • 移除bootdelay的倒計時(shí)時(shí)間
bootdelay一般默認都是2-3s,移除可以直接修改include/configs/myc-rzg2l.h文件,例如:

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

最后編譯與更新uboot即可。
5.1.3. Kernel優(yōu)化Kernel典型的修改主要有以下:
  • 簡(jiǎn)單:通過(guò)在 cmdline 中添加 quiet 來(lái)減少控制臺消息
  • 適度:通過(guò)移除驅動(dòng)程序、文件系統、子系統來(lái)精簡(jiǎn)內核,從減少內核解壓或加載的時(shí)間
  • 適度:通過(guò)移除未使用的硬件接口精簡(jiǎn)設備樹(shù)
  • 棘手:開(kāi)始優(yōu)化行為不良的驅動(dòng)程序,這是一個(gè)相對復雜和困難的任務(wù)。優(yōu)化驅動(dòng)程序可以提高其性能、穩定性和兼容性,從而改善系統的整體表現。然而,如果驅動(dòng)程序的行為不良,例如出現崩潰、卡頓或沖突等問(wèn)題,那么進(jìn)行優(yōu)化就會(huì )變得更加棘手和挑戰。這需要深入分析和修復驅動(dòng)程序的問(wèn)題,調整其代碼和算法,以使其更加高效和可靠。
  • 使用Bootgraph分析內核啟動(dòng)的調用時(shí)間,移除花費時(shí)間長(cháng)的驅動(dòng)和優(yōu)化需要使用的驅動(dòng)


總之優(yōu)化還算是一項蠻復雜的項目,我們此次主要從以下幾點(diǎn)優(yōu)化:
  • 去掉kernel的打印等級,需要到內核源碼下屏蔽掉log屬性和到uboot源碼下把log等級升高,內核修改如下:


Uboot修改如下:

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

可以到設備樹(shù)中屏蔽掉一些不需要的接口和到內核配置文件中屏蔽掉一些不需要的驅動(dòng)配置,例如:

  • 使用Bootgraph分析內核啟動(dòng)的調用時(shí)間,移除花費時(shí)間長(cháng)的驅動(dòng)和優(yōu)化需要使用的驅動(dòng)。

首先需要在uboot加上時(shí)間戳和init debug調用:
  1. setenv bootargs 'rw rootwait earlycon root=/dev/mmcblk0p2 printk.time=1 initcall_debug=1'
復制代碼

然后啟動(dòng)內核,采集啟動(dòng)log,如下:
  1. dmesg > boot-kernel.log
復制代碼

返回內核源碼目錄,進(jìn)入內核源碼scripts目錄,只需下面命令,生成直觀(guān)圖形,如下:
  1. ./bootgraph.pl boot-kernel.log > boot-kernel.svg
復制代碼

然后打開(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)順序。
  1. systemctl list-unit-files --state=enabled #查看所有開(kāi)機自啟的服務(wù)
  2. systemd-analyze blame #查看服務(wù)的初始化時(shí)間
  3. systemd-analyze critical-chain #查看啟動(dòng)花費時(shí)間最多的
復制代碼


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í)間,效果如下:

本文地址:http://selenalain.com/thread-887061-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页