Finally, I got duo-buildroot-sdk
built today. So, yes, happy Chinese new year of Dragon, 2024. Let's have
some fun of Milk-V Duo 256M .
1. Introduction
From Milk-V Duo 256M 's official
website, the following picture clearly shows it has
The detailed specifications are also highlighted in the table on the
official website of Milk-V Duo
256M .
Even if I strictly followed the manual on duo-buildroot-sdk 's
official documentation Compiled
using Ubuntu 22.04 , I still failed to build an image out for
flashing, with the following error messages inside the log file
build/br.log :
1 2 3 4 5 6 7 8 ...... 2024-02-08T13:34:11 tic: symbol lookup error: tic: undefined symbol: _nc_disable_period 2024-02-08T13:34:11 ? tic could not build ....../duo-buildroot-sdk-Duo-V1.0.8/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/per-package/ncurses/host/riscv64-buildroot-linux-musl/sysroot/usr/share/terminfo 2024-02-08T13:34:11 make[4]: *** [Makefile:92: install.data] Error 1 2024-02-08T13:34:12 make[3]: *** [Makefile:122: install] Error 2 2024-02-08T13:34:12 make[2]: *** [package/pkg-generic.mk:289: ....../duo-buildroot-sdk-Duo-V1.0.8/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/build/ncurses-6.1/.stamp_staging_installed] Error 2 2024-02-08T13:34:12 make[2]: *** Waiting for unfinished jobs .... ......
A possible solution is found at: https://lore.kernel.org/buildroot/bug-15685-163-ecW1EgIyRW@https.bugs.busybox.net%2F/T/ .
2.2
Successfully build duo-buildroot-sdk
using Docker
By strictly following the manual on duo-buildroot-sdk 's
official documentation Compiled
using Docker , I now am able to build an image out as:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...... mkfs.fat: Warning: lowercase labels might not work properly on some systems INFO: vfat(boot.vfat): adding file 'fip.bin' as 'fip.bin' ... INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '~/install/soc_cv1812cp_milkv_duo256m_sd/boot.vfat' '~/install/soc_cv1812cp_milkv_duo256m_sd/fip.bin' '::'" (stderr): INFO: vfat(boot.vfat): adding file 'rawimages/boot.sd' as 'rawimages/boot.sd' ... INFO: vfat(boot.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '~/install/soc_cv1812cp_milkv_duo256m_sd/boot.vfat' '~/install/soc_cv1812cp_milkv_duo256m_sd/rawimages/boot.sd' '::'" (stderr): INFO: ext4(rootfs.ext4): cmd: "genext2fs -d '~/install/soc_cv1812cp_milkv_duo256m_sd/tmp/root' --size-in-blocks=786432 -i 16384 '~/install/soc_cv1812cp_milkv_duo256m_sd/rootfs.ext4' " (stderr): copying from directory ~/install/soc_cv1812cp_milkv_duo256m_sd/tmp/root INFO: ext4(rootfs.ext4): cmd: "tune2fs -O 'extents,uninit_bg,dir_index,has_journal' '~/install/soc_cv1812cp_milkv_duo256m_sd/rootfs.ext4'" (stderr): INFO: ext4(rootfs.ext4): cmd: "tune2fs -L 'rootfs' '~/install/soc_cv1812cp_milkv_duo256m_sd/rootfs.ext4'" (stderr): INFO: ext4(rootfs.ext4): cmd: "e2fsck -pvfD '~/install/soc_cv1812cp_milkv_duo256m_sd/rootfs.ext4'" (stderr): INFO: hdimage(milkv-duo256m.img): adding partition 'boot' (in MBR) from 'boot.vfat' ... INFO: hdimage(milkv-duo256m.img): adding partition 'rootfs' (in MBR) from 'rootfs.ext4' ... INFO: hdimage(milkv-duo256m.img): writing MBR gnimage for milkv-duo256m success! ~/build ~ Create SD image successful: out/milkv-duo256m-20240208-1949.img
And, the last couple of lines in the log file
build/br.log are:
1 2 3 4 5 6 7 8 9 10 11 ...... 2024-02-08T19:48:15 2024-02-08T19:48:15 Allocating group tables: 0/25 done 2024-02-08T19:48:15 Writing inode tables: 0/25 done 2024-02-08T19:48:15 Creating journal (4096 blocks): done 2024-02-08T19:48:15 Copying files into the device: PATH="~/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/host/bin:~/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/host/sbin:~/host-tools/gcc/riscv64-linux-musl-x86_64/bin:~/host-tools/gcc/riscv64-linux-x86_64/bin:~/host-tools/gcc/riscv64-elf-x86_64/bin:~/host-tools/gcc/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-elf/bin:~/host-tools/gcc/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin:~/host-tools/gcc/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:~/host-tools/gcc/arm-cvitek-linux-uclibcgnueabihf/bin" xz -9 -C crc32 -c -T 9 ~/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/images/rootfs.tar > ~/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/images/rootfs.tar.xz 2024-02-08T19:48:16 done 2024-02-08T19:48:16 Writing superblocks and filesystem accounting information: 0/25 done 2024-02-08T19:48:16 2024-02-08T19:48:16 ln -sf rootfs.ext2 ~/buildroot-2021.05/output/milkv-duo256m_musl_riscv64/images/rootfs.ext4 2024-02-08T19:49:28 make[1]: Leaving directory '~/buildroot-2021.05'
3. Boot after Flashing
After flashing the generated
out/milkv-duo256m-20240208-1949.img into the SD card,
we can now boot up Milk-V Duo 256M by
connecting it with my laptop via a USB cable .
3.1 lsusb
1 2 3 ...... Bus 001 Device 009: ID 3346:1009 Cvitek RNDIS ......
3.2 SSH into Milk-V Duo 256M via USB Connection
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 ➜ ~ ssh root@192.168.42.1 The authenticity of host '192.168.42.1 (192.168.42.1)' can't be established. ED25519 key fingerprint is SHA256:NyuhOwhRh9sfzW+C2D5OIaTIbGCuVI1v1jrJv4DaM+U. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added ' 192.168.42.1' (ED25519) to the list of known hosts. root@192.168.42.1' s password: [root@milkv-duo]~ [root@milkv-duo]~ /root [root@milkv-duo]~ Linux milkv-duo 5.10.4-tag- [root@milkv-duo]~ -sh: lsb_release: not found [root@milkv-duo]~ -sh: neofetch: not found [root@milkv-duo]~ total 33 drwxr-xr-x 18 root root 1024 Feb 8 2024 ./ drwxr-xr-x 18 root root 1024 Feb 8 2024 ../ drwxr-xr-x 2 root root 3072 Feb 8 2024 bin/ drwxr-xr-x 7 root root 1540 Jan 1 00:00 dev/ drwxr-xr-x 8 root root 1024 Jan 1 00:00 etc/ drwxr-xr-x 3 root root 1024 Jan 30 2024 lib/ lrwxrwxrwx 1 root root 3 Feb 8 2024 lib64 -> lib/ lrwxrwxrwx 1 root root 11 Feb 8 2024 linuxrc -> bin/busybox* drwx------ 2 root root 16384 Feb 8 2024 lost+found/ drwxr-xr-x 2 root root 1024 Jan 30 2024 media/ drwxr-xr-x 6 root root 1024 Jan 30 2024 mnt/ drwxr-xr-x 2 root root 1024 Jan 30 2024 opt/ dr-xr-xr-x 122 root root 0 Jan 1 00:00 proc/ drwx------ 2 root root 1024 Jan 1 00:03 root/ drwxr-xr-x 4 root root 200 Jan 1 00:00 run/ drwxr-xr-x 2 root root 3072 Feb 8 2024 sbin/ dr-xr-xr-x 11 root root 0 Jan 1 00:00 sys/ drwxrwxrwt 3 root root 160 Jan 1 00:00 tmp/ drwxr-xr-x 8 root root 1024 Feb 8 2024 usr/ drwxr-xr-x 5 root root 1024 Feb 8 2024 var/ [root@milkv-duo]~ Filesystem Size Used Available Use% Mounted on /dev/root 752.0M 152.6M 557.0M 22% / devtmpfs 83.1M 0 83.1M 0% /dev tmpfs 83.1M 0 83.1M 0% /dev/shm tmpfs 83.1M 48.0K 83.1M 0% /tmp tmpfs 83.1M 32.0K 83.1M 0% /run [root@milkv-duo]~ processor : 0 hart : 0 isa : rv64imafdvcsu mmu : sv39 [root@milkv-duo]~ MemTotal: 170288 kB MemFree: 147812 kB MemAvailable: 148580 kB Buffers: 872 kB Cached: 3024 kB SwapCached: 0 kB Active: 2520 kB Inactive: 2808 kB Active(anon): 72 kB Inactive(anon): 1440 kB Active(file): 2448 kB Inactive(file): 1368 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 44 kB Writeback: 0 kB AnonPages: 1444 kB Mapped: 2532 kB Shmem: 80 kB KReclaimable: 2664 kB Slab: 7220 kB SReclaimable: 2664 kB SUnreclaim: 4556 kB KernelStack: 1024 kB PageTables: 404 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 85144 kB Committed_AS: 5004 kB VmallocTotal: 67108863 kB VmallocUsed: 4408 kB VmallocChunk: 0 kB Percpu: 32 kB CmaTotal: 0 kB CmaFree: 0 kB [root@milkv-duo]~
3.3 SSH into Milk-V Duo 256M via Wired
Connection
After my clumsy soldering, Milk-V Duo
256M is now able to be connected via my home Intranet. Now, let's
ssh into Milk-V Duo
256M via its IP address.
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@milkv-duo]~ 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 link /loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link /ether 0a:95:ef:1e:ec:c2 brd ff:ff:ff:ff:ff:ff inet 192.168.1.51/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0 valid_lft 259082sec preferred_lft 226682sec 3: usb0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 link /ether 5e:59:d4:f7:99:f7 brd ff:ff:ff:ff:ff:ff inet 192.168.42.1/24 brd 192.168.42.255 scope global usb0 valid_lft forever preferred_lft forever
4. Camera Test - Face
Detection
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 [root@milkv-duo]~ [root@milkv-duo]/bin arch chattr cpio dumpkmap getopt link lsattr mount nuke pwd setarch su uname ash chgrp date echo grep linux32 mk_cmds mountpoint pidof resume setpriv sync usleep base32 chmod dd egrep gunzip linux64 mkdir mt ping rm setserial tar vibase64 chown df false gzip ln mknod mv pipe_progress rmdir sh touch watchbusybox compile_et dmesg fdflush hostname login mktemp netstat printenv run-parts sleep true zcat cat cp dnsdomainname fgrep kill ls more nice ps sed stty umount[root@milkv-duo]/bin [SAMPLE_COMM_SNS_ParseIni]-1950: Parse /mnt/data/sensor_cfg.ini [parse_source_devnum]-1605: devNum = 1 [parse_sensor_name]-1686: sensor = GCORE_GC2083_MIPI_2M_30FPS_10BIT [parse_sensor_busid]-1714: bus_id = 2 [parse_sensor_i2caddr]-1725: sns_i2c_addr = 37 [parse_sensor_mipidev]-1736: mipi_dev = 0 [parse_sensor_laneid]-1747: Lane_id = 1, 0, 2, -1, -1 [parse_sensor_pnswap]-1758: pn_swap = 0, 0, 0, 0, 0 MMF Version:7e0cc6a08-musl_riscv64 Create VBPool[0], size: (3110400 * 3) = 9331200 bytes Create VBPool[1], size: (3110400 * 3) = 9331200 bytes Create VBPool[2], size: (2764800 * 1) = 2764800 bytes Total memory of VB pool: 21427200 bytes Initialize SYS and VB Initialize VI ISP Vipipe(0) Allocate pa(0x8c771000) va(0x0x3fbed36000) size(291120) stSnsrMode.u16Width 1920 stSnsrMode.u16Height 1080 25.000000 wdrMode 0 pstSnsObj 0x3fbf86b400 [SAMPLE_COMM_VI_StartMIPI]-483: sensor 0 stDevAttr.devno 0 awbInit ver 6.8@2021500 0 R:1400 B:3100 CT:2850 1 R:1500 B:2500 CT:3900 2 R:2300 B:1600 CT:6500 Golden 1024 1024 1024 WB Quadratic:0 isWdr:0 ViPipe:0,===GC2083 1080P 30fps 10bit LINE Init OK!=== ******************************************************************************** cvi_bin_isp message gerritId: 36403 commitId: c69c5863e md5: cab880835a2ad5184de5ed7762404b84 sensorNum 1 sensorName0 2083 PQBIN message gerritId: 80171 commitId: 5c9d8fc5d md5: ba5a510e093ad42db6788e6c2d13169e sensorNum 3 sensorName0 2053 author: wanqiang.he desc: 思博慧CV1812H_GC2083_RGB_mode_V1.0.0 createTime: 2023-08-04 16:48:08version: V1.1 tool Version: v3.0.5.24 mode: ******************************************************************************** sensorName(0) mismatch, mwSns:2083 != pqBinSns:2053 [SAMPLE_COMM_ISP_Thread]-95: ISP Dev 0 running! Initialize VPSS ---------VPSS[0]--------- Input size: (1920x1080) Input format: (19) VPSS physical device number: 1 Src Frame Rate: -1 Dst Frame Rate: -1 --------CHN[0]------- Output size: (1920x1080) Depth: 1 Do normalization: 0 Src Frame Rate: -1 Dst Frame Rate: -1 ---------------------- --------CHN[1]------- Output size: (1920x1080) Depth: 1 Do normalization: 0 Src Frame Rate: -1 Dst Frame Rate: -1 ---------------------- ------------------------ Bind VI with VPSS Grp(0), Chn(0) Attach VBPool(0) to VPSS Grp(0) Chn(0) Attach VBPool(1) to VPSS Grp(0) Chn(1) Initialize VENC venc codec: h264 venc frame size: 1920x1080 Initialize RTSP rtsp://192.168.1.51/h264 prio:0 version: 1.4.0 scrfd768432 Build at 2023-12-25 01:21:44 For platform cv181x Max SharedMem size:1658880 anchor:-8,-8,8,8 anchor:-16,-16,16,16 bbox:bbox_8_Conv_dequant landmark:kps_8_Conv_dequant score:score_8_Sigmoid_dequant anchor:-32,-32,32,32 anchor:-64,-64,64,64 bbox:bbox_16_Conv_dequant landmark:kps_16_Conv_dequant score:score_16_Sigmoid_dequant anchor:-128,-128,128,128 anchor:-256,-256,256,256 bbox:bbox_32_Conv_dequant landmark:kps_32_Conv_dequant score:score_32_Sigmoid_dequant Enter TDL thread Enter encoder thread 0 R:1165 B:3087 CT:2688 1 R:1464 B:2327 CT:3937 2 R:1974 B:1613 CT:7225 Golden 1464 1024 2327 wdrLEOnly:1 face count: 0 face count: 0 face count: 0 face count: 0 face count: 0 face count: 0 face count: 0 ......
One captured image over rtsp://ipaddress/h264
is shown
as follows:
Now, it's the time to go to bed. Happy Chinese new year's Eve. The
new year's day of 2024 is February 10, 2024.