Just a quick note to let you know that there’s a VS port included in the latest freeRTOS distro. It’s included with the Contributed RTOS ports section. ( x86_VisualStudio8_DJ.zip). It’s written for Version 4.1.3 but might work for the latest version also. You’ll just have to try it.
Your post is quite a co-incidence, I was just playing with the port this weekend. I am very impressed! This makes a really nice test bench - I have been trying out some new TCP/IP ideas using it.
I found I had to remove the idle hook to get the debugger to behave nicely - the idle hook doing nothing but ‘sleeping’.
I cannot get direct access to the Ethernet interrupts so instead created a task that runs in the background generating simulated events to wake the Ethernet task. I think this is similar to how you are creating the tick interrupts, only you are using a Windows thread, rather than a FreeRTOS.org task. Is this correct? I know very little about native Windows programming.
To use the port I downloaded the latest "Microsoft Visual C++ 2008 Express Edition" - which is completely free but huge so you need a fast internet connection and plenty of disk space.
Thank you for your great contribution. Any volunteers for a Linux version?
You’re right about the Sleep. Without it you get the CPU fans running etc because the process is always busy. I have used Sleep(INFINITE) - We don’t use the IDLE thread except for patting the watchdog.
FreeRTOS tasks are wrapped by windows threads so yes, the solution is similar. Only thing is, the solution you have adopted brings the interrupt generators under the fold of the FreeRTOS scheduler (which may or may not be a problem in your case).
Another gotcha is, the windows tick occurs every 15.xxx ms. My suggestion is to add a couple of macros to convert from ms to ticks and vise versa and use them to abstract out the delays arguments.