[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)