《洛佳-组件化驱动、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 部分什么是组件化驱动?运用生命周期、可变性等最新的编程语言理论成果,构造适应开发需求的驱动程序。可结合过程宏等工程设计,提高开发效率。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!