Duo now supports big and little cores?Come and play!Milk-V Duo, start!

Firmware version 1.05 is released. In addition to the most significant update, which is the support for the little core (C906@700MHz), the wiringX library is also ready. Grab your DFRobot sensors and start playing with them!

FreeRTOS is waiting for you, my friend!

The RTOS documentation is rapidly expanding: Introduction | Milk-V

You can find the firmware here: Releases · milkv-duo/duo-buildroot-sdk · GitHub

Good news: Under the leadership of @Pandora (junqiang) from PLCT, dual-core communication is also rapidly improving.

Change log V1.0.5

  • Added support for IPV6.
  • Replaced the cvi_pinmux command with duo-pinmux. More information available here.
  • Reordered the pin numbers in wiringX and python-pinong library.
  • Released the generic FreeRTOS code for the second core (little one).

The small core and the big core share UART0, and the information printed by the small core can be seen in the boot log.


  1. Can OpenSBI boot the dual-core system?
    Answer: FSBL initiates the boot process; it does not go through OpenSBI.
    @AnonymousUser1: FSBL itself already supports dual-core startup, and you can use kernel remoteproc to start the small core’s ELF.
    @AnonymousUser2: BL2 will first load the FreeRTOS binary from the flash into memory and start the small core. After that, BL2 loads OpenSBI/U-Boot/Kernel to run on the big core.
    @AnonymousUser3: I previously learned that you can bundle the loader for the small core into the fast_image_mcu region of fip.bin (not exceeding 24k). In this case, during startup, the small core will load this part of the program.

:grinning: Thanks for sharing @kkkkk

1 Like

Sorry, but I quite not understand where the FreeRTOS binary stored. Is it in the SD partition or somewhere?

yes, since you use the sd card(buildroot in your card) to boot the system

1 Like

Hi, related to these points in QnA section of your post:
“FSBL itself already supports dual-core startup”
“BL2 will first load the FreeRTOS binary from the flash into memory and start the small core”

I just can not find any line of code do the above steps in the FSBL/BL2 in Milk-V Duo buildroot SDK. I refer to this BL2 file, but it calls to pre-built objects.

Where can I get the full source to to understand how BL2 load the FreeRTOS and wake up the small core?

Is there any document should I look at for better understaning the boot up of dual-core system?

Thanks ^^

Very nice post!
Any chance to update the tasks without the need to rebuild the whole image? And how to use the wiringX lib with the small core?

Is there more information on using remoteproc? There doesn’t seem to be anything in duo-buildroot-sdk/linux_5.10/drivers/remoteproc related to cvi