华科 OS 实验的 RISC-V 代理内核是如何启动的?

代码仓库为 hustos riscv-pke 以下内容基于 lab2 代码 入口在哪? 入口为 kernel/machine/mentry.S 的 _mentry ,它调用了 kernel/machine/minit.c 的 m_start(uintptr_t hartid, uintptr_t dtb) ,两个参数并没有在 _mentry 中设置,这是因为 spike 会自动设置 a0 寄存器为 CPU id ,设置 a1 寄存器为设备树字符串,这刚好也符合 RV 的传参规则。 ...

2024 3月 02 · 2 分钟 · vaaandark

MIT6.S081 Lab:Fixup Xargs

昨天朋友跟我说我的 MIT6.S081 lab1 的 xargs 命令的代码无法通过,看到他的测试方法才知道原来是这样测试的,感觉之前写的测的都太简略了。 例如测试 xargs 命令这一关可以这样测试: ...

2024 2月 26 · 1 分钟 · vaaandark

MIT6.S081 Lab: Xv6 and Unix Utilities

这是 MIT6.S081 的第一个 Lab ,目的是为了让学生熟悉 Xv6 和 Unix 的一些实用程序,例如 sleep find xargs 等。 sleep 这一关是实现 sleep 命令。由于在 user/user.h 目录中给出来了可以直接由 C 语言调用的函数 int sleep(int) ,这一关非常简单: ...

2023 3月 02 · 3 分钟 · vaaandark

MIT6.S081 实验环境配置

最近开始学习操作系统的相关知识,选择学 MIT6.S081 的课程。 首先在 课程官方网站 上拉取仓库配置环境。 $ git clone git://g.csail.mit.edu/xv6-labs-2020 $ cd xv6-labs-2020 $ git checkout util $ make qemu make 时发现有报错: user/sh.c: In function ‘runcmd’: user/sh.c:58:1: error: infinite recursion detected [-Werror=infinite-recursion] 58 | runcmd(struct cmd *cmd) | ^~~~~~ 打开该文件发现: ...

2023 2月 21 · 1 分钟 · vaaandark

QEMU配置openEuler的aarch64开发环境

还是计算机系统基础,即将对 arm 架构展开学习,使用的是华为的打开欧拉(openEuler)操作发行版。 进入镜像 首先下载虚拟机镜像,老师发的我安装不了,就在清华的镜像站下载了。 $ aria2c -x 15 -s 2 "https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-20.03-LTS/virtual_machine_img/aarch64/openEuler-20.03-LTS.aarch64.qcow2.xz" 先调整一下镜像的磁盘大小。 $ qemu-img resize openEuler-20.03-LTS.aarch64.qcow2 +20G 启动镜像,注意需要使用引导文件。 qemu-system-aarch64 -m 4096 \ -cpu cortex-a57 \ -smp 4 \ -M virt \ -bios edk2-aarch64-code.fd \ -hda openEuler-20.03-LTS.aarch64.qcow2 \ -nographic \ 配置网络 配置网络这部分,尤其是网卡那部分我不是很懂,基本上是照着教程来做。 ...

2022 11月 07 · 2 分钟 · vaaandark

FreeDOS和masm开发环境配置

正在上计算机系统基础,目前主要是在讲汇编语言,使用的开发环境自然是又老又臭的 DOS 加上 MASM 。之前我看到过 FreeDOS 这个自由的 DOS 发行版,打算试吃一下,之后的汇编实验也将在这上面进行。 ...

2022 9月 16 · 1 分钟 · vaaandark