I would like to try to get FreeRTOS to run in an emulated environment. I’m Thinking the best platform would be Qemu. mainly because this could simulate many different hardware configurations.
Originally I was thinking that it could be based off of one of the dos ports. but I think better would be to use QEMU. Perhaps the qemu-system-arm flag would be the best option. as it has a dual uart, Ethernet and a ARM926E core.
The Main hurdle is getting FreeRTOS to compile into the proper form that QENU can recognize, boot, and execute. Or really any application for that matter. If I could find a "hello world" type makefile that builds a QEMU bootable image. that would be a great starting point.
Once we can do that, then debugging via gdb would be simple and we really have unlimited ram to try out things with freertos.
I don’t have much experience with QEMU, but it seems that it would be possible.
It would also be a good way for people to try out FreeRTOS without hardware. Or before their hardware is ready.
just found this as well, working on getting it setup. http://wiki.openmoko.org/wiki/OpenMoko_under_QEMU
essentially an emulated S3C2410A and some peripherals.
could make a decent Simulated FreeRTOS environment.
I finally got FreeRTOS running on a simulated arm7.
I’m using Skyeye simulating the lpc2210 hardware.
I’m using timer0 and uart0 simulated hardware
right now I have direct serial print functions working, When I try interrupt driven I can’t only get one character to print out. So I’m guessing that the interrupt driven uart is not properly simulated.
so far I have been able to get tasks and coroutines(in the idle hook)
right now I have three tasks and two coroutines all being scheduled properly.
Both preemptive and not preemptive modes seem to work as well. (to test out preemptive I have one task not blocking and other tasks still get swapped in to run)
A couple of stuff I haven’t figured out yet is that the timers are not quite operating at the correct speed, so right now even though the tick should be every 1ms. its more like every 2 seconds. (and I know that skyeye is not that slow) I’m guessing that it is not properly simulating the pll. and I have no idea what the default clock is running at.
I’ll post up an example when I get more stuff figured out.
but everything is looking good so far.
Sounds very interesting. I am not familiar with SkyEye at all. Let me know when you post something up so I can link to it.