An attempt to port xv6-riscv to the MilkV mars SBC. As MilkV mars is based on JH7110, xv6-mars may be runnable on VisionFive2 or Star64 SBCs.
Important
This project is still under development.
| Feature | MilkV Mars specific |
|---|---|
| SBI timers | No |
| SBI HSM (start) | No |
| RamDisk | No |
| UART | Yes (config differs) |
| Buddy Allocator | No |
| Multilevel Queue Scheduling | No |
| CPU Temperature Sensor | Yes |
You need to configure the kernel to run on the Mars board. Edit config.mk:
PLATFORM = marsTo get xv6 starting on the board, you need to load manually everything. compile the kernel and ramdisk image
make
make fs.imgTip
Connect to UART to get output:
| Pin | GPIO |
|---|---|
| GND | 6 |
| Tx | 8 |
| Rx | 10 |
Copy kernel and fs.img to the mars SD card and then boot the mars.
Then once U-Boot prompt appears:
load mmc 1 ${loadaddr} kernel
load mmc 1 0x49000000 fs.img
bootelf ${loadaddr}You can setup a DHCP and TFTP server and connect the Mars in the LAN. Then setup U-Boot:
setenv bootcmd='dhcp; tftpboot ${loadaddr} kernel; tftpboot 0x49000000 fs.img; bootelf ${loadaddr};'
saveenvYou can debug the kernel with GDB via OpenOCD on a JTAG port I found on the board.
| JTAG Port | Mars GPIO Pin |
|---|---|
| TMS | 35 |
| TRSTN | 36 |
| TCK | 37 |
| TDI | 38 |
| TDO | 40 |
Tip
Load kernel.sym in GDB to get sources