[HN Gopher] We ran a Unix-like OS Xv6 on our home-built CPU with...
___________________________________________________________________
We ran a Unix-like OS Xv6 on our home-built CPU with a home-built C
compiler
Author : AlexeyBrin
Score : 201 points
Date : 2025-06-28 12:20 UTC (10 hours ago)
(HTM) web link (fuel.edby.coffee)
(TXT) w3m dump (fuel.edby.coffee)
| layer8 wrote:
| (2020)
| djoldman wrote:
| Previously:
|
| https://news.ycombinator.com/item?id=24680109
| boricj wrote:
| That reminds me of a three week, three person group project I had
| back when I was in university. There were a couple of topics we
| could pick from, including writing a very simple operating system
| from scratch. I asked the professors if we could instead port
| MINIX3 to the Raspberry Pi (given that it already had an ARM port
| to the BeagleBoard) and they accepted.
|
| What was supposed to be a reasonably straightforward project
| proved to be a huge challenge as we encountered numerous
| unforeseen technical difficulties. One particularly harrowing one
| was that the Raspberry Pi 3 booted into hypervisor mode instead
| of supervisor mode and QEMU's Raspberry Pi emulation accuracy was
| so abysmal back then to be borderline useless for osdev. I recall
| it took me an entire week of low-level hardware debugging just to
| figure that one out.
|
| By the end, we pulled through and delivered a working port with
| UART, GPIO and framebuffer drivers that could run on the
| Raspberry Pi 2 and 3. We run our presentation with the port on
| real hardware, using a shell script that displayed bitmaps from
| the ramdisk and monitored GPIO pins to move slides forwards or
| backwards (I used a knife to short-circuit the pins as needed).
| It was by far the coolest presentation of all the groups just on
| originality alone and I think I still have the image of that SD
| card somewhere.
| rustybolt wrote:
| Nice.
|
| > I asked the professors if we could instead port MINIX3 to the
| Raspberry Pi
|
| I think they were expecting you to fail.
|
| > QEMU's Raspberry Pi emulation accuracy was so abysmal
|
| When I did some hobby OS dev my strategy was to make it work on
| QEMU and then pray it would work on real hardware as well,
| which worked OK...
|
| How did you handle the debugging the raspberry pi on real
| hardware?
| boricj wrote:
| > I think they were expecting you to fail.
|
| Maybe, but I already had a reputation of being _the_ dark
| wizard back then. If anything, the other students in my group
| went along with this because they knew I could overcome any
| problem... regardless of the cost on my sanity.
|
| > How did you handle the debugging the raspberry pi on real
| hardware?
|
| Painfully through serial output. I didn't have access to a
| JTAG probe at the time (I'm not even sure the Raspberry Pi
| could be debugged that way) and documentation was exceedingly
| poor.
|
| After that experience, I refuse to debug anything hardware-
| related without at the very least a GDB stub.
| userbinator wrote:
| _and documentation was exceedingly poor._
|
| This is Broadcom we're talking about, where that's par for
| the course. Personally I'd choose a SoC from AllWinner or
| Rockchip or even Mediatek over them.
| accrual wrote:
| > I used a knife to short-circuit the pins as needed
|
| Reminds me of shorting the two power-on pins on an ATX
| motherboard to start it without a switch installed. Obviously,
| your setup was far cooler. Nice work.
| Tepix wrote:
| Very impressive! Low end work is often tedious and time
| consuming, especially if you lack the essentials like a debugger.
| 73kl4453dz wrote:
| Until you've used an oscilloscopes to debug your buggy kprintf,
| you haven't lived.
| tonyarkles wrote:
| LOL in my 4th year Advanced Operating Systems Concepts course
| we wrote a toy x86 OS from scratch. We obviously didn't have
| to make our own hardware, but uhhhh I definitely added a
| bunch of printfs inside QEMU to dump out CPU states when we
| couldn't figure out the chain of events that led to hard
| faults.
|
| On the other side... have also definitely used a pair of LEDs
| to try to debug an RTOS on a microcontroller with no JTAG
| access...
| userbinator wrote:
| First thing to do is get a working UART.
| _sbrk wrote:
| First thing to do is get a GPIO pin or two to toggle.
| Plenty of debug patterns that one can blink out.
| dleslie wrote:
| We did this sort of thing at SFU some 25-30 years ago; though we
| stopped short of running an OS and compiler on it, and it wasn't
| a group project.
|
| For those interesting in trying this sort of experiment, but wish
| to have some guidance and accessible tooling, I highly recommend
| Turing Complete; you'll go from a few gates to a full computer.
| Components can be shared with the community; where you'll find
| things like a RiscV core and such. Anyhow, it's great fun. Do
| recommend. It's on Steam:
|
| https://store.steampowered.com/app/1444480/Turing_Complete/
| s3graham wrote:
| That looks like the game-version of nand2tetris which I enjoyed
| doing a while back too (as another suggestion).
| _sbrk wrote:
| Magic-1 and BMOW did similar, a while back. See:
| https://www.homebrewcpu.com/
|
| The actual list of sites who have built their own CPUs:
| https://www.homebrewcpuring.org/
| b0a04gl wrote:
| while building altogether cpu + compiler + os ,there's no
| platform under you. you're the platform.. every bug you hit is a
| law of your system.. most of us debug through layers someone else
| wrote. here, even the rules are homemade..op debugged his own
| rules
| ummonk wrote:
| Now they gotta run to the semiconductor lab and get them to
| fabricate the CPU instead of configuring an FPGA to run it.
___________________________________________________________________
(page generated 2025-06-28 23:00 UTC)