Monday, December 10, 2007

AEMB Virtual Peripherals

I was just thinking about what to do with the extra thread on the new AEMB. I have tested it and compared the results with the old design. There were some minor bugs that have been utterly squashed. So, now both the old and new designs produce the same results. So, assuming that the old design works, the new one works as well!!

Then, I wrote some software to set up the threads. This took a bit of work but the result is a very elegant method that is independent of user programmes. I wrote a small bit of assembly that would configure the two hardware threads differently and then reboot the core so that the two threads can run independently, instead of in lock-step.

So, now that everything seems to work, I have been thinking of some applications for the core. As the core is targeted for embedded applications, I was just wondering what I could do with it. Then, the idea dawned on me: virtual peripherals!

Virtual peripherals used to be fairly common on certain embedded platforms as they weren't equipped with the necessary I/O devices. For example, it is possible to get a small micro to emulate multiple I2C/UART/SPI devices without actually wasting any extra silicon on actually integrating these devices into the system. This was particularly popular on the SX platform.

Oh my, this is going to blur the software-hardware boundary even further than it already is for me. Now, instead of integrating hardware blocks into the core, it will even be possible to emulate hardware blocks in software, on the second thread. Since the processor can run above 100MHz, it is possible to emulate a myriad host of devices.

No comments: