sunshine-lcc / xv6-riscv64

Porting XV6 on K210!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

XV6-RISCV On K210

Run xv6-riscv on k210 board
English 中文

 (`-')           (`-')                   <-.(`-')                            
 (OO )_.->      _(OO )                    __( OO)                            
 (_| \_)--.,--.(_/,-.\  ,--.    (`-')    '-'. ,--.  .----.   .--.   .----.   
 \  `.'  / \   \ / (_/ /  .'    ( OO).-> |  .'   / \_,-.  | /_  |  /  ..  \  
  \    .')  \   /   / .  / -.  (,------. |      /)    .' .'  |  | |  /  \  . 
  .'    \  _ \     /_)'  .-. \  `------' |  .   '   .'  /_   |  | '  \  /  ' 
 /  .'.  \ \-'\   /   \  `-' /           |  |\   \ |      |  |  |  \  `'  /  
`--'   '--'    `-'     `----'            `--' '--' `------'  `--'   `---''   

run-k210

Dependencies

Installation

git clone https://github.com/HUST-OS/xv6-k210

Build

First you need to connect your k210 board to your PC.
And check the USB serial port:

ls /dev/ | grep USB

In my situation it will be ttyUSB0

cd xv6-k210
make build

Run on k210 board

Instead of the original file system, xv6-k210 runs with FAT32. You might need an SD card with FAT32 format.
To start shell, you need to rename the "_init" and "_sh" in the "/xv6-user" to "init" and "sh" after building, then copy them to the root of your SD card.
Or you can directly run the command as below with your SD card connected to your PC (SD card reader required).

Warning: this will format your SD card and clean your original data!

make sdcard sd="your SD card device's path"

To run on k210:

make run

Sometimes you should change the USB serial port:

make run k210-serialport=`Your-USB-port`(default by ttyUSB0)

Ps: Most of the k210-port in Linux is ttyUSB0, if you use Windows or Mac OS, this doc may help you: maixpy-doc

Run on qemu-system-riscv64

First, make sure qemu-system-riscv64 is installed on your system.
Second, make a disk image file with FAT32 file system.

make fs

It will generate a disk image file fs.img, and compile some user programs like shell then copy them into the fs.img.
As long as the fs.img exists, you don't need to do this every time before running, unless you want to update it.

Finally, start running.

make run platform=qemu

Ps: Press Ctrl + A then X to quit qemu.

About shell

The shell commands are user programs, too. Those program should be put in a "/bin" directory in your SD card or the fs.img.
Now we support a few useful commands, such as cd, ls, cat and so on.

In addition, shell supports some shortcut keys as below:

  • Ctrl-H -- backspace
  • Ctrl-U -- kill a line
  • Ctrl-D -- end of file (EOF)
  • Ctrl-P -- print process list

Progress

  • Multicore boot
  • Bare-metal printf
  • Memory alloc
  • Page Table
  • Timer interrupt
  • S mode extern interrupt
  • Receive uarths message
  • SD card driver
  • Process management
  • File system
  • User program
  • Steady keyboard input(k210)

TODO

Keyboard input on k210 platform.

About

Porting XV6 on K210!

License:MIT License


Languages

Language:C 75.3%Language:Python 17.3%Language:Rust 5.9%Language:Assembly 0.8%Language:Makefile 0.6%Language:Perl 0.1%Language:Shell 0.0%