VOGONS


TinyLlama (Vortex86EX SBC)

Topic actions

First post, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

Update Apr 6, 2023: I made a wavetable adapter for the revision 2.1 TinyLlama
Update Feb 12, 2023: Version 2 is out, details here

Update Oct 17, 2022: Limited batch of kits for sale, still available: Re: TinyLlama (Vortex86EX SBC)
Update Oct 16, 2022: Github page is finally up: https://github.com/eivindbohler/tinyllama

Original post:

Hi all,

Back in 2019 I started experimenting with the Vortex86EX-based 86Duino system-on-module and made a functioning board. My focus at the time was to also build a SB-compatible add-on board, but this proved more difficult and I just got fed up with the whole project. After being inspired by rasteri's excellent weeCee project and getting my hands on a Raspberry Pi Zero 2 (more on that later), I figured I'd give this another shot...

Say hello to the TinyLlama! 😀

IMG_3594.jpeg
Filename
IMG_3594.jpeg
File size
629.75 KiB
Views
17678 views
File license
Fair use/fair dealing exception
IMG_3595.jpeg
Filename
IMG_3595.jpeg
File size
489.95 KiB
Views
17678 views
File license
Fair use/fair dealing exception
IMG_3596.jpeg
Filename
IMG_3596.jpeg
File size
274.14 KiB
Views
17678 views
File license
Fair use/fair dealing exception

At a high level, the prototype board measures 100x66 mm, has an 86Duino SOM with 128MB of RAM, a Vortex86VGA board (4MB of VRAM), a Crystal CS4237B sound chip, 3.5mm audio jack, microSD, 2xUSB, micro-USB for power, RTC battery holder (CR2032). For MT32/MIDI, you can connect a Pi-Zero2 which feeds its digital audio to a GY-PCM5102 DAC, which in turn sends the analog audio back into the Crystal to be mixed. There's also pins available for a breakout board with serial and PS/2 keyboard and mouse connectors (though USB keyboards and mice work great).

Size compared to a Pi3:

IMG_3597.jpeg
Filename
IMG_3597.jpeg
File size
502.71 KiB
Views
17678 views
File license
Fair use/fair dealing exception

One of my main goals with this project was to keep the BOM cost as low as possible. The SOM and VGA boards aren't as powerful as an ICOP Vortex86DX variant, but way less expensive. I think they're around 77 USD including mounting header pins atm. Add a cheap Pi-Zero2 and a GY-PCM5102 from AliExpress, plus the PCB, Crystal chip and standard SMD components, shouldn't be that bad.

The Vortex86EX is a strange beast, where you have to compile your own ROM with Coreboot and SeaBIOS, add various configs and the VGA ROM, and a special bunch of bytes (which DMP calls the "crossbar"), telling the Vortex how to route all of its functions to the 128 pins available. Took me quite a while to get all of that jazz working.

Status right now is that the main system is working, booting (from SD or USB) into DOS, video is fine. I'm having a bit of a rough time getting the Crystal chip working, might be a bad chip, bad soldering or something else - it's not being recognized as a PnP device. I'll post follow-ups later, might be in need of some of you CS4237-experts in here! 😉

Last edited by Eivind on 2023-04-06, 15:34. Edited 7 times in total.

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 2 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

I'm not familiair with the 86duino. Is this emulation or fully x86 hardware compatible?

The 86Duino is an x86-based Arduino project created by the Taiwanese company DMP Electronics, who also manufacture various x86 chips in the Vortex series.
The Vortex86EX is a real 32-bit x86 processor, running at a default 300MHz. Feature-wise it's comparable to a Pentium Pro IIRC, and speed-wise closer to a 486.

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 3 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

I discovered that the RSTDRV (ISA bus reset signal) coming from the Vortex was always asserted, causing all connected devices on the bus to be in a constant reset state. 😐 The Vortex86EX datasheet available from the 86Duino website is missing a ton of pages describing North- and South bridge control registers. I tried contacting DMP directly (no answer yet) and ICOP, who did respond but wouldn't let me have the full datasheet.
To get around this, I bodged in a tiny inverter and used the active-low PCIRST signal instead, and I got the Crystal chip running! Flashed its EEPROM and it's working great. SB is only working on IRQ7 for some reason I haven't figured out yet, but FM, digital sound and MIDI is all good. I connected the Raspberry Pi Zero 2 running MT32-Pi and the GY-PCM5102 DAC, and I got sweet MT32 and MIDI soundfonts mixed in with the Crystal's regular output.
I've only tried Monkey Island 2 and Doom so far, but they run flawlessly.

I'll clean up the board design (the prototype has more than a few bodges) and publish everything on Github as soon as I can.

Here's a photo of the whole system running happily:

IMG_3607.jpeg
Filename
IMG_3607.jpeg
File size
1.27 MiB
Views
17549 views
File license
Fair use/fair dealing exception

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 5 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

Impressive. I like these small DOS compatible computers. I wish someone would sell devices like these (assembled) for a reasonable price 😀

Actually not that far fetched, given that I can order these boards with most of the components pre-assembled from JLCPCB. I'll look into whether this is a thing to consider after I've ordered and tested a batch of the second-revision version.

