← Back to Milk-V Duo (64M)
rtthread on Milk-V Duo (64M)

System Version

Not specified

Status

basic

System Variant

standard

Last Update

2024-11-02

RT-Thread Milk-V Duo Test Report

Test Environment

Operating System Information

Hardware Information

  • Milk-V Duo 64M
  • A USB Power Adapter
  • A USB-A to C or USB C to C Cable
  • A microSD Card
  • A USB to UART Debugger (e.g., CH340, CH341, FT2232, etc.)
  • Three Dupont Lines
  • Headers pre-soldered on the Milk-V Duo for debugging purposes

Installation Steps

The following steps are tested on Arch Linux, but should be applicable to all major Linux distributions.

Preparing the System Environment

Install the required packages:

sudo apt install -y scons libncurses5-dev device-tree-compiler
# or on Arch Linux: sudo pacman -S scons dtc ncurses 

Get the toolchain:

wget https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1705395512373/Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1-20240115.tar.gz

tar -xzvf Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1-20240115.tar.gz

Update the following paths as needed:

export RTT_CC_PREFIX=riscv64-unknown-elf-
export RTT_EXEC_PATH=/opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1/bin

Fetching the Source Code and Compiling the Firmware

git clone --depth=1 https://github.com/RT-Thread/rt-thread
cd rt-thread/bsp/cvitek/cv18xx_risc-v
# Generate configuration
scons --menuconfig
source ~/.env/env.sh
scons -j$(nproc) --verbose
cd ../
./combine-fip.sh $(pwd)/cv18xx_risc-v Image

Please select milkv-duo under the Board Type option in menuconfig.

boot.sd and fip.bin files will be generated in the cvitek/output/milkv-duo directory upon completion.

Preparing the microSD Card

Clear the microSD card and create a FAT32 partition:

wipefs -af /path/to/your-card
mkfs.fat /path/to/your-card

Copy the generated boot.sd and fip.bin files onto the microSD card. The storage card is now ready to boot RT-Thread on the Duo.

Logging into the System

Logging into the system via the serial port.

Expected Results

The system should boot normally and allow login through the serial port.

Actual Results

The system booted successfully, and login through the serial port was successful.

Boot Log

Boot from SD ...
switch to partitions #0, OK
mmc0 is current device
147784 bytes read in 8 ms (17.6 MiB/s)
## Loading kernel from FIT Image at 81400000 ...
   Using 'config-cv1800b_milkv_duo_sd' configuration
   Trying 'kernel-1' kernel subimage
   Verifying Hash Integrity ... crc32+ OK
## Loading fdt from FIT Image at 81400000 ...
   Using 'config-cv1800b_milkv_duo_sd' configuration
   Trying 'fdt-cv1800b_milkv_duo_sd' fdt subimage
   Verifying Hash Integrity ... sha256+ OK
   Booting using the fdt blob at 0x8141f084
   Uncompressing Kernel Image
   Decompressing 365360 bytes used 49ms
   Loading Device Tree to 0000000081bdd000, end 0000000081be4b60 ... OK

Starting kernel ...

[I/drv.pinmux] Pin Name = "UART0_RX", Func Type = 281, selected Func [0]

[I/drv.pinmux] Pin Name = "UART0_TX", Func Type = 282, selected Func [0]

heap: [0x8028a780 - 0x81200000]

 \ | /
- RT -     Thread Operating System
 / | \     5.2.0 build Nov  1 2024 20:34:41
 2006 - 2024 Copyright by RT-Thread team
lwIP-2.1.2 initialized!
[I/sal.skt] Socket Abstraction Layer initialize success.
Hello RISC-V!
msh />

Test Criteria

Successful: The actual result matches the expected result.

Failed: The actual result does not match the expected result.

Test Conclusion

Test successful.