合集-rCore

摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 rCore rCore官方交流群:735045051 嗨,这里是rCore入门之旅! 如果你对亲手打造一个 阅读全文
posted @ 2024-07-09 19:39 winddevil 阅读(1011) 评论(0) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 下载它 随便找个地方下载,如果官网下载速度过慢: 官网 B站 微信公众号 知乎 各大软件站 这里附上我使用 阅读全文
posted @ 2024-08-15 17:29 winddevil 阅读(444) 评论(0) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 Ubuntu下载 下载地址 Ubuntu系统下载 | Ubuntu 进入网站 点击绿色的下载按键 下载is 阅读全文
posted @ 2024-07-09 19:42 winddevil 阅读(465) 评论(0) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 rCore官方文档 实验环境配置 - rCore-Tutorial-Book-v3 3.6.0-alpha 阅读全文
posted @ 2024-07-09 19:43 winddevil 阅读(1132) 评论(2) 推荐(0)
摘要:因为每一个老嵌入式都喜欢使用他的老windows进行开发,因此我决定使用SSH来开发rust,这样也不用在虚拟机里边再装一个vscode. 参考博客 如何在windows下使用vscode连接linux虚拟机进行代码开发_windows vscode编辑linux文件-CSDN博客 Windows环 阅读全文
posted @ 2024-07-09 19:48 winddevil 阅读(443) 评论(0) 推荐(0)
摘要:作业1 略. 作业2 C语言程序 gcc编译 gcc -o main main.c 编译报错 成功产生异常 main.c: In function ‘main’: main.c:5:26: warning: division by zero [-Wdiv-by-zero] 5 | printf("1 阅读全文
posted @ 2024-07-09 19:48 winddevil 阅读(236) 评论(0) 推荐(0)
摘要:QEMU运行第一章代码 切换分支 git checkout ch1 detail git checkout ch1 命令是用来切换到名为 ch1 的分支或者恢复工作目录中的文件到 ch1 提交的状态 运行代码 cd os LOG=TRACE make run detail LOG=TRACE 是指定 阅读全文
posted @ 2024-07-09 19:49 winddevil 阅读(383) 评论(0) 推荐(0)
摘要:改造Rust hello world 移除println!宏 rustc添加对裸机的支持 rustup target add riscv64gc-unknown-none-elf detail rustup: 是Rust语言的工具链管理器,允许你安装和管理多个Rust版本以及相关工具。它还使切换编译 阅读全文
posted @ 2024-07-09 19:52 winddevil 阅读(656) 评论(0) 推荐(0)
摘要:了解QEMU 启动指令 qemu-system-riscv64 \ -machine virt \ -nographic \ -bios ../bootloader/rustsbi-qemu.bin \ -device loader,file=target/riscv64gc-unknown-non 阅读全文
posted @ 2024-07-09 19:53 winddevil 阅读(544) 评论(0) 推荐(0)
摘要:在[[08 内核第一条指令|上一节]]我们使用了编写entry.asm函数中编写了内核的第一条指令,但是我们使用的汇编.这里注意我们仍然是嵌入了这段asm代码到我们的rust代码之中,然后进行编译.但是即使连使用fn main都不被允许,因此我们如果希望使用rust来编写内核代码,因此我们最好为内核 阅读全文
posted @ 2024-07-09 19:53 winddevil 阅读(189) 评论(0) 推荐(0)
摘要:RustSBI的两个职责 它会在计算机启动时进行它所负责的环境初始化工作,并将计算机控制权移交给内核 在内核运行时响应内核的请求为内核提供服务 这里用不太确切的话表述一下,RustSBI作为介于内核和硬件之间的软件,要完成输出和关机,思路是内核需要调用RustSBI进行对硬件的控制的. 对于怎么对硬 阅读全文
posted @ 2024-07-09 19:54 winddevil 阅读(487) 评论(0) 推荐(0)
摘要:编程题 第一题 在homework文件夹下创建homework-1-1,使用cargo创建工程: cargo new getFileName 在src下创建file_name.rs文件: // /homework-1-1/getFileName/src/file_name.rs use std::f 阅读全文
posted @ 2024-07-09 19:54 winddevil 阅读(483) 评论(0) 推荐(0)
摘要:实验要求 实现分支:ch1 完成实验指导书中的内容并在裸机上实现 hello world 输出。 实现彩色输出宏(只要求可以彩色输出,不要求 log 等级控制,不要求多种颜色) 隐形要求 可以关闭内核所有输出。从 lab2 开始要求关闭内核所有输出(如果实现了 log 等级控制,那么这一点自然就实现 阅读全文
posted @ 2024-07-09 19:55 winddevil 阅读(319) 评论(0) 推荐(0)
摘要:题目要求 请学习 gdb 调试工具的使用(这对后续调试很重要),并通过 gdb 简单跟踪从机器加电到跳转到 0x80200000 的简单过程。只需要描述重要的跳转即可,只需要描述在 qemu 上的情况。 启动调试和监听的指令 使用[[010 基于 SBI 服务完成输出和关机#^fb8fca|之前学到 阅读全文
posted @ 2024-07-09 19:55 winddevil 阅读(248) 评论(0) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本章目的 保障系统安全 多应用支持 本章需要实现的新功能 构造包含操作系统内核和多个应用程序的单一执行程序 阅读全文
posted @ 2024-07-10 02:08 winddevil 阅读(272) 评论(0) 推荐(1)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 官方文档 仍然是一上来就丢出来的官方文档. 只摘抄了我觉得有意思的部分: 实现特权级机制的根本原因是应用程 阅读全文
posted @ 2024-07-14 14:46 winddevil 阅读(457) 评论(0) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 设计方法 了解了特权级机制,实际上如果要设计一个应用程序就需要保证它符合U模式的要求,不要去访问S模式下的 阅读全文
posted @ 2024-07-20 12:47 winddevil 阅读(774) 评论(1) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本章目的 实现批处理操作系统,每当一个应用程序执行完毕,都需要将下一个要执行的应用的代码和数据加载到内存. 阅读全文
posted @ 2024-07-23 20:41 winddevil 阅读(442) 评论(4) 推荐(0)
摘要:本节内容 因为risc-v存在硬件特权级机制,我们又要实现一个可以使得应用程序工作在用户级,使得操作系统工作在特权级.原因是要保证用户态的应用程序不能随意使用内核态的指令,要使用内核态的指令就必须通过操作系统来执行,这样有了操作系统的控制和检查,程序不会因为应用程序的问题导致整个操作系统都运行错误. 阅读全文
posted @ 2024-07-27 22:32 winddevil 阅读(883) 评论(0) 推荐(1)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 批处理操作系统的启动和运行流程 要想把本章实现的那些模块全部都串联在一起以实现运行一个批处理操作系统,回顾 阅读全文
posted @ 2024-07-30 16:24 winddevil 阅读(506) 评论(2) 推荐(1)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 编程题 实现一个裸机应用程序A,能打印调用栈 首先在这里卡了我很久的是调用栈保存在哪里,回想到上一部分画的 阅读全文
posted @ 2024-08-01 15:29 winddevil 阅读(995) 评论(0) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 导读 这里就是第三章的开头了,由于我的巨菜,导致天天半天理解不了关键点所在,唉,实在是太折磨人. 遵照上一 阅读全文
posted @ 2024-08-04 00:13 winddevil 阅读(681) 评论(0) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 思考 上一节我们也提到了关于多道程序的放置和加载问题的事情.对比上一章的加载,我们需要把所有的APP全部都 阅读全文
posted @ 2024-08-06 16:53 winddevil 阅读(500) 评论(0) 推荐(1)
摘要:导读 还是要先看官方手册. 学过DMA的同志可能比较好理解,一句话, 释放CPU总线 : 如果把应用程序执行的整个过程进行进一步分析,可以看到,当程序访问 I/O 外设或睡眠时,其实是不需要占用处理器的,于是我们可以把应用程序在不同时间段的执行过程分为两类,占用处理器执行有效任务的计算阶段和不必占用 阅读全文
posted @ 2024-08-08 12:04 winddevil 阅读(554) 评论(5) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本节重点 主要是对 任务 的概念进行进一步扩展和延伸:形成 任务运行状态:任务从开始到结束执行过程中所处的 阅读全文
posted @ 2024-08-10 19:12 winddevil 阅读(589) 评论(0) 推荐(1)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本节重点 本章最开始的时候讲解了有类似于多道程序与协作式调度的区别. 回想上一节,我们提到的,如果我们仍然 阅读全文
posted @ 2024-08-21 02:06 winddevil 阅读(791) 评论(0) 推荐(0)
摘要:引言 因为rcore并非设计为一个rtos,而是在我们需要的时候我们需要在设计的时候考虑到线程切换的时候的延时问题. 回顾上一部分的使用环形队列进行调度的方式,我们会发现我们寻找下一个Ready的任务的时间是不均匀的. 并且我们的任务是没有优先级的,可以认为是平权的,因此,为了: 快速且时间均匀地找 阅读全文
posted @ 2025-03-29 20:29 winddevil 阅读(174) 评论(0) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 编程题 第一题 扩展内核,能够显示操作系统切换任务的过程。 首先先回忆一下操作系统切换任务的过程. 因此只 阅读全文
posted @ 2024-09-14 17:30 winddevil 阅读(1007) 评论(0) 推荐(0)
摘要:写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 引言 兜兜转转又是新的一章的开始,还是首先要看官方手册里的理论介绍和内容. 这里主要还是提纲挈领地摘抄里面 阅读全文
posted @ 2024-09-18 00:01 winddevil 阅读(474) 评论(0) 推荐(0)
摘要:引言 想起我们之前在学习C的时候,总是提到malloc,总是提起,使用malloc现场申请的内存是属于堆,而直接定义的变量内存属于栈. 还记得当初学习STM32的时候CubeIDE要设置stack 和heap的大小. 但是我们要记得,这么好用的功能,实际上是操作系统在负重前行. 那么为了实现动态内存 阅读全文
posted @ 2024-10-01 13:36 winddevil 阅读(746) 评论(0) 推荐(2)
摘要:在上一部分,我们讲了动态内存分配器的原理是维护一个堆,而且是实现各种连续内存分配方法. 但是上一部分是直接通过引用了buddy_system_allocator来解决的问题. 那么对于内存分配算法有兴趣的我,还是决定看一下源码,总之人是咸鱼但是还是需要有梦想. 人生这么不顺,若是连梦想都没有了,可能 阅读全文
posted @ 2024-10-05 01:00 winddevil 阅读(640) 评论(0) 推荐(0)
摘要:时隔很久,终于忙里偷闲可以搞一搞rCore,上帝啊,保佑我日更吧,我真的很想学会. 导读部分 首先还是要看官方文档. 我决定看一遍然后自己表述一遍(智将). 这里反复提到MMU,就是因为之前学MCU的时候有一个疑问,就是为什么MCU上不选择跑一个Linux,当时找到的答案是因为没有MMU. MMU的 阅读全文
posted @ 2024-10-25 01:28 winddevil 阅读(598) 评论(1) 推荐(0)
摘要:看到这个题目就知道上一节提到的RISC-V手册的10.6节又有用武之地了. 这里只需注意,RV32 的分页方案Sv32支持4GiB的虚址空间,RV64 支持多种分页方案,但我们只介绍最受欢迎的一种,Sv39。: RISC-V 的分页方案以SvX的模式命名,其中X是以位为单位的虚拟地址的长度。 虚拟地 阅读全文
posted @ 2024-10-27 02:50 winddevil 阅读(1625) 评论(0) 推荐(1)
摘要:上一节:硬件 本节:软件实现 物理页帧管理 内核->空闲内存->物理页帧->分配->存放 可用物理页的分配和回收 Link文件中关于操作系统bin文件的内存设计 内容os\src\linker-qemu.ld: OUTPUT_ARCH(riscv) ENTRY(_start) BASE_ADDRES 阅读全文
posted @ 2025-04-08 12:21 winddevil 阅读(240) 评论(1) 推荐(0)