Index ¦ Archives ¦ Atom ¦ RSS > Category: moxie ¦ Atom

Loading programs into the verilog simulation

The moxie newlib port was just accepted. The GCC port will take a little longer to review, but I hope that it will get accepted early next week. Already there has been some useful feedback resulting in a few improvements. For instance, the moxie libgcc.a now provides the soft-fp …


Pushing Bits Upstream

If there's one thing I've learned about GNU tools development over the years, it's that attempting to maintain a tools port outside of the upstream tree is A Very Bad Idea! It's easy to let your private tree fall out of sync from upstream. And the longer you wait to …


A Verilogical Place To Start *

I've written my first bit of verilog tonight. It's not much, really, but it's a start. I'm using Icarus Verilog (iverlog) to compile and simulate the code. I also plan on using GTKWave to examine timing dumps from the iverilog simulator. Both of these tools are part of my development …


Das U-Boot on moxie!

My moxie port of U-Boot, the Universal Boot Loader, has started working!

$ qemu-system-moxie -nographic -kernel u-boot
SDRAM :
        U-Boot Start:0x00001000
Using default environment

U-BOOT for "moxiesim"

=> version

U-Boot 2009.03-rc2-00013-gefb4734-dirty (Apr 02 2009 - 20:07:32)
=> printenv
bootargs=root=romfs
baudrate=38400
hostname="moxiesim"

Environment size: 55/4092 bytes
=>

It's …


Processor Exceptions

My first go at exceptions is working well. The basic idea is that moxie will have a single exception handling routine whose address lives in special register 1. You set the exception handler like so:

void install_handler(void (*handler)(void))
{
  printf ("Installing handler 0x%x\n", (unsigned) handler);
  asm("ssr …

Thinking about exceptions....

In reading about how other processors handle exceptions, they seem to be of two sorts. Some (most?) processors look into a vector of exception handlers based on the exception type (Divide by Zero, Software Interrupt, IRQ, etc), and the other sort jumps to a single exception address and lets the …


Adding a Real Time Clock

After a UART, one of the most useful and interesting peripherals you can add to a board is a Real Time Clock (RTC). Qemu comes with a simulation of Freescale's MC146818 RTC chip. Adding it to our qemu-defined board was as simple as....

   rtc_mm_init(0x400, 0, 0, 0);

This makes …


Board Support Packages

Today we're introducing the notion of Board Support Packages (BSPs) to the moxie toolchain.

A BSP provides all of the configuration data and code requires to target a specific hardware platform. This mostly involves linker scripts, platform initialization code, and hardware abstraction support libraries.

Until recently the gdb sim was …


Debugging with the moxie qemu simulator

I've finally cracked the gdb+qemu puzzle, so now we can debug code running on the qemu moxie simulator!

The last little gotcha was that the simulated $pc wasn't being updated after single-stepping. This will get you nowhere fast! But it's all fixed now, and here's how it works...

$ qemu-system-moxie …


A Tiny Computer

Lambda the Ultimate today posted a interesting blog entry on A Tiny Computer. It refers to 2007 paper by Chuck Thacker at Microsoft Research describing a tiny 32-bit processor. Appendix A of the paper includes the entire synthesizeable verilog implementation in just a page and a half of code! Here's …

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