henryk wrote:FreeRTOS supports the chip just fine, also with gcc, see the OpenPICC project which has FreeRTOS and the same AT91SAM7S*.
Ooh! Great minds and all, I suppose. 
Do we even need to do this? I was thinking we'd leave the code in bootrom/ as-is and only "FreeRTOS"-ize the code in armsrc/.
I saw this as being one of the greatest benefits (rewritten USB code)!
... and here is where my understanding of the code is weakest. As much as I understand FreeRTOS from a brief look-through of http://www.freertos.org/implementation/, we should be able to guarantee a certain frequency of ticks (or rather, we know the minimum duration of each task slot) and a certain number of slots per task per second... how much of the code requires timing that would have to fit within one timeslot, and how much of the code just requires constant (but coarser) timing?
The timing problem can be worked around by temporarily disabling interrupts, but that kind of counteracts the point in adding multi-tasking in the first place. Note though that I'm not against FreeRTOS, I'm just cautioning that it will probably be more work than just dropping in the OS and copying over the application code.
I fully understand that this is non-trivial, I was just trying to find a good way to start -- it sounds like starting with the OpenPICC code would be the best approach (as opposed to starting "from scratch" with the base FreeRTOS).
I'm currently busy with another project but wanted to look into solving the problems I mentioned in the other post some time next January, and if we're going to do some major remodeling, we might just as well take FreeRTOS into the list of changes. (And while I'm at it I'd like to break the USB protocol migrate the flash tool away from .s19 files.)
Since this will then be a longer operation, I'd suggest creating a branch in the SVN so that the current code base can stay stable and experience incremental additions that are usable without waiting for the new code base to become stable.
I don't actually have SVN access, anyway
What would be the best code to get working first? Basic USB comms (without RF functionality)?