今年618大出血买了音响功放,接口很多,但是就是没用接入WiFi当网络音响的功能,也就是苹果的AirPlay或安卓的DLNA/UPnP。虽然天逸已经提供了安卓APP,但是目前并没有苹果的APP,不过好在我有空闲的树莓派,可以将功放升级成AirPlay设备。
本文将探讨协作式多任务处理以及Rust的async/await特性。我们将详细研究async/await在Rust中的工作方式,包括Future
trait的设计,状态机转换和pinning(译注:内存固定)。然后,我们通过创建异步键盘任务和基本执行器,使得内核具备对async/await的基本支持。
本文将展示如何从零编写堆分配器,并讨论不同的分配器设计,包括线性分配,链表分配和固定大小块分配。我们将为这三种分配器分别创建一个可用于内核的基本实现。
本文将为内核添加对堆分配的支持。首先将介绍动态内存机制,并展示Rust借用检查器如何防止常见的分配错误。然后将实现Rust的基础分配器接口,创建一个堆内存区域,并编写一个分配器crate。在本文结束时,内核将能够支持Rust内置alloc
crate中的所有分配和收集类型。
本文将展示如何在内核中实现对内存分页的支持。我们首先将探讨使内核可以访问物理页表帧的各种技术,并讨论它们各自的优缺点。然后,实现地址转换函数和创建新映射函数。
在这篇文章中,我们将介绍分页机制,这是一种非常常见的内存管理方案,我们还将会在操作系统中实现它。本文还将解释为什么需要内存隔离、分段如何工作、什么是虚拟内存以及分页如何解决内存分段问题。此外,还探讨了x86_64架构上的多级页表的布局。
在这篇文章中,我们将设置可编程中断控制器,以便将硬件中断正确的转发到CPU。为了处理这些中断,我们将新条目添加到中断描述符表中,就像我们对异常处理程序所做的一样。我们将学习如何获取定期的定时器中断以及如何从键盘获取输入。
本文将详细探讨双重故障异常,这种异常是在CPU无法调用异常处理程序时发生的。通过处理此异常,我们能够避免导致系统重置的致命三重故障。为了能够在任何情况下防止三重故障,我们还将建立一个中断栈表,以便在单独的内核栈上捕获双重故障。
本篇文章将探讨在no_std
环境中,可执行文件的单元和集成测试。我们将利用Rust对自定义测试框架的支持来在内核中执行测试函数。为了输出QEMU的结果,我们将使用QEMU和bootimage
工具的其他功能。
Update your browser to view this website correctly.&npsb;Update my browser now