洛佳 组件化驱动、ROM运行环境与RustSBI第三届中国Rust开发者大会 组件化驱动、ROM运行环境与RustSBI 洛佳 华中科技大学 网络空间安全学院 2023年6月 本次演讲…… 关于我…… • 笔名洛佳 • 华中科技大学网络空间安全学院研一 在读(导师:周威老师) • 研究方向:物联网安全、系统安全 • 热爱开源,乐于尝试新技术 • RustSBI项目维护者 • 致力于向科研、教学和产业界推广 Rust语言 组件化驱动 合理利用嵌入式、桌面和服务器芯片片内 ROM代码,构造零开销的运行环境。进一 步地,可完成安全引导、安全镜像分发和 通常的嵌入式开发等功能。 # ROM运行环境 # 2023年的RustSBI 作为RISC-V SBI固件的RustSBI,2023年 将与UEFI、LinuxBoot擦出火花。在驱 动、环境和SBI接口的基础上,提供快速 实现具体引导流程的解决方案。 目录 组件化驱动 功 能 的 外 设 结 构 联合所有权、泛型等,暴露外设所有功能 外 设 及 其 寄 存 器 表 示 封装寄存器、位域表示和数据结构 分享性外设:以GPIO为例 • 从前级环境获取所有权,如从ROM 运行环境的#[entry]获得; • 配置GPIO状态后,只有对应外设类 型允许的操作函数能通过编译,否则 拒绝编译,避免不安全行为; • 开源标准抽象的功能,使用抽象规定 的调用方法。本芯片外设专属的功能0 码力 | 21 页 | 3.12 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 12.5. 处理环境变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 13.1. 闭包:可以捕获其环境的匿名函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 是内置的依赖管理器和构建工具,它能轻松增加、编译和管理依赖,并使依赖在 Rust 生态系统中保持一致。 • Rustfmt 格式化工具确保开发者遵循一致的代码风格。 • rust-analyzer 为集成开发环境(IDE)提供了强大的代码补全和内联错误信息功能。 通过使用 Rust 生态系统中丰富的工具,开发者在编写系统级代码时可以更加高效。 学生 Rust 适合学生群体,也适合有兴趣学习系统概念的人。许多人通过0 码力 | 562 页 | 3.23 MB | 25 天前3
Rust 程序设计语言简体中文版采用测试驱动开发完善库的功能 ................................................................................ 293 12.5. 处理环境变量 ................................................................................................ 中的函数式语言功能:迭代器与闭包 ...................................................................... 318 13.1. 闭包:可以捕获其环境的匿名函数 ............................................................................ 319 13.2. 使用迭代器处理元素序列 是内置的依赖管理器和构建工具,它能轻松增加、编译和管理依赖,并使依赖在 Rust 生态系统中保持一致。 • Rustfmt 格式化工具确保开发者遵循一致的代码风格。 • Rust Language Server 为集成开发环境(IDE)提供了强大的代码补全和内联错误信息功 能。 通过使用 Rust 生态系统中丰富的工具,开发者在编写系统级代码时可以更加高效。 学生 Rust 适合学生群体,也适合有兴趣学习系统概念的人。许多人通过0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust HTTP 协议栈在终端通信场景的实践 - 胡凯Conf 2022 – 2023, Shanghai, China Rust 与 HTTP 协议 以上 Rust HTTP 库主要支持的场景特点: ➢ 并发量、吞吐量需求较高 ➢ 网络环境稳定 ➢ 不太需要体现交互界面 ➢ 不太关注资源使用 比较适合构建浏览器、大型 WEB 服务器等。 终端 HTTP 通信场景浅析 Part 03 探讨终端场景下 HTTP 协议的主要使用场景,以及需要思考的问题 浏览商品页面等。 Rust China Conf 2022 – 2023, Shanghai, China 终端 HTTP 协议场景浅析 终端的网络环境特点: ➢ 弱网环境:移动端网络整体处于弱网环境,网络时延较高。 ➢ 网络不稳定:移动端网络经常受到用户或者环境影响而产生波动。 ➢ 流量限制:移动端网络流量受到用户的限制。 ➢ 设备资源有限:移动端设备CPU、内存等资源较少。 Rust China 用户设置。 ➢ 暂停和重试:网络传输需要提供给用户控制启动和暂停的控制手段。 ➢ 功耗:网络传输需要消耗终端设备资源,需要尽可能平衡功耗和传输速度。 ➢ 性能表现:网络传输不能影响到和用户直接交互的前台应用的表现。 Rust 与终端 HTTP 通信场景结合 Part 04 我们当前结合 Rust 和终端通信场景的实践的简单介绍 Rust China Conf 2022 – 2023,0 码力 | 26 页 | 1.25 MB | 1 年前3
Rust 语言学习笔记................................................................................. 61 6.1.2 闭包捕获周围环境的方式 ....................................................... 62 6.1.3 函数指针........................ 的包管理系统非常明显地体现了它的与众不同。 1.3 版本管理工具 作为一门更新快速的语言,rust 开发了专用的版本管理工具 rustup。 对于 go 而言,不需要对这些东西进行了解,只需要下载包安装到环境变量中即 可。 而 rust 的开发中经常会遇到配置不同的 toolchain 等需求,因此官方开发了 rustup。rustup 功能如下: 1.管理安装多个官方版本的 Rust 二进制程序。 编写编译器插件时用,用于定义编译器插件的入口函数。 start - 把这个函数作为入口函数(Entry Point),改写 start language item。 test - 指明这个函数为单元测试函数,在非测试环境下不会被编译。 should_panic - 指明这个单元测试函数必然会 panic。 cold - 指明这个函数很可能是不会被执行的,因此优化的时候特别对待它。 5.1.20 码力 | 117 页 | 2.24 MB | 1 年前3
Comprehensive Rust(简体中文) 20241237.1.2 调用 Rust . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 37.2 与 C++ 交互 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 37.2.1 桥接模块 . . . . . 程,并确保所有人都能获得一致的体验。 我们仍然建议你安装 Cargo:它有助于你更轻松地完成练习。在最后一天,我们要做一个综合的练习,向 你展示如何使用依赖项,因此你需要安装 Cargo。 本课程中的代码块是完全交互式的: fn main() { println!("Edit me!"); } You can use Ctrl + Enter to execute the code when focus 可以通过修改 Cargo.toml 为项目添加依赖项。当运行 cargo 命令时,系统会自动下载和编译缺 失的依赖项。 尽量鼓励全班学员安装 Cargo 并使用本地编辑器。这能使他们拥有常规的开发环境,让工作变得更加轻 松。 19 第 I 章 第一天:上午 20 第 3 部分 欢迎来到第一天 今天是学习 Comprehensive Rust 的第一天。我们会涉及很多内容: • Rust0 码力 | 359 页 | 1.33 MB | 10 月前3
王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验产品功能演示 • 应⽤场景概览 项⽬介绍 • 概念 • 架构设计 • 技术实现 设计与实现 ⼤纲 Amphitheatre 云开发环境(Cloud Development Environment),在云端即时启动新 的、⾃动化的开发环境,并在⼏秒钟内开始开发。就像 docker-compose up 或 docker build && kubectl apply 项⽬介绍 开发 开发⼯程师需要在本机安装各种编程语⾔的运⾏时和相关的框 架以及库,随着业务规模的增⻓,多语⾔多版本的维护和管理 变得越来越复杂。 技术栈杂多 研发流程⻓达⼗⼏个步骤:安装开发软件、配置环境、克隆代 码、开发、本地调试、提交代码、编译构建、⾃动化测试、部 署到测试环境、测试验收、合并代码到主线、部署到⽣产环 境… 研发流程繁⻓ 起因:开发者之痛 为了部署测试,不仅要学习容器化、Kubernetes,还要申请资 源安装配置各项中间件,学习成本⾼,费⼼费⼒ Outer Loop 戏单(正在测试中的环境) 1 排练(申请环境) 2 替换(切换版本) 3 演出(运⾏) 搭档 适⽤于 29+ 种 编程语⾔ 您可以在⼀个地⽅测量项⽬中所有 语⾔以及领域中所有项⽬的可靠 性、安全性和可维护性。 从语⾔到语⾔,我们为您提供有凝 聚⼒的体验和⼀致的指标集以及数 百条静态代码分析规则。 ⽆需配置环境,⽀持多种编程语⾔和框架 Kayn Sona0 码力 | 34 页 | 10.81 MB | 1 年前3
Rust在物理引擎研发中的应用 崔汉青16 ns 1.8 Sphere – Sphere – coincide 7 ns 16 ns 2.3 Motphys 分布式物理引擎设计目标 0.02s内多次通信 苛刻的低延迟要求 高速内网环境下的线 性扩展 – 新增结点的 网络开销恒定 高可用和负载均衡 Message的RTT 可测量 Motphys 分布式物理 引擎网络架构 derive serde vs protobuf 分布式实时物理技术 10万人 最高同时在线人数超过 12万平米 模拟场地面积达到 全球首个 基于云原生渲染和 物理引擎的应用案例 物理建模 全部用户之间、用户与道具 和场景间均可实时物理交互 横向扩展能力 单个节点的计算复杂度和 网络通信复杂度,不会随 集群总规模的上升而上 升,集群可线性扩容 单机架构 同屏大规模物理量模拟 单机渲染帧率3fps VS Motphys 分布式架构0 码力 | 22 页 | 1.18 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前,算法和数据结构就已经存在于世界的各个角落。早期的算法相对简单,例如古 代的计数方法和工具制作步骤等。随着文明的进步,算法逐渐变 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 第 16 章 附录 370 16.1 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 16.2 一起参与创作 . . . 与阅读代码相比,编写代码的过程往往能带来更多收获。动手学,才是真的学。 第 0 章 前言 www.hello‑algo.com 6 图 0‑3 运行代码示例 运行代码的前置工作主要分为三步。 第一步:安装本地编程环境。请参照附录所示的教程进行安装,如果已安装,则可跳过此步骤。 第二步:克隆或下载代码仓库。前往 GitHub 仓库。如果已经安装 Git ,可以通过以下命令克隆本仓库: git clone https://github0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.1.0 Rust版计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前,算法和数据结构就已经存在于世界的各个角落。早期的算法相对简单,例如古 代的计数方法和工具制作步骤等。随着文明的进步,算法逐渐变 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 第 16 章 附录 371 16.1 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 16.2 一起参与创作 . . . 与阅读代码相比,编写代码的过程往往能带来更多收获。动手学,才是真的学。 第 0 章 前言 hello‑algo.com 6 图 0‑3 运行代码示例 运行代码的前置工作主要分为三步。 第一步:安装本地编程环境。请参照附录所示的教程进行安装,如果已安装,则可跳过此步骤。 第二步:克隆或下载代码仓库。前往 GitHub 仓库。如果已经安装 Git ,可以通过以下命令克隆本仓库: git clone https://github0 码力 | 388 页 | 18.50 MB | 1 年前3
共 29 条
- 1
- 2
- 3













