At first it didn’t build but after Twitter consultation the problem appear with PlatformIO which was searching for obsolete version of ESP32 tools, after adding one line in platformio.ini
the project compiled and show on the screen, there are still some annoying things like menus not working well and no programs in the slots, but I stopped spending time on it 🙂 a little bit more documentation would be helpful though!
Many people asked when W65C265 computer like AgonLight2 will be available and I reply that even now such computer is available: The Mensch W65C265 computer is available at Mouser for EUR 18!
Today I wired Mensch to ESP32-SBC-FabGL access bus following this schematic:
AccessBus.pin1 +5V to Mensch.J5.pin.3
AccessBus.pin3 GND to Mensch.J5.pin.1
AccessBus.pin5 (TX) to Mensch.J5.pin4 (RX)
AccessBus.pin6 (RX) in series with 220 ohm resistor to Mensch.J5.pin5 (TX)
The 220 ohm resistor is necessary as current limiter as Mensch is working on 5V while ESP32 on 3.3V
ESP32-SBC-FabGL is running the standard FabGL ANSI Termainal example with small modification. Mensch sends only CR but not LF. So the FabGL code should be changed when see CR on Serial port to send CR+LF to the terminal. In serialport.cpp this should be add:
void SerialPortTerminalConnector::rxCallback(void * args, uint8_t value, bool fromISR)
{
auto obj = (SerialPortTerminalConnector *) args;
if (obj->m_serialPortRXEnabled) {
obj->m_terminal->write(value, fromISR);
if (value == 13)
obj->m_terminal->write(10, false);
}
}
and we are set 🙂 now Mensch have VGA display and PS2 keyboard!
I learned about the FabGL library when we started manufacturing AgonLight2. The ESP32 was used as a graphics, sound, and IO keyboard co-processor for Bernardo’s Z80 design.
Upon checking the library, I discovered that the author, Fabrizio Di Vittorio, had already created several emulators for Altair8080, VIC20, and even old DOS PCs!
This is how the idea for ESP32-SBC-FabGL was born. I wanted to create a board that could be used as a graphics/sound/IO co-processor for other retro computers based on different processors.
Here is the ESP32-SBC-FabGL layout 105 x 65 mm board:
ESP32-SBC-FabGL uses ESP32-WROVER with 4MB Flash and 8MB PSRAM.
As you may guess, this will be very convenient platform to create Retro Computers based on same principle as AgonLight2, so some Retro Computers based on this platform will follow, but do not ask when 😉
The Access bus will provide interface to retro processors hats for Graphics, Sound, Keyboard and Mouse.
The LCD hat will allow handheld Game consoles to be created easily.
The LiPo battery charger and connector provide stand alone operation without USB connection.
Today we build the first prototypes and they work as expected.
All FabGL demos works!
Altair8080 with CP/M:
IBM-PC with DOS:
It was quite blast from the past to see Turbo Pascal 3.0 running
Boy it took me a while to remember how to quit the editor 🙂
ESP32-SBC-FabGL will be ready for sale in June.
We will put it on the web with pre-order state this week.
The price will be EUR 15.00.
In this price is included royalties for the Author of FabGL, so by buying this board you will support Fabrizio and his further developments.
I will admit, I have a sentiment for retro computers. This is probably because my career in IT started many years ago with the Bulgarian Apple ][ clone called IMKO2, later renamed to Pravetz 82.
This is also one of the reasons Olimex stepped into the AgonLight production.
AgonLight sparked a lot of enthusiasm and activity, not only here at Olimex. Bernardo Kastrup hit the sweet spot of the Retro Computer maniacs by offering them a small, fast, feature-packed real Z80 machine with plenty of memory. The Facebook group already has close to 1000 members!
There are a lot of posts about why not having a 6502-based machine, and Kyle (mos_8502), Rebecca (RenewedRebecca) and Bernardo (TheByteAttic) are already working on a W65C265 version using the same ESP32 FabGL-based video and audio system.
Two weeks ago, I started thinking, as an engineering challenge, is it possible to build a modern peripheral 6502 computer that is with the lowest possible cost.
Then I put the minimal requirements for my 6502 computer:
It must have a real 6502 processor.
It must have a minimum of 64KB of RAM.
This computer must run as fast as possible. People confirm that the W65C02 from WDC can be overclocked up to 16Mhz. On the other hand, a lot of software depends on instruction execution time for loops, so the possibility to run at a lower 1Mhz clock will ensure backward software compatibility. This can be achieved with a variable clock that can be set by 6502 software.
The computer must have a modern video interface like DVI/HDMI so that you can connect it to your home TV or modern monitor.
Support for a modern USB keyboard.
A sound synthesizer like the popular C64 SID.
The power supply should be via a USB-C connector so that you can use any phone charger with a USB-C cable.
A UEXT connector with modern interfaces like UART, I2C, SPI.
Disk storage for code.
The 6502 bus should be available on a slot/connector so that additional hardware can be easily added on.
The final requirement is to design such a system to be at the lowest possible price, making it an easy purchase decision, similar to what the Raspberry Pi did with a price of $25-30.
This is a good hardware engineering challenge!
After some research I have decided to use the Raspberry Pi’s new dual-core Cortex-M0 RP2040 as an emulator for everything except the 6502.
The RP2040 will emulate:
The RAM memory. The RP2040 has 264KB of RAM, which is plenty of RAM to hold the emulator code and at least 64KB for the 6502. As the RP2040 runs at 133 MHz, there will be no issue serving the slow 6502 with memory read/write operations. If there is more RAM left, we can implement some kind of bank switching, such as 56KB of continuous RAM from $2000-FFFF and switchable RAM banks for $0000-1FFFF. Alternatively, we can define a pointer and block size somewhere in the upper memory location, which can overlap different RAM segments at any address at any time. After all, what the RP2040 will serve at a given address depends only on the pointer, which will show where this data needs to be fetched from.
Initially, I thought of using the Si5153 programmable oscillator, which can clock from 250kHz up to 100MHz, but after checking the RP2040 PWM specs, I found that the RP2040 can also generate a programmable clock for the 6502 from 0 up to 100MHz. This saves us one more IC!
There is already a DVI generation project with RP2040 called picoDVI, which supports 640×480 pixel resolution with RGB565 16-bit color depth. This project loads about 60% of one of the cores in RP2040.
RP2040 has USB host capability, so there are no issues whatsoever in connecting a USB keyboard to it.
There are already RP2040 SID player projects that exist and can be reused for sound generation, such as picoSID.
Although the UART, I2C, and SPI are interfaces that the 6502 originally did not have, we can catch memory location read/write exceptions with RP2040 and emulate a classic PIA or ACIA. Alternatively, we can define some API in memory to access I2C and SPI buffers.
As for disk storage, RP2040 will have 2MB of external SPI flash to hold the firmware, but there will be a lot of free space. The Apple ][ 5″ floppy was holding the humble 114KB, so around 10 classic floppy discs could fit in a little more than 1MB.
One week ago, I posted my idea on the Homebrew 6502 Facebook group and received more than 100 replies with valuable comments and suggestions.
To summarize all the feedback and prevent redundant discussions, here are the FAQ:
Q: Why not emulate the 6502 with RP2040 as well? A: Emulating memory or ACIA PIA is simple, but the 6502 is a complex state machine, and an emulator will never be 100% accurate. Even N6502 and W65C02 have differences, and we want to have a REAL processor.
Q: Have you checked the CommanderX16 project? You may get inspiration from it. A: I have seen this project, but it is over-complicated, expensive, lacks modern peripherals, and is slower compared to what I want to achieve. This is going to be a MODERN 6502 computer. The CommanderX16 has no modern interfaces like USB keyboard, HDMI, SID Sound, or SPI/I2C. Additionally, the CommanderX16 costs $500, while we aim to target a $25-30 board.
Q: Why not make it with VGA? I have one in the basement. A: We want Neo6502 to be a MODERN computer, and VGA is 40 years old technology.
Q: Why not use W65C265S or W65C816S, etc.? A: These are not 8-bit and have more address lines to deal with, which will make the design more complex and far from the rock bottom price goal. For those who want a W65C625 computer, Kyle, Becky and Bernardo are already working on Agon X65.
Q: Why not Kickstart it? A: Although Kickstarter is a great advertising platform, it has its cost. Kickstarter/PayPal combination takes 20-30% of the collected funds. We target rock bottom costs for our customers and count every cent, so we will not inflate the prices with 20-30% to use the platform.
Q: Do you have firmware developers for it? A: Not yet, so any help and collaboration are welcome. I have already obtained all the parts together and will have a proof of concept on a breadboard this weekend. Then, we will design PCB and some prototypes in a few weeks. If you want to participate in software/firmware development for both RP2040 and 6502, you are welcome to join us! We will have some free early prototypes to send to developers. Send us email to info at olimex dot com.
We got a few inquiries from customers asking if Olimex is interested in making this project and we hesitated at first due to having the bad experience in the past with Maximite pseudo open source project.
After exchanging a few words with Bernardo via Twitter, we became confident that this is a true open source hardware project.
We checked the schematic and decided to do some small changes.
We decided to re-capture the design in KiCad instead of EasyEDA
The power of the original AgonLight is delivered by a USB-A connector which is quite odd and USB-A to USB-A cables are less popular. We decided to replace it with USB-C connector which is used in all new phones, tablets and devices due to the new EU directive. Usually everyone has such a cable at home to charge and transfer files to their cell phone.
We replaced the Linear voltage regulator with DCDC which delivers up to 2A current.
We added a battery LiPo charger and step-up converter which allows operations even if external power supply is interrupted.
The original design had a PS2 connector for a keyboard and required a USB to PS2 adapter to operate with the more available USB keyboards. We replaced the PS2 connector with a USB-A connector so a normal USB keyboard (which supports PS2) can be directly plugged-in to AgonLight
We routed the AS7C34096A-10TCTR SRAM with 40 ohm impedance lines as per the datasheet
Fixed a wrong signal naming in the ESP32-PICO-D4, which now is updated in the original AgonLight documentation.
Replaced the bare header 32-pin connector with a plastic boxed 34-pin connector following the same layout and adding two additional signals Vbat and Vin which allow AgonLight to be powered by this connector too.
Added a UEXT connector (https://www.olimex.com/Products/Modules/) which allows AgonLight to be connected to: temperature sensors, environmental air quality sensors, pressure, humidity, gyroscope, light, RS485, LCDs, LED matrix, relays, Bluettooth, Zigbee, Lora, GSM, RFID reader, GPS, Pulse, EKG, RTC etc.
We changed most of the components to our component base, which we source and stock in large quantities and allow us to bring the cost down.
The design was completed 1 week ago:
Today the first blank PCBs arrived:
Next week we will assemble 5 pcs to test by ourselves and then send to the original AgonLight developers.
AgonLight will be put on our web and available for pre-order next week with a special Christmas price of EUR 50 for a completely assembled, programmed and tested computer.
If the prottotypes are good mass production will follow and all pre-orders taken to 23.12.2022 will be shipped by the end of January.
We plan to make metal case and other accessories in the near future.
The open source hardware STMP157-OLinuXino industrial grade Linux computer got new shield which adds two UEXT connectors, second micro SD card and 40 pin GPIO connector in breadboard friendly 0.1″ (2.54 mm) step format.
STMP15X-SHIELD plugs on top of OLinuXino, the overlays are already included in OLIMAGE Linux images and no need for additional setup.
These who follow our account in Twitter know our small teaser posted on March 1st.
It’s small base board for RP2040-PICO the $4 module with the Cortex-M0+ processor made by Raspberry Pi foundation.
We were ready with the prototype for a long time but the RP2040-PICO modules were tricky to source 🙂
Raspberry Pi suffer from the same problems the semiconductor industry have now – no enough components to organize production and the PICO modules are hard to obtain.
From the picture above you can see what our idea is:
Small board taking power from the USB on the right just below the RP2040-PICO module.
LiPo battery charged for handheld operation and power backup.
Reset button.
Micro SD card
Audio output
HDMI connector with DVI signals to connect to monitor
UEXT connector with UART, SPI, I2C, 3.3V and GND to attach different sensors
JST2.0 4 pin I2C + power supply connector
Debug connector for Serial adapter
The price of RP2040-PICO-PC including the original RP2040-PICO module from Raspberry Pi with soldered headers all in one ready to use computer will cost EUR 12.00
As RP2040-PICO modules now are not available in production quantities for purchase, we decided that until we wait we could make our own version of RP2040-PICO, which to be pin to pin drop in replacement.
Fortunately some RP2040 processors are available now, so we can make our own DIL40 board, this is how our RP2040-Py board was born:
It’s mechanically same as size, with connector signals like the original RP2040-PICO.
Functionally RP2040-Py is same as RP2040-PICO, but has some imoprovements:
RP2040 SOC
2MB of SPI Flash
USB micro connector on the right hand
Power supply DC-DC with 3.3V up to 2A (if the 5V source can provide)
Reset and Boot buttons
two 20 pin rows on the side with same signals making it drop pin to pin compatible.
uUEXT connector on bottom
As the board still had plenty of not used space we decided to add USB JTAG debugger, which will allow you to debug your RP2040 SOC with step by step execution, to watch variables and set breakpoints while you develop your code.
There will be three versions of the RP2040-Py:
Basic: same as RP2040-PICO but with higher current DCDC power supply (3.3V up to 2A output) additional UEXT connector and RESET button. The price of this module will be EUR 5.00
Basic+ same as Basic but with soldered headers and additional left hand side micro USB, which can be used to power the board while the left hand side micro USB can be used as USB device or USB host. The price of this module will be EUR 8.00
Debug: same as Basic+ but with populated JTAG parts, which allow real time programming and debugging. The price of this module will be EUR 19.00 The JTAG debugger is tested to work with OpenOCD/Eclipse/Visual Studio, ARM (Keil) IDE and IAR Systems EW.
The PCB routing of our most complex board – IMX8QM-Tukhla is complete and ready for first prototype build.
We started this project June-July 2020. Due to the Covid19 the development took 10 months although only 6 month of active work was done, due to lock downs, ill developers and so on troubles.
Now the board is completely routed and has these features:
Main SOC MIMX8QM5AVUFFAB which is member of iMX8 Quad Max series – the most powerful iMX8 SOC line from NXP.
MIMX8QM5AVUFFAB has 8 cores:
x2 Cortex-A72 running at 1.6Ghz
x4 Cortex-A53 running at 1.2Ghz
x2 Cortex-M4F running at 264Mhz
Memory:
64-bit LPDDR4 @1600 MHz
Connectivity:
1× PCIe (2-lanes)
1× USB 3.0 with PHY
1x USB 3.0 dual role with PHY
1× SATA 3.0
2× 1Gb Ethernet with AVB
1× CAN/CAN-FD
1x HDMI Rx
GPU:
2xGC7000 XSVX
16× Vec4 shaders with 64 execution units
Dual independent 8-Vec4 shader GPUs or a combined 16-Vec4 shader GPU
OpenGL 3.0, 2.1
OpenGL ES 3.2, 3.1 (with AEP), 3.0, 2.0, and 1.1
OpenCL 1.2 Full Profile and 1.1
OpenVG 1.1
Vulkan
VPU:
H.265 decode (4Kp60)
H.264 decode (4Kp30)
WMV9/VC-1 imple decode
MPEG 1 and 2 decode
AVS decodeMPEG4.2 ASP,
H.263, Sorenson Spark decode
Divx 3.11 including GMC decode
ON2/Google VP6/VP8 decode
RealVideo 8/9/10 decode
JPEG and MJPEG decode
2× H.264 encode (1080p30)
Display:
Supports single UltraHD 4Kp60 display
or up to 4 independent FullHD 1080p60 displays
2× MIPI-DSI with 4 lanes each
1× HDMI-TX/DisplayPort
2× LVDS Tx with 2 channels of 4 lanes each
Camera:
2× MIPI-CSI with 4-lanes each, MIPI DPHYSM v1.
Security:
Advanced High Assurance Boot (AHAB) secure & encrypted boot
Operating temperature:
Automotive AEC-Q100 Grade 3 -40+125C
To the best of our knowledge there is no Open Source Board so far which to be so complex and advanced.
Now we are running the first prototypes and crossing fingers everything to work 🙂
With the current state of the semiconductor industry production will not be possible to be run soon.
Linux support will need attention as NXP has no mainline Linux for this SOC, but only Yocto build for old kernel (4.14.98_2.3.3).
If there are people with experience and interest in this SOC we may share one of the first samples we build, so they can help on the Linux support.
The schematic of IMX8QM-TUKHLA Revision A is uploaded for review on out ftp.
Recent Comments