標籤:system rpm 調用 ast linu 生命週期 blog manage .com
xapp1078建立於2013年2月。文章描述了啟動運行兩個核心的方法,兩個cpu核心分別運行linux和bare-metal。已經過去四年,所以稱其為傳統的AMP方案。
該方案的關鍵過程:
(1)修改FSBL源碼,使其能夠load多個elf和bit檔案,直到遇到標誌Load地址後停止load,返回運行u-boot。
(2)通過設定檔image.bif將core0的u-boot.elf和core1的bare-metal.elf檔案還有用於load停止的dummy bin檔案都包含進來,然後運行bootgen產生BOOT.BIN。
(3)雙核啟動後,core1處於wfe狀態。core0首先向將bare-metal.elf的運行地址寫到WFE loop的檢測地址,然後sev或者中斷喚醒core1,之後core1跳轉運行bare-metal.elf。core0從檔案系統中啟動linux app,與core1進行通訊。
ug1186建立於2017年5月,文章介紹了在zynq上使用OpenAMP架構實現AMP的方法,兩個cpu核心分別運行linux和bare-metal。稱其為OpenAMP方案。master linux CPU核心通過remoteproc API來控制管理remote核心的生命週期(life cycle management LCM),為remote processor分配系統資源和建立virtIO裝置。通過RPMsg API來實現不同cpu核心上啟動並執行軟體之間的通訊。
該方案的關鍵過程:
(1)基於remoteproc和RPMsg來設計bare-metal.elf程式。
(2)bare-metal.elf加入到petalinux工程中,後續remoteproc在linux的filesystem中調用bare-metal.elf。
(3)配置Kernel相應的options來配合OpenAMP工作。
對比傳統的Xilinx AMP方案和OPENAMP方案-xapp1078和ug1186