RISC-V Meaty Skeleton with QEMU virt board: Difference between revisions
Jump to navigation
Jump to search
[unchecked revision] | [unchecked revision] |
Content deleted Content added
Created page with "This tutorial assumes you have completed RISC-V Bare Bones on the QEMU <code>virt</code> board, or alternatively, [[HiFive-1_Bare_Bones|HiFive-1 Bare Bon..." |
No edit summary |
||
Line 1: | Line 1: | ||
This tutorial assumes you have completed [[RISC-V_Bare_Bones|RISC-V Bare Bones]] on the QEMU <code>virt</code> board, or alternatively, [[HiFive-1_Bare_Bones|HiFive-1 Bare Bones]]. If not, you should complete them first for an overview of how to boot your own operating system on RISC-V. This tutorial is deliberately brief on concepts that have already been covered in the bare bones tutorials and their transitive prerequisites. |
This tutorial assumes you have completed [[RISC-V_Bare_Bones|RISC-V Bare Bones]] on the QEMU <code>virt</code> board, or alternatively, [[HiFive-1_Bare_Bones|HiFive-1 Bare Bones]]. If not, you should complete them first for an overview of how to boot your own operating system on RISC-V. This tutorial is deliberately brief on concepts that have already been covered in the bare bones tutorials and their transitive prerequisites. |
||
The bare bones tutorials provide minimal examples that are not structured to enable sustainable mid- to long-term development of the codebase. |
The bare bones tutorials provide minimal examples that are not structured to enable sustainable mid- to long-term development of the codebase. This tutorial attempts to rectify that by providing a well-structured project that should serve you well through your OSDev journey with the following features: |
||
* Hierarchical project structure with <code>make</code> build system for sustainable mid- to long-term development |
|||
* Includes <code>debug</code> target for debugging with [[GDB|GDB]] (requires cross-debugger targeting <code>riscv64-elf</code>) |
|||
* Basic console output through NS16550A UART |
|||
* Convenience wrappers for powering off and rebooting the device |
|||
* Working <code>kprintf</code> supporting base format specifiers (no floating point support; no sub-specifiers; no <code>n</code> specifier) to facilitate <code>printf</code> debugging |
|||
* <code>panic</code> function for kernel panics |
Revision as of 03:21, 10 September 2022
This tutorial assumes you have completed RISC-V Bare Bones on the QEMU virt
board, or alternatively, HiFive-1 Bare Bones. If not, you should complete them first for an overview of how to boot your own operating system on RISC-V. This tutorial is deliberately brief on concepts that have already been covered in the bare bones tutorials and their transitive prerequisites.
The bare bones tutorials provide minimal examples that are not structured to enable sustainable mid- to long-term development of the codebase. This tutorial attempts to rectify that by providing a well-structured project that should serve you well through your OSDev journey with the following features:
- Hierarchical project structure with
make
build system for sustainable mid- to long-term development - Includes
debug
target for debugging with GDB (requires cross-debugger targetingriscv64-elf
) - Basic console output through NS16550A UART
- Convenience wrappers for powering off and rebooting the device
- Working
kprintf
supporting base format specifiers (no floating point support; no sub-specifiers; non
specifier) to facilitateprintf
debugging panic
function for kernel panics