2020-10-21 19:18:46 +08:00
|
|
|
# XV6-RISCV On K210
|
2020-11-24 18:35:55 +08:00
|
|
|
Run xv6-riscv on k210 board
|
2021-01-15 23:34:38 +08:00
|
|
|
[English](./README.md) [中文](./README_cn.md)
|
2020-11-24 18:35:55 +08:00
|
|
|
|
|
|
|
```
|
|
|
|
(`-') (`-') <-.(`-')
|
|
|
|
(OO )_.-> _(OO ) __( OO)
|
|
|
|
(_| \_)--.,--.(_/,-.\ ,--. (`-') '-'. ,--. .----. .--. .----.
|
|
|
|
\ `.' / \ \ / (_/ / .' ( OO).-> | .' / \_,-. | /_ | / .. \
|
|
|
|
\ .') \ / / . / -. (,------. | /) .' .' | | | / \ .
|
|
|
|
.' \ _ \ /_)' .-. \ `------' | . ' .' /_ | | ' \ / '
|
|
|
|
/ .'. \ \-'\ / \ `-' / | |\ \ | | | | \ `' /
|
|
|
|
`--' '--' `-' `----' `--' '--' `------' `--' `---''
|
|
|
|
```
|
|
|
|
|
2020-12-23 22:44:47 +08:00
|
|
|
![run-k210](./img/xv6-k210_on_k210.gif)
|
2020-10-19 00:53:22 +08:00
|
|
|
|
2020-10-21 19:18:46 +08:00
|
|
|
## Dependencies
|
2020-12-13 07:05:52 +08:00
|
|
|
+ `k210 board` or `qemu-system-riscv64`
|
2020-12-13 18:33:18 +08:00
|
|
|
+ RISC-V Toolchain: [riscv-gnu-toolchain](https://github.com/riscv/riscv-gnu-toolchain.git)
|
2020-10-19 00:53:22 +08:00
|
|
|
|
2020-10-21 19:18:46 +08:00
|
|
|
## Installation
|
2020-11-07 03:13:59 +08:00
|
|
|
```bash
|
2021-03-03 19:48:35 +08:00
|
|
|
git clone https://github.com/HUST-OS/xv6-k210
|
2020-11-07 03:13:59 +08:00
|
|
|
```
|
2020-10-19 00:53:22 +08:00
|
|
|
|
2020-10-21 19:18:46 +08:00
|
|
|
## Build
|
2020-10-22 03:54:05 +08:00
|
|
|
First you need to connect your k210 board to your PC.
|
2020-12-13 07:05:52 +08:00
|
|
|
And check the `USB serial port`:
|
2020-11-07 03:12:44 +08:00
|
|
|
```bash
|
|
|
|
ls /dev/ | grep USB
|
|
|
|
```
|
2020-11-04 06:43:08 +08:00
|
|
|
In my situation it will be `ttyUSB0`
|
2020-10-22 03:54:05 +08:00
|
|
|
|
2020-11-07 03:12:44 +08:00
|
|
|
```bash
|
|
|
|
cd xv6-k210
|
|
|
|
make build
|
|
|
|
```
|
2020-10-19 00:53:22 +08:00
|
|
|
|
2020-12-13 07:05:52 +08:00
|
|
|
## Run on k210 board
|
2020-11-07 03:12:44 +08:00
|
|
|
```bash
|
2020-12-13 07:05:52 +08:00
|
|
|
make run
|
|
|
|
```
|
|
|
|
|
|
|
|
Sometimes you should change the `USB serial port`:
|
|
|
|
```bash
|
|
|
|
make run k210-serialport=`Your-USB-port`(default by ttyUSB0)
|
2020-11-07 03:12:44 +08:00
|
|
|
```
|
2020-10-23 08:00:43 +08:00
|
|
|
Ps: Most of the k210-port in Linux is ttyUSB0, if you use Windows or Mac OS, this doc
|
|
|
|
may help you: [maixpy-doc](https://maixpy.sipeed.com/zh/get_started/env_install_driver.html#)
|
2020-10-19 00:53:22 +08:00
|
|
|
|
2020-12-13 07:05:52 +08:00
|
|
|
## Run on qemu-system-riscv64
|
|
|
|
First make sure you have the `qemu-system-riscv64` on your system.
|
|
|
|
Then run the command:
|
|
|
|
```bash
|
|
|
|
make run platform=qemu
|
|
|
|
```
|
2021-01-15 12:16:30 +08:00
|
|
|
Ps: Press Ctrl + A then X to quit qemu.
|
2021-01-15 23:34:38 +08:00
|
|
|
Besides, file system and uesr programs are available on qemu. More details [here](./doc/fs.md).
|
|
|
|
|
|
|
|
## Quick Start to run `Shell` on `qemu`
|
|
|
|
```bash
|
|
|
|
$ dd if=/dev/zero of=fs.img bs=512k count=2048
|
|
|
|
$ mkfs.vfat -F 32 fs.img
|
2021-01-16 22:49:36 +08:00
|
|
|
$ make build
|
2021-01-15 23:34:38 +08:00
|
|
|
$ (sudo)mount fs.img /mnt
|
|
|
|
$ (sudo)cp xv6-user/_init /mnt/init
|
|
|
|
$ (sudo)cp xv6-user/_sh /mnt
|
|
|
|
$ (sudo)cp xv6-user/_cat /mnt
|
|
|
|
$ (sudo)cp xv6-user/init.c /mnt
|
|
|
|
$ (sudo)umount /mnt
|
|
|
|
$ make run platform=qemu
|
|
|
|
```
|
|
|
|
|
|
|
|
After entering `qemu`, type `_cat init.c`, and it will read the contents of `init.c` in `fs.img`, output to the terminal.
|
2021-01-16 22:49:36 +08:00
|
|
|
The `init.c` can be any text file. 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
|
2020-12-13 07:05:52 +08:00
|
|
|
|
2020-11-07 03:12:44 +08:00
|
|
|
## Progress
|
|
|
|
- [x] Multicore boot
|
|
|
|
- [x] Bare-metal printf
|
|
|
|
- [x] Memory alloc
|
|
|
|
- [x] Page Table
|
|
|
|
- [x] Timer interrupt
|
|
|
|
- [x] S mode extern interrupt
|
|
|
|
- [x] Receive uarths message
|
|
|
|
- [x] SD card driver
|
2020-11-17 20:46:11 +08:00
|
|
|
- [x] Process management
|
2021-01-15 23:34:38 +08:00
|
|
|
- [x] File system(qemu)
|
|
|
|
- [ ] File system(k210)
|
|
|
|
- [x] User program(qemu)
|
|
|
|
- [ ] User program(k210)
|
2020-11-02 20:20:31 +08:00
|
|
|
|
2020-10-21 19:18:46 +08:00
|
|
|
## TODO
|
2021-01-15 23:34:38 +08:00
|
|
|
File system on k210 platform.
|
|
|
|
|