使用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的输出,以观察新增代码的运行情况。
阅读更多

使用Rust在树莓派上编写操作系统 - 00 - 前言

在我们开始之前

以下文本是文档的1:1副本,会出现在每章教程所对应的内核主要源文件的顶部。文档描述了相应源文件的结构,并尝试解释该实现背后的原理。请阅读该文档,以熟悉将会在教程中遇到的内容,文档将帮助你更好地浏览代码,并理解每一章教程之间的递进关系。

另请注意,以下文本将引用第一批教程中尚不存在的源文件(如**/memory.rs)或函数。随着教程的推进,它们将逐渐被添加。

玩得开心!

阅读更多

使用树莓派为音响添加AirPlay功能

今年618大出血买了音响功放,接口很多,但是就是没用接入WiFi当网络音响的功能,也就是苹果的AirPlay或安卓的DLNA/UPnP。虽然天逸已经提供了安卓APP,但是目前并没有苹果的APP,不过好在我有空闲的树莓派,可以将功放升级成AirPlay设备。

阅读更多
Your browser is out-of-date!

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

×