Question for the experts (640K!enough): I tried desoldering the eeprom to see what would happen, and apparently everything still works correctly. I assume the CWDINIT.EXE (v286) just takes care of everything. Would there still be a reason to keep the eeprom on the board...?

Edit: Actually I didn't get SB FM or Adlib without the eeprom in place, so nevermind... :p

Last edited by Eivind on 2021-12-04, 01:33. Edited 1 time in total.

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 7 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

Update - I've spun up revision 1.1, waiting to get the boards delivered.
Changes:
* Fixed errors in 1.0, hopefully no more bodges needed.
* Better alignments of connectors, should fit nicely in a 3d-printed case.
* Added a pc-speaker.
* Added a RS232-DB9 serial connector + 3-pin TTL serial for debugging.
* Added two more buttons + I2C connector for an OLED display, for a better MT32-Pi experience.
* Added a virtual floppy image to the ROM for easier BIOS upgrades.

Will post pictures and eventually a full Github page in a couple of weeks.

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 8 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

Still waiting on the 1.1 boards, JLC messed up my first order and I had to put in a re-order.
In the mean time, I've played around with the BIOS. Seabios doesn't really have any live configuration built-in (being a generic solution, not tied to specific mainboards or CPU's), everything must be configured before compiling.
I found the byte addresses in the ROM file that controls the PLL clock, CPU and RAM frequency dividers and experimented with different values, calculating the the necessary checksums as I went along.
Then I added a boot-time menu that'll let you change the CPU speed and L1 cache enabled/disabled state, saving the new values to the ROM file.
From initial trial-and-error it seems the CPU is stable from 50 MHz up to around 500-533 MHz. Will probably require a bit of active cooling at the higher end if put in a case.
Turning off the L1 cache (which can also be done using SETMUL) I finally got Monkey Island 1 playing MT-32 music without dropping half the notes! 😀

IMG_3647.jpeg
Filename
IMG_3647.jpeg
File size
1.68 MiB
Views
17235 views
File comment
Modified boot menu
File license
Fair use/fair dealing exception
Screenshot 2021-12-24 at 13.08.15.png
Filename
Screenshot 2021-12-24 at 13.08.15.png
File size
587.84 KiB
Views
17235 views
File comment
Rev.1.1 Kicad layout
File license
Fair use/fair dealing exception

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 9 of 664, by carlostex

User metadata
Rank l33t
Rank
l33t

I'm very interested in seeing benchmarks of this Vortex SoC in its lowest clock speed possible. Is it 50MHz?

Would also be Nice if the board would support a YMF-71X chipset as an alternative to the CS4237.

Reply 10 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

I'm very interested in seeing benchmarks of this Vortex SoC in its lowest clock speed possible. Is it 50MHz?

Which benchmark(s) in particular are you interested in? 50 MHz is currently the lowest I've gotten - the CPU speed is tied to the DRAM speed in that the PLL/CPU divider has a range of [2-6] and the PLL/DRAM divider can only be 2 or 4. I suspect the DRAM doesn't like being clocked too low. Still investigating. Btw, turning the L1 cache off makes the system pretty sluggish - let me know if you want me to test with or without it enabled.

Would also be Nice if the board would support a YMF-71X chipset as an alternative to the CS4237

This is definitely not something I'll prioritize right now! 😁 What's your reasoning behind this wish? Better FM synth sound? I imagine it would be easier to integrate a real OPL3 solution, but the beauty of the cs4237 is its nice all-in-one feature set, and that it doesn't require much else in terms of external components.
Edit: Forgive my ignorance, I hadn't really looked into these chips before. At a glance it looks like these could actually be a viable alternative to the CS4237B - they appear to be just as good as an all-in-one sound chip, and having a real OPL3 synth is definitely a plus. I'll look into availability of these and note this as a possible improvement for a later revision! Thanks, carlostex!

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 11 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

Turned out, 50 MHz CPU clock (125 MHz RAM clock) crashed a lot. 60/150 seems stable enough though.
I ran a few benchmarks from Phil's DOS Benchmark Pack:

60/150 (L1 cache disabled):
3DBench 1.0: 13.6 fps
Chris: 7.9 fps
Chris 640x480: 1.9 fps
PC Player: 4.0 fps
PC Player 640x480: 2.0 fps

60/150 (L1 cache enabled):
3DBench 1.0: 37.0 fps
Chris: 26.3 fps
Chris 640x480: 8.5 fps
PC Player: 16.6 fps
PC Player 640x480: 6.7 fps

500/375 (L1 cache disabled):
3DBench 1.0: 34.4 fps
Chris: 24.5 fps
Chris 640x480: 6.2 fps
PC Player: 13.5 fps
PC Player 640x480: 6.0 fps

500/375 (L1 cache enabled):
3DBench 1.0: 66.6 fps
Chris: 70.3 fps
Chris 640x480: 21.8 fps
PC Player: 63.2 fps
PC Player 640x480: 10.9 fps
Doom a: 167.8 fps
Doom b: 27.6 fps
Quake c: 38.3 fps
Quake d: 17.0 fps
Quake e: 4.4 fps

To summarize: Older DOS games run great when lowering the CPU clock and turning off the L1 cache. When cranking the clock up to 500 MHz, you'll get a nice experience with most games up to and including Quake at resonably low resolutions.

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 12 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

Update: still working on the GitHub repo - in the mean time, here's a link to a Youtube video of rev.1.1 up and running: https://www.youtube.com/watch?v=iFZJjNTxgu8

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 13 of 664, by janih

User metadata
Rank Newbie
Rank
Newbie
Eivind wrote on 2022-01-20, 02:24:

Update: still working on the GitHub repo - in the mean time, here's a link to a Youtube video of rev.1.1 up and running: https://www.youtube.com/watch?v=iFZJjNTxgu8

Looks great. Github repo up yet? 😀

Reply 14 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

Looks great. Github repo up yet? 😀

I was working frantically on it back in January, and then suddenly I discovered that 86Duino/DMP was all out of both the cheap 128MB EX module as well as the VGA module. I enquired about availability, and was given a vague 4-month estimate with a not-so-subtle suggestion that I should put in an order for a larger quantity of units. This was a real blow, since these awesome and cheap little boards had been in stock for years. I was a bit dismayed, so I put everything on hold for a while.
I should really get back to it though, would be nice to have the GH page up in case the modules return. Thanks for the bump! 😉

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 15 of 664, by red-ray

User metadata
Rank Oldbie
Rank
Oldbie
Eivind wrote on 2021-11-27, 01:50:

Vortex86EX-based

I just spotted your thread and an wondering how well my SIV utility will report it, SIV did OK on a DX, but don't think I have tried it on an EX.

Please will you try it and post the two Menu->File->Save Local files so I can check?

Attachments

Reply 16 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

I just spotted your thread and an wondering how well my SIV utility will report it, SIV did OK on a DX, but don't think I have tried it on an EX.
Please will you try it and post the two Menu->File->Save Local files so I can check?

I haven't played around with Windows much on this computer but I can give it a shot one of these days, sure!

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 17 of 664, by gimbal-lock

User metadata
Rank Newbie
Rank
Newbie
Eivind wrote on 2022-04-09, 21:19:

Looks great. Github repo up yet? 😀

I was working frantically on it back in January, and then suddenly I discovered that 86Duino/DMP was all out of both the cheap 128MB EX module as well as the VGA module. I enquired about availability, and was given a vague 4-month estimate with a not-so-subtle suggestion that I should put in an order for a larger quantity of units. This was a real blow, since these awesome and cheap little boards had been in stock for years. I was a bit dismayed, so I put everything on hold for a while.
I should really get back to it though, would be nice to have the GH page up in case the modules return. Thanks for the bump! 😉

Joined moments ago after spotting your awesome 86Duino project, very nice work! I'm afraid the supply chain issue is affecting all manufacturers these days, including DMP. One of the many problems is sourcing the 128MB DRAM chip, probably because not much demand for small memories these days. It seems the 1GB version will be more available in the future, costing $18 USD above the 128MB version. I don't have any relationship with DMP other than buying x86 boards and their responses to lead times and supply issues.
Please let me know if you do another run of those boards, I'm very interested in buying a few of them.

Reply 18 of 664, by Eivind

User metadata
Rank Oldbie
Rank
Oldbie

Joined moments ago after spotting your awesome 86Duino project, very nice work! I'm afraid the supply chain issue is affecting all manufacturers these days, including DMP. One of the many problems is sourcing the 128MB DRAM chip, probably because not much demand for small memories these days. It seems the 1GB version will be more available in the future, costing $18 USD above the 128MB version. I don't have any relationship with DMP other than buying x86 boards and their responses to lead times and supply issues.
Please let me know if you do another run of those boards, I'm very interested in buying a few of them.

I just checked, the 1GB modules are also unavailable now. I sent an updated request for future availability to DMP, let's see what their response will be...
I actually have PCB's and components in stock for a run of ~30 units which I'll happily sell as kits or assembled - if we can just get our hands on the x86 & vga modules! :p

TinyLlama 3
ITX-Llama motherboard
TinyLlama SBC

Reply 19 of 664, by gimbal-lock

User metadata
Rank Newbie
Rank
Newbie
Eivind wrote on 2022-04-15, 12:26:

Joined moments ago after spotting your awesome 86Duino project, very nice work! I'm afraid the supply chain issue is affecting all manufacturers these days, including DMP. One of the many problems is sourcing the 128MB DRAM chip, probably because not much demand for small memories these days. It seems the 1GB version will be more available in the future, costing $18 USD above the 128MB version. I don't have any relationship with DMP other than buying x86 boards and their responses to lead times and supply issues.
Please let me know if you do another run of those boards, I'm very interested in buying a few of them.

I just checked, the 1GB modules are also unavailable now. I sent an updated request for future availability to DMP, let's see what their response will be...
I actually have PCB's and components in stock for a run of ~30 units which I'll happily sell as kits or assembled - if we can just get our hands on the x86 & vga modules! :p

Assembled would be great. I have a few x86 and vga modules available, maybe we can work out a trade of some sort?