ESM8400是英創基于NXP i.MX8M Plus開發的4核Cortex-A53 64位高性能工控主板,主頻1.6GHz,同時包含了GPU、VPU、NPU。ESM8400接口資源豐富,支持雙千兆以太網、6串口、雙CAN總線接口、PCIe3.0、SPI、I2C等接口,支持LVDS、HDMI顯示。
可以支持的系統有Linux-6.6.23,Ubuntu-24.04,Debian 12以及Windows 10 IoT企業版操作系統,其中Linux-6.6.23,Ubuntu-24.04以及Debian 12系統可以通過專門的設置,來實現上電后的快速啟動。通過優化啟動時間的主板經過測試,從上電到用戶的程序啟動,能夠從12秒縮短到3.8秒左右。為了實現快速啟動,我們從三分方面來優化了啟動時間,分別是bootloader階段的啟動時間(即引導Linux內核啟動的階段),Linux內核啟動時間以及應用層服務啟動的時間。
bootloader階段的啟動時間
ESM8400主板是使用U-Boot作為bootloader,通常情況下U-Boot包含了SPL和U-Boot proper兩部分。SPL是一組可以放在CPU內部SRAM中運行的最小啟動代碼,主要負責初始化內存,以及讀取ATF和U-Boot proper到內存(DRAM)中。ATF負責加載ARM安全性相關的功能,這部分涉及的內容較多且復雜,這里就不詳細介紹了。U-Boot proper負責初始化部分外設,以及引導Linux Kernel啟動,它提供了靈活的方法加載和啟動 Linux 內核,并提供了一些常用的工具,可以通過命令行界面與主板進行交互。因此相比SPL來說U-Boot proper的體量更大,無法放在SRAM中,而需要放在內存中運行。整個流程如下圖所示:
這個階段采用的優化方案是通過SPL直接引導Linux Kernel啟動,省去了U-boot proper的讀取以及啟動時間,優化后的啟動流程如下:
Linux內核的啟動時間
Linux內核的啟動時間主要是通過兩點來優化。第一點是去掉了多余的打印信息,主板因為是通過115200波特率的串口終端打印,通過計算就可以得出大約每1ms能夠打印10個字節的數據,因此輸出得信息過多會占用相當長的時間。
第二點是利用Linux內核的模塊化設計,將用戶不需要使用到的功能精簡掉,這樣內核在啟動過程中,就會減少加載對應的驅動模塊,啟動時間自然就變快了。不過這部分的優化需要用戶和英創的工程師充分溝通,才能在保證不影響功能的情況下,將啟動時間最大程度的優化。
應用層服務啟動的時間
現在的Linux系統,包括各個發行版的Linux系統(包括Ubuntu和Debian),都采用的systemd來啟動服務,同樣的可以通過客戶的需求來精簡掉不需要的服務,或者調整優化啟動的順序,這樣可以保證讓用戶的應用程序盡快的啟動。
經過上面介紹的三個方面的優化,ESM8400主板的從上電到用戶程序的啟動時間能夠得到較大的提升,不過Linux內核的啟動時間和應用層服務的啟動時間還跟用戶所需的功能有一定的關系,如果實際使用中依賴的功能少,就意味著可以精簡掉的功能就更多,可以節約出更多的時間,下圖是做的一個基本測試,主要是優化了bootloader階段的啟動時間和應用層服務啟動的時間,Linux內核保持出廠默認配置沒有做進一步精簡:
可以看到從上電開始計算,到應用程序輸出第一條信息大約為3.8秒的時間。對比優化前的啟動時間12秒來說,有了三倍多的提升。
感興趣的用戶可以跟英創的工程師聯系,獲取此方案更多詳細的信息。
成都英創信息技術有限公司 028-8618 0660