Luyoung
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
基于 riscv32 的 OS 设计:启动最简单的 OS

基于 riscv32 的 OS 设计:启动最简单的 OS

启动最简单的 OS这个 OS 超级简单,就是一个裸机程序: 1234void start_kernel(void){ while (1) {}; // stop here!} 我们只需要将这个程序编译成二进制文件,然后丢给 qemu,就可以跑了。 但是,本节会提到一个大大的问题,这个问题在上一个博客中并没有提到。 CPU 是多核心的如果在多核心上启动一个 k
2025-03-16
OS
#OS #riscv
基于 riscv32 的 OS 设计:qemu 启动!

基于 riscv32 的 OS 设计:qemu 启动!

写的 OS 如何运行?如果写过 CPU,那就会明白,OS 和其它裸机程序几乎没有什么区别。当然,复杂的 OS 可能引入各种模式,比如 S-mode,但这不影响 OS 是一个比较复杂的裸机程序的事实。 因此,写好的 OS 加载到内存中,让 CPU 的 PC 指向 OS 的第一条指令,然后开始运行,OS 就成功运行了。 根据以上判断,OS 想要跑起来,需要: 一个 CPU; 一个 RAM。 有一个
2025-03-15
OS
#OS #riscv
MIPS 处理器的设计

MIPS 处理器的设计

Why MIPS?学校的课程设计需要做一个 MIPS 的五级流水线单周期处理器,这是 项目链接。 MIPS 有一个特点,那就是延迟槽。如果在编译参数中将延迟槽关掉,那么每一个分支指令后面的延迟槽就会变成空指令,这为流水线的指令相关解决提供了便利。 这个项目提供了简单的测试环境,但是遗憾的是由于时间有限,并没有提供 difftest。 程序编译流程 mips 交叉编译工具链编译成目标文件; 将目标文
2025-03-10
CPU 设计
#MIPS
Rust 中的 traits

Rust 中的 traits

最近笔者在学 Rust,被 Rust 中精巧的设计深深吸引,尤其是 traits。它不仅能够应用到 Struct、Enum等,而且还能作为参数传入函数。应用于结构体先看这个例子: 12345678910111213141516171819202122232425262728293031323334353637383940414243trait Shape { fn area(&am
2025-02-18
编程语言 > Rust
#Rust #Java
ssh 免密登录失效问题

ssh 免密登录失效问题

问题突然间我发现我需要密码才能登录到服务器,但是我仔细对比检查了私钥和秘钥,发现一切正常。这是什么原因呢? 问题原因原来,前几天我用 snap 安装了 hugo,hugo 需要文件夹权限,为了让 snap 应用访问用户家目录下的文件,我按照网上教程将家目录权限修改为 777。 ssh 为了保证通信安全,防止 key 被篡改或窃取,对目录和文件的权限要求相当严格: 12345chmod 0755 ~
2025-02-15
Ubuntu
#ssh #snap
对 SPI、FLASH 的思考

对 SPI、FLASH 的思考

从 flash 中读出数据(1)之前在 ysyxSoC/perip/spi/rtl/spi_top_apb.v 中定义宏 FAST_FLASH,因此当程序访问 0x30000000+X 的时候,就会访问这个模块: 123456789101112131415161718`ifdef FAST_FLASHwire [31:0] data;parameter invalid_cmd = 8'
2025-02-09
ysyx
#flash #SPI
C语言内联汇编

C语言内联汇编

一个示例123456asm volatile( "jalr x0, 0(%0)" : : "r"(jump_address) : ); 代码片段的格式和含义分解: 这段代码使用了 GCC 扩展内联汇编的通用格式,其基本结构如下: 123456asm [volatile] ( 汇编指令模板 : //
2025-02-06
C语言
#汇编
docker 加速最佳解决方案

docker 加速最佳解决方案

前言docker 在 pull 镜像的时候,速度要么很慢,要么直接卡住报错,这是因为网络不通的原因。主要有两个思路,方案一就是换源,将 docker 的仓库换到镜像源上,因为镜像源在国内,因此这种方式便宜。但缺点是镜像可能会在某个时间节点停止服务,不够稳定。方案二就是不用管源的事情,直接在本地架设代理,缺点是技术门槛高,需要架设代理,还需要支付额外的流量费。优点是源不会挂掉,很稳定。 方案一创
2025-01-16
工具
#tools
2024 个人总结

2024 个人总结

2023 年的目标“因此在 2024 年,我将会学习更多的关于算法(CS61B)、计算机网络(CS114)、 数据库、编译原理、Java(面向实习学习)、分布式等知识,争取能在暑假拿到offer。” 上述言论是我在 2023年12月31 在博客中提到的。当时我的想法是学习 Java 后端,学习通用的 Java 学习路线,然后在暑假拿到 实习offer。 但最终,2024 年一整年,我的学习内容
2025-01-09
Personal_Summary
#个人总结
再探究异常处理

再探究异常处理

前言阅读本案例需要有做 nemu 的经历,最低要求是是做到 PA3.1。 一个最简单的异常处理程序12345678910111213141516#include <klib.h>void handler() { uintptr_t mepc; asm volatile("csrr %0, mepc" : "=r"(mep
2024-11-19
ysyx
#异常处理
12345…22

搜索

Hexo Fluid
总访问量 次 总访客数 人