In the past week or so I'm playing with Altera's Nios II development board. It includes a powerful FPGA - Stratix II S60 and quite a few peripherals allowing to test complex applications.

The Nios processor is the dream of an embedded hacker come true. Imagine your processor lacks some important features for hardware interfacing or performance (this doesn't sound familiar to PC application developers, but believe me, embedded engineers run into this problem often). When using Nios (or any other soft core, I guess, but Nios is especially well suited for FPGAs) you can just add the hardware you need in VHDL (or Verilog), tie it to the processor's bus and map it to memory as registers. Then, viola, write code that accesses this new hardware to perform any function you want.

Altera provides excellent development tools, and the whole process is very smooth and pleasant. For example, the IDE is Eclipse, which is integrated with GCC (for C/C++ front-end, attached to a Nios backend) and debugging is done visually as a wrapper around GDB.

Just today I created a new interrupt from hardware, registered it in my software and used it to simplify a communications protocol. Moreover, I used a Perl script on my PC to talk to the hardware using a serial port and test complex scenarios. Imagine running a Perl script that commands a board connected to the computer to turn on some LEDs !

This is so much fun ! I can't put my finger on the exact reason, but embedded programming is far more entertaining than PC application programming. Something about being close to the hardware, seeing the things you write actually do physical stuff, is great.