Index ¦ Archives ¦ Atom ¦ RSS

Running a C Program on the Marin SoC

I've just committed the bits required to run a C program on the Marin SoC.

Rather than hook up the Nexys3 external RAM module, I'm using extra space on the FPGA itself for RAM. Most of the hard work was sorting out the linker script magic required to generate an …


Moxie SoC Progress

Time for a quick update!

"Marin" is the name of my test SoC consisting of a wishbone wrapped 75Mhz big-endian MoxieLite bus master, along with two slave devices: embedded ROM and the Nexys3's 7-segment display. So, right now I can write some code into FPGA embedded ROM to manipulate the …


Moxie and Free Software EDA at FSOSS

I'll be speaking at FSOSS in Toronto next week on moxie and Free Software EDA tools. Check it out here: http://fsoss.senecac.on.ca/2012/node/150.


MoxieLite in Action

Brad Robinson just sent me this awesome shot of MoxieLite in action. His Xilinx Spartan-6 FPGA based SoC features a moxie core handling VGA video, keyboard and FAT-on-flash filesystem duties using custom firmware written in C. This is all in support of a second z80-based core on the same FPGA …


It's Alive!

There's a working hardware implementation of moxie in the wild!

Intrepid hacker Brad Robinson created this moxie-compatible core as a peripheral controller for his SoC. He had been using a simple 8-bit core, but needed to address more memory than was possible with the 8-bit part. Moxie is a nice …


The case against the [L]GPL for Semiconductor Core Licensing

Eli Greenbaum wrote a terrific article for the Harvard Journal of Law & Technology last fall called 'Open Source Semiconductor Core Licensing'. I'm using the GPL as a place-holder in my verilog source, but I've always felt that the GPL/LGPL were inappropriate licenses for digital logic. Eli's article makes clear …


vfork() for uClinux forces an architecture change

Moxie uses a simple software interrupt instruction (swi) to implement system calls. The swi instruction creates a call frame on the stack and then jumps to a global exception handler routine. The exception handler for moxie-uClinux switches to the kernel stack before jumping to the relevant kernel routine. Returning from …


Forking bugs

I found some time to look at the Linux kernel port again, and discovered a bug in the forking code (the child process must return 0 after a fork!). What we're looking at here is the start of userland, post kernel boot, where busybox is trying to run an init …


Multiported Registers, Microcode and Register Forwarding

When I last wrote about tackling the 'pop' instruction I noted that I needed the ability to write to multiple registers before retiring that one instruction - something that would require extra instruction cycles or loads more logic. I recently came across some work by Charles Eric LaForest on Efficient Multi-Ported …


Notes on a novel in-game CPU: the dcpu-16

The hacker behind the Minecraft phenomena, Notch, is working on his next game, most likely another hit. This one is interesting in that it includes an in-game 16-bit processor called the dcpu-16. Details are sparse, but it seems as though gamers will use this processor to control spacecraft and play …

© Anthony Green. Built using Pelican. Theme by Giulio Fidente on github.