Paul Rubin <
no.email@nospam.invalid> wrote:
zbigniew2011@gmail.com (LIT) writes:
There are numerous videos about it on YT, from what I see — just
search for 'MILKV'.
I looked at the milkv web site a bit more, and it looks nice. I see the
256MB version in the $15 range on aliexpress. The 64MB version is
harder to buy in the US. And, I have no idea how well the software
works on either version.
I ordered 3 kinds: 64Mb, 256Mb and Milkv-Duo-S (this has 512 Mb).
Linux images fetched from Github boot fine and simple things
work. This is very minimal Linux, on 64Mb board I get:
[
root@milkv-duo]~# cat /proc/cpuinfo
processor : 0
hart : 0
isa : rv64imafdvcsu
mmu : sv39
[
root@milkv-duo]~# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 770048 177105 549526 25% /
devtmpfs 14408 0 14408 0% /dev
tmpfs 14484 0 14484 0% /dev/shm
tmpfs 14484 48 14436 1% /tmp
tmpfs 14484 28 14456 1% /run
/dev/mmcblk0p1 130798 3226 127572 3% /boot
[
root@milkv-duo]~# free
total used free shared buff/cache available
Mem: 28972 14496 4148 76 10328 11720
Swap: 0 0 0
As you can see Linux take 177Mb of disc space. There is no compiler
(and even no assembler) and available utilities are quite limited. This
is probably intended to be a Python board, Python takes about 75 Mb of
disc space. But 64Mb version may be short on memory for Python. For
example
[
root@milkv-duo]~# pip3 list
Killed
Apparently this tried to use 13Mb and triggered oom-kill.
On 64Mb board memory available to Linux is limited as 29Mb
is reserved mainly for media purposes (apparently one needs
to rebuild disc image to change memory allocation).
I my short trial I met two glitches. On Milkv-Duo-S 'poweroff'
instead of turning off the board causes reboot (on 64Mb board
'poweroff' works fine). This is known problem at least for few
months. The second trouble is that they propose to use USB
networking (CDC-NCM). This works fine with one of my desktop
machines, but fails with other. Since in both cases I use the
same Milkv board the trouble seem to be on Linux side (possibly
a security limitation). But they write "it just works". On
Milkv-Duo-S is also tried to connect Ethernet, it worked fine.
It seems that developement for those board is supposed to be done
by cross compilation. There seem to be considerable fragmentation
of Risc-V ecosystem. First, there are many possible subsets. IIUC
'rv64imafd' is supposed to be reasonably sane base and the board
support more: 'rv64imafdvcsu' which IIUC adds compressed instructions,
vestor extention and some systmem (priviledged extention). Provided
Linux uses 'musl'. On desktop machine I fetched Debian cross compiler
for Risc-V, it is based on 'glibc'. ATM I managed to cross-compile
statically linked hello world, after copying to the board it worked
fine (but executable is 491kb). I also cross-assembled assembly
version, this one is 1480b. So, cross-assembling or cross compiling
some Forth should not be very hard.
ATM I am thinking about good use case for 64Mb board. Nice thing
is low power use. When board is "doing nothing" (more precisly
board is blinking the blue LED and I am logged in via USB network)
my USB power meter shows 0 (it is certainly not 0 but almost
surely less than 50mA), with CPU-intensive job on Linux core I see
70mA power draw. So powerwise it is probably competitive with
Cortex-M processors. OTOH main justification for Linux boards
is networking and having real web server. But the 64-Mb board
(and 256-Mb board) needs external Ethernet transformer and
connector, in principle nothing hard, but practically it will
add cost and make it less convenient. I must admit that
Duo-S which has Ethernet connector looks more attractive to
me, despite costing twice as much as 64Mb board.
AFAICS the Risc-V developement tools are extremally bloated.
Source for the Linux image is about 4.5Gb, toolchain sources
about 6.8Gb.
-- Waldek Hebisch