PingCap的Rust训练课程2:日志结构文件I/O

前言

任务:创建一个键/值存储程序,能够从命令行访问,支持持久化

目标

  • 编写健壮的错误和异常处理
  • 使用serde进行序列化
  • 使用标准文件API将数据作为日志写入磁盘
  • 从磁盘读取键/值数据的状态
  • 将内存中的索引键映射在磁盘的对应值上
  • 定期压缩日志以删除过期数据

关键词:日志结构文件I/O、bitcask、failurecrate、Read/Writetrait、serdecrate。

扩展练习:尝试使用structoptcrate。

阅读更多

PingCap的Rust训练课程1:熟悉Rust工具链

前言

任务:在内存中创建一个能够接受命令行参数的键/值存储程序,且程序能够通过一些简单的测试。

目标

  • 安装Rust编译器和工具
  • 了解本课程中使用的项目结构
  • 使用cargo init/run/test/clippy/fmt
  • 了解如何从crates.io查找、导入crates
  • 为键值存储程序定义恰当的数据类型

关键词:测试、clapcrate、了解CARGO_VERSION等值、熟悉clippyrustfmt工具。

扩展练习:尝试使用structoptcrate。

阅读更多

使用Rust在树莓派上编写操作系统 - 07 - 时间戳

概述

  • 用SD卡上的镜像启动树莓派感觉很棒,但如果对每个新的二进制文件,都需要手动将其放在SD卡上就会非常麻烦。因此,本章我们将编写一个链式加载器
  • 这是我们最后一次手动拷贝镜像到SD卡上。后面的每章教程都会在Makefile中提供一个chainboot目标,以便通过UART加载内核。
  • 我们为定时器硬件添加抽象,并在_arch/aarch64中为ARM架构实现了定时器。
  • 新的计时器函数用于给UART打印的内容添加时间戳,并消除了GPIO设备驱动程序中由循环产生的延迟,从而提高精确性。
  • 增加了一个warn!()宏。
阅读更多

《腰,星际,健身房》


我那时候还太萌新,不知道所有母胎原装的部件,早已在暗中标好了使用期限。

——某猛男。

阅读更多

使用Rust在树莓派上编写操作系统 - 06 - UART的链式加载

概述

  • 用SD卡上的镜像启动树莓派感觉很棒,但如果对每个新的二进制文件,都需要手动将其放在SD卡上就会非常麻烦。因此,本章我们将编写一个链式加载器
  • 这是我们最后一次手动拷贝镜像到SD卡上。后面的每章教程都会在Makefile中提供一个chainboot目标,以便通过UART加载内核。
阅读更多

使用Rust在树莓派上编写操作系统 - 05 - 驱动GPIO和UART

概述

  • 既然我们在上一章教程中已经准备好了基础设施——启用了安全全局变量——那么现在就可以为第一个真实设备添加驱动程序了。
  • 现在我们可以离开神奇的QEMU控制台,来使用真正的UART设备了,就像正经的嵌入式开发者那样。
阅读更多

使用Rust在树莓派上编写操作系统 - 03 - 奇巧hello world

概述

  • 引入全局print!() 宏以尽早实现“printf调试”。
  • 为了保证本章不至于过长,打印功能目前“滥用”了一个QEMU属性,以允许我们在未正确设置下使用树莓派的UART
  • 对如UART等真实硬件的使用,将在后续章节中逐步展开。
阅读更多

使用Rust在树莓派上编写操作系统 - 02 - 运行时初始化

概述

  • 本章扩展了boot.s,以首次调用Rust代码。在跳转到Rust之前,一些运行时的初始化工作已经完成。
  • 本章中被调用的Rust代码只能够通过调用panic!()宏来停止执行。
  • 仍旧是查看make qemu的输出,以观察新增代码的运行情况。
阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×