《洛佳-組件化驅動、ROM運行環境與RustSBI_20230607001445.pdf》由會員分享,可在線閱讀,更多相關《洛佳-組件化驅動、ROM運行環境與RustSBI_20230607001445.pdf(21頁珍藏版)》請在三個皮匠報告上搜索。
1、第三屆中國第三屆中國RustRust開發者大會開發者大會組件化驅動、ROM運行環境與RustSBI洛佳華中科技大學 網絡空間安全學院2023年6月本次演講關于我筆名洛佳華中科技大學網絡空間安全學院研一在讀(導師:周威老師)研究方向:物聯網安全、系統安全熱愛開源,樂于嘗試新技術RustSBI項目維護者致力于向科研、教學和產業界推廣Rust語言汲取Rust嵌入式和操作系統生態經驗,總結而成的新一代驅動開發方法。動、靜態基地址結合,高靈活性;一次開發,同時復用于嵌入式、固件和內核中。#組件化驅動合理利用嵌入式、桌面和服務器芯片片內ROM代碼,構造零開銷的運行環境。進一步地,可完成安全引導、安全鏡像分
2、發和通常的嵌入式開發等功能。#ROM運行環境#2023年的RustSBI作為RISC-V SBI固件的RustSBI,2023年將與UEFI、LinuxBoot擦出火花。在驅動、環境和SBI接口的基礎上,提供快速實現具體引導流程的解決方案。目錄組件化驅動第 01 部分什么是組件化驅動?運用生命周期、可變性等最新的編程語言理論成果,構造適應開發需求的驅動程序??山Y合過程宏等工程設計,提高開發效率。2 1 世 紀 的 驅 動 程 序同系列芯片可共用驅動,同系列外設驅動可復用。對接業界及開源成熟標準,新芯片系統開箱即用,與成熟組件自由組合。高 可 復 用、生 態 融 合動、靜態基地址結合,零開銷抽象
3、。只開發一次,同時運用于嵌入式、固件和操作系統生態中。輕松構造測試框架,快速驗證組件。靈 活、高 效、低 成 本從基礎算法到文件、網絡,操作系統的各個部分可拆為組件。靈活組合組件,構成符合應用需求的組件化操作系統。系 統 軟 件 開 發 新 模 式組 件 化驅 動組件化驅動的組成方法寄 存 器 表 示外 設 功 能抽 象功 能成 熟 開 源 標 準 的 抽 象 設 計適配embedded-hal等外設功能標準抽象面 向 功 能 的 外 設 結 構聯合所有權、泛型等,暴露外設所有功能外 設 及 其 寄 存 器 表 示封裝寄存器、位域表示和數據結構分享性外設:以GPIO為例從前級環境獲取所有權,如
4、從ROM運行環境的#entry獲得;配置GPIO狀態后,只有對應外設類型允許的操作函數能通過編譯,否則拒絕編譯,避免不安全行為;開源標準抽象的功能,使用抽象規定的調用方法。本芯片外設專屬的功能也可通過專有函數使用;用戶代碼簡短易懂,容易編寫和調試,降低開發成本。*BL808組件化驅動操作GPIO按鈕和燈組件化外設的分類和設計方法通 用 連 接 外 設UART、SPI和I2C等,通過互斥IO引腳劃分資源,抽象接口,使用片外外設支持庫高 速 板 級 通 信DDR、PSRAM等,結合控制器選擇和輸入合適的參數,用于準備后續啟動過程多 媒 體 外 設MIPI、HDMI、DisplayPort和音頻連接
5、等,與對應的功能、電源外設共同設計無 線 連 接 外 設Wi-Fi基帶、藍牙、UWB等,合理編寫頻域、功率等軟件限制,結合開源協議棧A I 加 速 外 設包括自研AI核、核顯和向量擴展等,編寫專用驅動后,對接常用軟件框架中 斷 控 制 器統一編寫同一IP核或SoC設計的控制器支持,填入常量泛型,即可用于運行環境ROM運行環境第 02 部分裸機和引導程序的ROM階段高級語言環境初始化bss段、data段,加載棧寄存器,構成高級語言運行的最小環境生成鏡像結構外設和時鐘提供具備所有權的外設列表,提供ROM初始化完成的時鐘配置編譯時生成鏡像頭,通常包含處理器配置、時鐘和閃存配置等部分#entry 過程
6、宏過程宏是衛生宏,完成語法樹間的轉換,此處用于將main函數轉換為固件需要的入口函數。包含ABI轉換、檢查參數等步驟。使用過程宏時,同時使用對應包中的start初始化代碼。start代碼無需由用戶編寫,而是包含在宏生成的輸出代碼中。編譯即可獲得包含鏡像頭的固件包,這是傳統開發方法不具備的功能。多核異構芯片的鏡像融合(以BL808為例)部 分 固 件 調 試首先編譯程序為單核固件,再融合三個固件為多核。單核固件可獨立運行,易于按處理器核單獨劃分和調試。融 合 規 則若三個不同固件中鏡像頭的閃存配置、時鐘配置不同,或使用的CPU核有交叉,則拒絕合并。否則,融合為新的鏡像頭,再導出鏡像。R O M
7、多 核 啟 動直接使用ROM機制開啟所有三個核,并加載相關的固件。相比額外引導程序而言,節省引導鏈級數,增加安全性和效率。2023年的RustSBI第 03 部分RustSBI軟件架構更新RISC-V SBI可運用于機器態和虛擬化的宿主態,此時RustSBI實現應為虛擬機提供電源、核管理等功能。嵌套虛擬化存在時,RustSBI實現應當為內部虛擬機軟件模擬H指令集。在這方面,Dramforever的項目1提供了很好的例子。LARVa2項目是固件充當模擬器的例子,這里RustSBI被編譯到RISC-V之外的指令集。YdrMaster設計的sbi-testing3測試框架可輕松檢查SBI實現的正確性
8、。1 https:/ LARVa:https:/ sbi-testing:http:/ SBI和廠商專有的SBI擴展引導啟動可選內核態接口包括UEFI或LinuxBoot,生態豐富完善,快速對比解決方案RISC-V上的快速陷入通道RISC-V并未強制規定陷入棧的內容,它的上下文切換過程可定制,若給予上下文切換更多的信息,它的性能就可得到進一步提升上下文調用時先保存部分寄存器,讓高級語言判斷是否進入完整流程,或給定需要設置的寄存器數量盡量減少上下文切換對空間局部性的破壞向量化陷入:硬件取向量,分流mtime、msoft等中斷過程和異常過程,進一步細化通路,明確上下文保存需求不同等級的上下文保存到不同結構體中,地址存于突發寄存器,快速處理程序可為完整處理程序提供參數項目地址:https:/ UEFI,RustSBI準備好SBI環境。RustSBI充當至關重要的安全層,并準備好S態軟件的環境UEFI部分運行在S態對LinuxBoot,RustSBI參與準備好rootfs和最小Linux環境的代碼中。一個優秀的例子是Oreboot1RustSBI原型設計系統將會提供此類環境準備軟件后續生態的固件也可復用RustSBI編寫的靜態檢查等相關工具。1 https:/ you!