Linux on the Sega 32X. Who needs hardware synchronization primitives anyway? - cakehonolulu's blog
Preface
I couldn't start this entry in any other way possible but by thanking everyone who enjoyed the Linux on Jaguar post.
Also special props to the linuxmd project again.
It was a very fun experience and we've even made it into a few news outlets:
Hackaday
or
Tom's Hardware
I also posted it on Hacker News and it recieved some good interest (And nice questions!).
So, yes; thanks everyone again!
Why is this (Linux) trend continuing?
I have an easy answer to this question, it's mainly to improve my board bringup skills.
I've been working professionally on the Firmware/Operating Systems/Embedded area for well over 2 years now (Professionally-speaking) and one of the usual suspects you see when trying to land a new job is "the ability to handle board bringups from the ground up".
I know it doesn't sound too fascinating but for me, other than job hunting (Which is not my bread and butter anyway), bringing up a piece of silicon and having it run something you made/helped making is super fun. You get to experiment with many of the different layers that make the result up: Emulators, Technical documentation, Experimentation, Investigation... you know; the usual engineering stuff.
Not that reading early-90s scanned datasheets is my passion (There's some documents that are plain images embedded onto a PDF) but there's something to it that makes me come back every time.
I actually started doing this in '13/'14. I was 12/13 at that time and I vividly recall my parents buying me my first phone. It was a MediaTek-based 6589 quad-core processor with a gig of RAM. Powerful stuff eh!
At that time (Not much soon after), Google released Android 5.0 Lollipop; but the vendor of the phone decided that it would not update it to that version. And I was really sad... so I had to get my hands dirty.
I'll sum up the story a bit because it's a bit large, but the gist of it is that I asked the company to comply with GPL and release the Linux kernel source code for the phone; for which they opposed, but as a community we got together and they released it (Along some other phone's trees).
Picture me surprised when the source code was half-assed and the board configuration didn't boot on the phone. Fortunately at that time, I found a leak of the full-source of MediaTek ALPS targetting a variation of the 6589 that seemed promising enough (Had the full Little-Kernel bootloader, Baseband, Preloader, Linux kernel and AOSP) for me to check.
I spent a few months trying to reverse-engineer parts of the zImage that was bundled on the stock boot image provided by the phone vendor to fill parts of the MediaTek code (Mostly related to lcm, battery, chipset quirks and whatnot) and after some good amount of digging and experimenting (And good chats with the cool people over at xda-developers) I had Android 5.0 running on my phone; mind you, it wasn't perfect. No Bluetooth, no HWComposer (Hardware acceleration), no Media engines... but seeing the pure, unadultered new Material Design on my phone blew my mind.
Android 5.0 Lollipop
I should probably try to make a separate post of this story... someday.
The mighty Sega 32X
Released in November 1994 in America/Europe (December 1994 on Japan); the Sega 32X was an add-on that promised to be an intermediate step between the 16-bit era Genesis and the soon-to-be 32-bit Sega Saturn. I'm not a good writer so the story that led up to that particular moment (For SEGA, that is) is a bit tumultuous (SEGA Japan vs SEGA of America) so I'll leave it as a task for the reader.
Anyhow, prior to the 32X, SEGA launched a CD add-on; the Sega CD (Or Mega CD, if you are european/japanese). It plugged into the expansion slot of the Genesis and it enabled CD-quality audio streaming (And well, game/game asset streaming). It was a machine on it's own (It had a higher clocked 68000 in comparison with the Genesis). There were 2 separate models, the first "generation", which was front-loading...:
Sega [Mega]CD Model 1 with Mega Drive/Genesis Model 1
...and the second, top-loading one:
Sega [Mega]CD Model 2 with Mega Drive/Genesis Model 2
But this post is about the 32X... so here it is:
Sega 32X
The actual addon was plugged into the cartridge slot of the Genesis (It had a separate power brick and video output, later of which was "combined" on-top of the Genesis video out timing/video/color channel signals).
Sega 32X & Genesis Model 2
If you've ever had the pleasure of building the Tower of Power, you'll know that having 3 separate power bricks, plus the cables to get stereo output out of the 32X, the "patch" cables and the many missing tidbits I'm probably forgetting now, wasn't anything short of fancy.
But what did all of that power?
32X Hardware specifications
Admittedly, the addon is far more powerful than the base console:
Component(s)Sega Genesis/Mega DriveSega 32X<br>Main CPU1 x Motorola 68000 @...