https://www.hackster.io/news/olimex-s-one-euro-rvpc-single-board-computer-goes-up-for-sale-next-week-1cfe4fe2c985
- PS/2 keyboard connector
Where can you buy a PS/2 keyboard that's not a piece of junk fit for
the bin? It's a rare USB keyboard today that supports both protocols
since PS/2 is rarely needed and requires legit manufacturers pay a
license fee.
dxf <dxforth@gmail.com> writes:
Where can you buy a PS/2 keyboard that's not a piece of junk fit for
the bin? It's a rare USB keyboard today that supports both protocols
since PS/2 is rarely needed and requires legit manufacturers pay a
license fee.
I didn't know about this. Are there adapters?
And, I'm sure I've got
some PS/2 keyboards kicking around. But I wonder why they chose PS/2 if there was an issue like this.
There's also an issue with VGA as modern monitors only have HDMI.
VGA to HMDI adapters exist however user reviews suggest they don't
support low resolutions...
https://www.hackster.io/news/olimex-s-one-euro-rvpc-single-board-computer-goes-up-for-sale-next-week-1cfe4fe2c985
I went through this while considering whether to buy the Olimex Agon
Lite.
https://www.hackster.io/news/olimex-s-one-euro-rvpc-single-board-computer-goes-up-for-sale-next-week-1cfe4fe2c985^^^^^^
- CH32V003 MCU, 24 MHz, 16KB flash, 2KB ram, and 128B NVRAM
- Uses EC subset of RV32 architecture, so only 16 registers instead
of 32, but this is fine for Forth
- PS/2 keyboard connector
- VGA video connector
- Can apparenty supposedly 800x600 pixels on VGA, not sure how that is
possible with just 2K of ram
dxf <dxforth@gmail.com> writes:
There's also an issue with VGA as modern monitors only have HDMI.
VGA to HMDI adapters exist however user reviews suggest they don't
support low resolutions...
Tbh I don't know why they went for the approach of trying to support a keyboard and screen from that board. It's like they're trying to
replace a VIC-20 or something like that. A serial port (not sure if the
chip has a uart, but they could bit bang it) or USB (same thing) would
be just as good.
There's also an issue with VGA as modern monitors only have HDMI.
VGA to HMDI adapters exist however user reviews suggest they don't
support low resolutions...
Tbh I don't know why they went for the approach of trying to support a keyboard and screen from that board.
There's also an issue with VGA as modern monitors only have HDMI.
VGA to HMDI adapters exist however user reviews suggest they don't
support low resolutions...
This is just a matter of selecting the proper monitor
for your needs; that's why I use LG featuring three inputs:
DisplayPort / DVI / VGA.
There's also an issue with VGA as modern monitors only have HDMI.
VGA to HMDI adapters exist however user reviews suggest they don't
support low resolutions...
This is just a matter of selecting the proper monitor
for your needs; that's why I use LG featuring three inputs:
DisplayPort / DVI / VGA.
That's also getting harder. Current model LG 22MR410-B has a VGA port
but according to the spec the lowest res is 1024 x 768. The spec for
my 6yr LG says 640 x 480.
It's like the Yamaha "stereo" amp I bought not long ago. No phono
input.
To make matters worse the "CD" input was spec'd for 0.5v input. I had
to
rig a 6dB pad so the CD volume matched the tuner. Engineers - what engineers?
Either way, there might not be enough flash and ram to host recent
versions of Mecrisp.
Either way, there might not be enough flash and ram to host recentFor just $5 you can get something that'll take it:
versions of Mecrisp.
https://milkv.io/duo
https://milkv.io/duo
That's kind of interesting. Arm and riscv on the same die, like the new
RPi chip?
There are numerous videos about it on YT, from what I see — just
search for 'MILKV'.
...
That's why I prefer "vintage" Akai amp over modern gear. :)
Works like a charm, gives perfect sound — why would I need
anything newer.
That's why I prefer "vintage" Akai amp over modern gear. :)
Works like a charm, gives perfect sound — why would I need
anything newer.
When it dies for the umpteenth time and better to let it RIP.
That's why I prefer "vintage" Akai amp over modern gear. :)
Works like a charm, gives perfect sound — why would I need
anything newer.
When it dies for the umpteenth time and better to let it RIP.
But this is an opportunity to do full "restoration": https://www.youtube.com/watch?v=nCkbSklKsuw
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% /
In article <vesgmb$1i2rq$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
LIT <zbigniew2011@gmail.com> wrote:
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% /
This must be the "largest" one, not that 64 MB,
from what I see ("Available 549526" and its
prompt "root@milkv-duo")? Correct?
No. 'df' report "disc" (actually SD-card) space. 'free' reports
RAM:
[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 "total" is about 29Mb with 4Mb free. I put total in
quotes because part of RAM is reserved and in default configuration
there is large hunk reserved for media (camera, TPU, etc).
Concerning prompt, the 64Mb boards runs Linux and by default offers
root login.
--
Waldek Hebisch
For what it is worth.
I have ported the ciforth model (only 64 bits,the 5.4.0 level) onto
linux running on a riscv, taking advantage from earlier Dutch
implementation of noforth for triecky code words (UMD/MOD). http://home.hccnet.nl/a.w.m.van.der.horst/lina.html
As usual, all words are extensively tested, all words are documented.
Once you have mapped the io space in virtual space and access it
via VMA-IO, you can apply all knowledge gained from the documentation
of the underlying System On a Chip.
For this particular board the printed circuit layout, the schematics
(9 pages) and a full 1000+ page documentation of the SoC (Allwinner
D1) is available. That is why I bought it.
albert@spenarnc.xs4all.nl wrote:
In article <vesgmb$1i2rq$1@paganini.bofh.team>,buff/cache available
Waldek Hebisch <antispam@fricas.org> wrote:
LIT <zbigniew2011@gmail.com> wrote:
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% /
This must be the "largest" one, not that 64 MB,
from what I see ("Available 549526" and its
prompt "root@milkv-duo")? Correct?
No. 'df' report "disc" (actually SD-card) space. 'free' reports
RAM:
[root@milkv-duo]~# free
total used free shared
10328 11720Mem: 28972 14496 4148 76
Swap: 0 0 0
As you can see "total" is about 29Mb with 4Mb free. I put total in >>>quotes because part of RAM is reserved and in default configuration
there is large hunk reserved for media (camera, TPU, etc).
Concerning prompt, the 64Mb boards runs Linux and by default offers
root login.
--
Waldek Hebisch
For what it is worth.
I have ported the ciforth model (only 64 bits,the 5.4.0 level) onto
linux running on a riscv, taking advantage from earlier Dutch
implementation of noforth for triecky code words (UMD/MOD).
http://home.hccnet.nl/a.w.m.van.der.horst/lina.html
As usual, all words are extensively tested, all words are documented.
Thanks, works on Milkv.
Once you have mapped the io space in virtual space and access it
via VMA-IO, you can apply all knowledge gained from the documentation
of the underlying System On a Chip.
For this particular board the printed circuit layout, the schematics
(9 pages) and a full 1000+ page documentation of the SoC (Allwinner
D1) is available. That is why I bought it.
For Milkv there are schematics and chipset documentation (I did not
check how complete it is).
----
Waldek Hebisch
In article <vetqgo$1k6sl$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
albert@spenarnc.xs4all.nl wrote:
In article <vesgmb$1i2rq$1@paganini.bofh.team>,
For what it is worth.
I have ported the ciforth model (only 64 bits,the 5.4.0 level) onto
linux running on a riscv, taking advantage from earlier Dutch
implementation of noforth for triecky code words (UMD/MOD).
http://home.hccnet.nl/a.w.m.van.der.horst/lina.html
As usual, all words are extensively tested, all words are documented.
Thanks, works on Milkv.
Once you have mapped the io space in virtual space and access it
via VMA-IO, you can apply all knowledge gained from the documentation
of the underlying System On a Chip.
For this particular board the printed circuit layout, the schematics
(9 pages) and a full 1000+ page documentation of the SoC (Allwinner
D1) is available. That is why I bought it.
For Milkv there are schematics and chipset documentation (I did not
check how complete it is).
Could you try if the mapping succeeds?
Start up as root.
Now do
MMAP-IO
and check VMA-IO
It contains the virtual memory address, or possible an error code
-13. The SoC descriptions maps from VMA-IO.
You can also check DEV-MEM that should be 4, normally.
In forth.lab you can see the use of MMAP-IO in relation to
a number of SoC's.
I strive to have working: set-function gpio-on gpio-off gpio-on.
The io-nummers are system dependant.
RISCV ciforth beta 2023Mar30
MMAP-IO
OK
HEX
OK
VMA-IO @ .
B2000000 OK
DEV-MEM @ .
3 OK
Datasheet says that device address space starts at 0x01000000
and ends at 0x7FFFFFFF (above is DRAM). There is a command
line utility to do I/O. Sending 0x01000000 to 0x03022000 turns on
blue LED, sending 0x0 truns it off. AFAICS in lina corresponding
address is B2022000. More generally, there are four GPIO devices
(ports). Port 0 is at 0x03020000, port 1 at 0x03021000, port 2 at >0x03022000, port 3 at 0x03023000. Device access should be done in
32-bit units.
----
Waldek Hebisch
In article <vf5a40$2fkdi$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
<SNIP>
Encouraging.
RISCV ciforth beta 2023Mar30
MMAP-IO
OK
HEX
OK
VMA-IO @ .
B2000000 OK
DEV-MEM @ .
3 OK
Datasheet says that device address space starts at 0x01000000
and ends at 0x7FFFFFFF (above is DRAM). There is a command
line utility to do I/O. Sending 0x01000000 to 0x03022000 turns on
blue LED, sending 0x0 truns it off. AFAICS in lina corresponding
address is B2022000. More generally, there are four GPIO devices
(ports). Port 0 is at 0x03020000, port 1 at 0x03021000, port 2 at >>0x03022000, port 3 at 0x03023000. Device access should be done in
32-bit units.
This suggest that you can do the same from lina using virtual
addresses B302x000 . That is vma-io + 0x0100,0000 (device start) + 2x000.
You probably have to initialize the ports to output in some way
for this to work.
All io must be accessed with 32 bit. lina provides L! L@ for
this. (My conventions is B-W-L-Q ).
albert@spenarnc.xs4all.nl wrote:
In article <vf5a40$2fkdi$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
<SNIP>
Encouraging.
RISCV ciforth beta 2023Mar30
MMAP-IO
OK
HEX
OK
VMA-IO @ .
B2000000 OK
DEV-MEM @ .
3 OK
Datasheet says that device address space starts at 0x01000000
and ends at 0x7FFFFFFF (above is DRAM). There is a command
line utility to do I/O. Sending 0x01000000 to 0x03022000 turns on
blue LED, sending 0x0 truns it off. AFAICS in lina corresponding
address is B2022000. More generally, there are four GPIO devices >>>(ports). Port 0 is at 0x03020000, port 1 at 0x03021000, port 2 at >>>0x03022000, port 3 at 0x03023000. Device access should be done in
32-bit units.
This suggest that you can do the same from lina using virtual
addresses B302x000 . That is vma-io + 0x0100,0000 (device start) + 2x000.
You probably have to initialize the ports to output in some way
for this to work.
I tried first things like above and got segfaults. AFAICS lina B2000000 >corresponds to 0x3000000 in device space, so 0x03022000 corresponds to >B2022000. It seems that lina did not map block between 0x1000000
and 0x3000000, in this block that are 'ap_mailbox' and 'ap_system_ctrl',
it is probably not wise to mess with them from user space.
All io must be accessed with 32 bit. lina provides L! L@ for
this. (My conventions is B-W-L-Q ).
1000000 B2022000 L!
OK
0 B2022000 L!
OK
blinks the LED. I tried and 64-bit access works too, but it reads
or writes also the second register, so L! and L@ are simpler to use.
I still need to check which GPIO-s are actually usable, there is
4*32 = 128 logical lines, but the 64-Mb chip has only 68 pins.
There are several control registers deciding what pins do:
PINMUX, RTCSYS_GPIO and control registers for GPIO device.
LED was configured for GPIO output by bundled software, so
it was enough to write to the data port.
--
Waldek Hebisch
In article <vf5sit$2gjqb$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
albert@spenarnc.xs4all.nl wrote:
In article <vf5a40$2fkdi$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
<SNIP>
Encouraging.
RISCV ciforth beta 2023Mar30
MMAP-IO
OK
HEX
OK
VMA-IO @ .
B2000000 OK
DEV-MEM @ .
3 OK
Datasheet says that device address space starts at 0x01000000
and ends at 0x7FFFFFFF (above is DRAM). There is a command
line utility to do I/O. Sending 0x01000000 to 0x03022000 turns on
blue LED, sending 0x0 truns it off. AFAICS in lina corresponding >>>>address is B2022000. More generally, there are four GPIO devices >>>>(ports). Port 0 is at 0x03020000, port 1 at 0x03021000, port 2 at >>>>0x03022000, port 3 at 0x03023000. Device access should be done in >>>>32-bit units.
This suggest that you can do the same from lina using virtual
addresses B302x000 . That is vma-io + 0x0100,0000 (device start) + 2x000. >>> You probably have to initialize the ports to output in some way
for this to work.
I tried first things like above and got segfaults. AFAICS lina B2000000 >>corresponds to 0x3000000 in device space, so 0x03022000 corresponds to >>B2022000. It seems that lina did not map block between 0x1000000
and 0x3000000, in this block that are 'ap_mailbox' and 'ap_system_ctrl',
it is probably not wise to mess with them from user space.
Apparently it was wrong to add the 0x0100,0000. vma-io contains the
device start. Then it works.
The addresses below 0x0100,0000 are for chip control, start up,
not so much for peripherals.
All io must be accessed with 32 bit. lina provides L! L@ for
this. (My conventions is B-W-L-Q ).
1000000 B2022000 L!
OK
0 B2022000 L!
OK
blinks the LED. I tried and 64-bit access works too, but it reads
or writes also the second register, so L! and L@ are simpler to use.
I still need to check which GPIO-s are actually usable, there is
4*32 = 128 logical lines, but the 64-Mb chip has only 68 pins.
The board I have DongshanNezha a ball grid with 377 balls.
Io pins are A-G with up to 18 bits per port, a bit irregular but
a lot.
Not bad for less than 30 euro's. 60 pin's readily available to
attach to.
For generating midi (31kbaud serial) I used merely one pin to
play FIG leaf rag on the keyboard.
There are several control registers deciding what pins do:
PINMUX, RTCSYS_GPIO and control registers for GPIO device.
LED was configured for GPIO output by bundled software, so
it was enough to write to the data port.
If you have a detailed electronics layout, it is easy to see
what ports are free to use. It can be a pain to configure the
io. There is an example for the DongshanNezha board in forth.lab.
Concerning forth.lab, I see there only examples for Raspberry Pi
and Orange Pi, but nothing for Risc-V boards. I fetched
version from 2023Mar30, which looked as only available version
for Risc-V. Assembly code is clearly for Risc-V, but
documentation says Arm or aarch and forth.lab also looks
like one form Arm.
----
Waldek Hebisch
albert@spenarnc.xs4all.nl wrote:
In article <vf5a40$2fkdi$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
<SNIP>
Encouraging.
RISCV ciforth beta 2023Mar30
MMAP-IO
OK
HEX
OK
VMA-IO @ .
B2000000 OK
DEV-MEM @ .
3 OK
Datasheet says that device address space starts at 0x01000000
and ends at 0x7FFFFFFF (above is DRAM). There is a command
line utility to do I/O. Sending 0x01000000 to 0x03022000 turns on
blue LED, sending 0x0 truns it off. AFAICS in lina corresponding
address is B2022000. More generally, there are four GPIO devices >>>(ports). Port 0 is at 0x03020000, port 1 at 0x03021000, port 2 at >>>0x03022000, port 3 at 0x03023000. Device access should be done in
32-bit units.
This suggest that you can do the same from lina using virtual
addresses B302x000 . That is vma-io + 0x0100,0000 (device start) + 2x000.
You probably have to initialize the ports to output in some way
for this to work.
I tried first things like above and got segfaults. AFAICS lina B2000000 corresponds to 0x3000000 in device space, so 0x03022000 corresponds to B2022000. It seems that lina did not map block between 0x1000000
and 0x3000000, in this block that are 'ap_mailbox' and 'ap_system_ctrl',
it is probably not wise to mess with them from user space.
All io must be accessed with 32 bit. lina provides L! L@ for
this. (My conventions is B-W-L-Q ).
1000000 B2022000 L!
OK
0 B2022000 L!
OK
blinks the LED. I tried and 64-bit access works too, but it reads
or writes also the second register, so L! and L@ are simpler to use.
BTW: Chip datasheet talks about ports and pin numbers within
ports, Milkv Duo picture uses pin numbers but there is mixup
with ports. There is command line outility to deal with pins,
it uses different numbering similar to numbering on the board
but not the same. Linux uses still different ping numbering.
Above I use pin number withing port + 32*port number where
ports are numbered from 0.
----
Waldek Hebisch
Waldek Hebisch <antispam@fricas.org> wrote:<SNIP>
Milkv Duos have 5 GPIO ports, formally 32-bit but many lines are
not connected to outputs. One port in RTC block and has
base address 0x05021000, the other ports are at 0x03020000 + n*0x1000
where n is port number. Output register is at offset 0, at offset
4 is direction register (setting bit to 1 means that line is an
output). At offset 0x50 is input register. Other registers
deal with interrupts.
ATM I have the following:
HEX
: LBIS DUP L@ ROT OR SWAP L! ;
: LBIC DUP L@ ROT INVERT AND SWAP L! ;
: gpio-base DUP 4 = IF DROP 2001000 ELSE 1000 * THEN VMA-IO @ + 20000 + ;
: bit-data 20 /MOD SWAP 1 SWAP LSHIFT SWAP gpio-base ;
: gpio-on bit-data LBIS ;
: gpio-off bit-data LBIC ;
which outputs bits to data register. To get actual output one
need to set direction register and associate PIN with GPIO function.
--
Waldek Hebisch
In article <vfhgqc$3sajh$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
<SNIP>
BTW: Chip datasheet talks about ports and pin numbers within
ports, Milkv Duo picture uses pin numbers but there is mixup
with ports. There is command line outility to deal with pins,
it uses different numbering similar to numbering on the board
but not the same. Linux uses still different ping numbering.
Above I use pin number withing port + 32*port number where
ports are numbered from 0.
That is a sensible convention, I use the same.
In my riscv board the output are marked i.e. GD13 that
has assigned the Forth io number (^D-1)*0x20 +13 .
That gets 0x6D .
In article <vfhgqc$3sajh$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
which outputs bits to data register. To get actual output one
need to set direction register and associate PIN with GPIO function.
I defined set-function by ( fun# gpio#)
and redefine fun# that I always 0 for input , -1 for output.
This make a 1602 driver almost portable except for defining
the port numbers/
albert@spenarnc.xs4all.nl wrote:
In article <vfhgqc$3sajh$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
<SNIP>
BTW: Chip datasheet talks about ports and pin numbers within
ports, Milkv Duo picture uses pin numbers but there is mixup
with ports. There is command line outility to deal with pins,
it uses different numbering similar to numbering on the board
but not the same. Linux uses still different ping numbering.
Above I use pin number withing port + 32*port number where
ports are numbered from 0.
That is a sensible convention, I use the same.
In my riscv board the output are marked i.e. GD13 that
has assigned the Forth io number (^D-1)*0x20 +13 .
That gets 0x6D .
64 MB Milkv Duo board has marking like GP0, GP1, etc. As I wrote
this does not agree with most other sources. I think 256 MB
version has "the same" marking, but probably slightly different >correspondence with ports and lines withing ports. Milkv
Duo S has different connectors and no marking on the board.
Each has different chip, 64 MB is CV1800B (68 pin QFP, 1 GHz Risc-V +
700MHz Risc-V + 8051), 256 MB is SG2002 (88 pin QFP, 1GHz Arm +
1 GHz Risc-V + 700MHz Risc-V + 8051), Duo-S had 512 MB RAM and
uses SG2000 (205 pin BGA, 1GHz Arm + 1 GHz Risc-V + 700MHz Risc-V +
8051). On 64 MB duo there are some pins that apparently can be
connected to two different ports, reference via "canonical" label
of a pin would exclude such thing.
----
Waldek Hebisch
albert@spenarnc.xs4all.nl wrote:
In article <vfhgqc$3sajh$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
which outputs bits to data register. To get actual output one
need to set direction register and associate PIN with GPIO function.
I defined set-function by ( fun# gpio#)
and redefine fun# that I always 0 for input , -1 for output.
This make a 1602 driver almost portable except for defining
the port numbers/
One pin may have several functions, not only GPIO. Do you mean
that you change numbering of functions so that 0 is GPIO input,
-1 is GPIO output and other functions get other numbers?
----
Waldek Hebisch
Sysop: | DaiTengu |
---|---|
Location: | Appleton, WI |
Users: | 1,007 |
Nodes: | 10 (0 / 10) |
Uptime: | 198:58:48 |
Calls: | 13,143 |
Files: | 186,574 |
D/L today: |
536 files (122M bytes) |
Messages: | 3,310,174 |