- 博客(4)
- 收藏
- 关注
原创 RISCV的异常和中断
Trap 发生 → 硬件自动:把当前 PC 存到mepc;填充mcause(类型 + 编码)、mtval(附加信息);修改mstatus(xIE 置 0,保存原状态 / 权限);PC 跳转到mtvec的 BASE 地址。软件处理(entry.S + trap.c):保存寄存器上下文;读取mepcmcause处理逻辑(比如跳过错误指令);Trap 返回(mret):硬件从mepc恢复 PC;从mstatus恢复中断状态、权限。reg_t ra;
2025-12-14 17:18:57
1304
原创 RISCV简单的上下文切换以及多任务
不存在 “保存两次 A 的上下文”,caller-saved 是 A 自己保自己的临时寄存器,callee-saved 是 B 帮 A 保保存寄存器,责任主体和范围都不同,是 “分工保存” 而非 “重复保存”。
2025-12-13 18:47:34
1163
原创 RISC-V简单内存管理
* 语法格式:SECTIONS输出段名 : { 输入段匹配规则 + 符号定义 } > 内存区域名...*/SECTIONS.text : {// 语法:PROVIDE(符号 = 表达式)*(.text .text.*) // 语法:*(输入段名 输入段名通配符)} >ram} >ram.data : {// 语法:. = ALIGN(对齐字节数)} >ram.bss :{*(COMMON) // 语法:*(COMMON) 匹配通用符号} >ram。
2025-12-09 17:38:58
1042
原创 qemu模拟器中RISC-V中的串口底层打印
汇编层:初始化 CPU 核,设置栈,区分主核 / 从核;C 层:调用外设初始化函数,操作 UART 寄存器;硬件层:通过 MMIO 读写 UART 寄存器,输出字符串。操作系统的底层就是 “和 CPU 寄存器、硬件寄存器打交道”—— 汇编代码操作 CPU 的核心寄存器(sp、mhartid、tp),C 代码通过内存映射操作外设寄存器,这是所有操作系统的起点。
2025-12-08 22:29:48
927
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