# proj141-RV-SBI-based-debugger **Repository Path**: oscomp/proj141-RV-SBI-based-debugger ## Basic Information - **Project Name**: proj141-RV-SBI-based-debugger - **Description**: https://github.com/oscomp/proj141-RV-SBI-based-debugger - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-17 - **Last Updated**: 2024-01-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # proj141-RV-SBI-based-debugger 全环境RISC-V内核软件调试器接口 ### 项目描述 现有的内核调试接口以植入式为主,它与操作系统的实现密切相关,而RISC-V SBI是与内核无关的引导程序环境、接口规范标准。可以使用RISC-V SBI的实现调试操作系统内核,或者当操作系统源码透明时,与权限更高的SBI实现共同运作,更好地调试当前运行的操作系统。 本题着重于探索一种将RISC-V SBI实现与现有的内核调试机制结合或共同运作的使用方法。 社区实现了调试大师SBI,它是一种运行在内核之下的环境,使用ebreak陷入法调试运行于其上的操作系统,并具备简单的控制台界面。扩充、完善调试大师SBI或者编写自己的RISC-V SBI实现,以调试运行在其上的操作系统内核。或者,扩充RISC-V SBI接口,使得操作系统内核能以其它方式与固件沟通,帮助完善操作系统内核中的调试机制。 调试大师SBI的地址: [https://github.com/luojia65/tiaoshi-dashi-sbi](https://github.com/luojia65/tiaoshi-dashi-sbi) 。 ### 所属赛道 2022全国大学生操作系统比赛的“OS功能设计”赛道 ### 参赛要求 * 以小组为单位参赛,最多三人一个小组,且小组成员是来自同一所高校的本科生(2022年春季学期或之后本科毕业的大一~大四的学生) * 如学生参加了多个项目,参赛学生选择一个自己参加的项目参与评奖 * 请遵循“2022全国大学生操作系统比赛”的章程和技术方案要求 ### 项目导师 蒋周奇(洛佳) * github [https://github.com/luojia65](https://github.com/luojia65) * email [luojia@hust.edu.cn](mailto:luojia@hust.edu.cn) ### 难度 中等 ### 特征 * RISC-V平台,RISC-V SBI固件 * 内核调试接口,或固件调试接口 * 内核固件联合调试机制 ### License * GPL3 ### 预期目标 * 编写一个使用串口控制台的调试服务器固件。触发串口中断或使用ebreak指令进入调试固件。根据用户给出的地址,访问和打印内核态内存。根据用户指令打印当前核的整数和CSR寄存器值。 * 调试固件应具有反汇编功能,并能单步指令地运行内核。 * 页错误是内核开发常见的较难调试的错误。发生此类错误时,遍历页表,打印页错误发生的原因。当内核使用页置换算法时,不应转入调试固件而调试页错误,为这个情况找到合适的解决方案。 * 根据用户以合适方式提供的ELF文件得到调试符号信息,单行地执行或步过代码。 * 在SBI调用发生时,RISC-V处理器将换入调试固件,调试固件应当能够处理SBI调用。当内核使用ecall指令调用SBI接口时,调试固件应将SBI ecall指令看作一个整体,下一条单步、单指令执行应当执行到ecall指令之后。 * 操作系统可能提供进程、堆或者设备等系统内核专有的结构或区域。暴露调试固件的功能到操作系统,与操作系统结合,完成对这些区域的调试功能。要求至少能够提供内核堆的结构和重要地址到固件,固件调试时可打印内核堆的状态信息。 为减少工作量,建议使用RustSBI框架实现调试固件。