# mini-riscv-os vga https://gist.github.com/iamgreaser/15a0a81cd117d4efd1c47ce598c13c91 https://github.com/cccriscv/mini-riscv-os/tree/master/03-MultiTasking 找到一個riscv 的vga 驅動 記得bios 改為 no bios ```bash= ~/qemu-vga$ riscv32-unknown-elf-gcc -Os -mcmodel=medany -nostdlib -Wl,-T,qemu.ld -o vga-hello.elf boot.S main.c ~/qemu-vga$ qemu-system-riscv32 -bios none -machine virt -device VGA -smp 1 -kernel vga-hello.elf ``` ![](https://i.imgur.com/9ZOPfqn.png) 我們來移到 https://github.com/cccriscv/mini-riscv-os 在 mini-riscv-os 00 hello-os確實可以進行繪圖 ![](https://i.imgur.com/wOF7xa7.png) ![](https://i.imgur.com/DzaUkgI.png) 嘗試移植到03切換多任務的部分,改一下stack ![](https://i.imgur.com/ZxvtSF2.png) ![](https://i.imgur.com/h5vn8tF.png) 到這裡就可以做切換任務,有多工,參考30 day os我們就可以對視窗畫圖,接收中斷,畫面會閃爍可能就是要統一對圖層新增優先權看誰可以覆蓋誰,或者雙重緩衝(?。 https://wiki.osdev.org/Drawing_In_Protected_Mode https://github.com/cccriscv/mini-riscv-os/tree/master/03-MultiTasking 以兩個任務分別畫正方形與直線 https://github.com/x213212/mini-riscv-os-vga ![](https://i.imgur.com/67MDyds.gif)