Converting SAMX to SAMS

rtel wrote on Monday, May 07, 2007:

[moved from private mail]

Do you happen to have a port for using FreeRTOS with CrossWorks on an AT91SAM7S (preferrably 7S256, but any would be great)?  I’ve been trying to start with the CrossWorks 7X port and modify it to work with the 7S, but I haven’t been successful yet.

rtel wrote on Monday, May 07, 2007:

I’m not sure that any conversion is actually required, except maybe the linker file, but even then, looking at the SAM7X Rowley project it seems to include the SAM7S256 memory map file.

The IAR projects for the SAM7X and SAM7S both use exactly the same port files.

Did you start your new project by using the existing SAM7X project, or did you create a new project specifically for the SAM7S and then copy across the compiler settings?

What goes wrong (what are the symptoms) when you try to run the code on the SAM7S (flash won’t program, tasks won’t start, etc.)?

I would suggest:

+ Starting with the lwIP project.
+ Remove all the Ethernet stuff (lwIP code, emac drivers, etc).
+ Update partest.c so that it correctly controls the LED’s on the hardware you are using.  Test the function of the LED’s from a simply “hello world” type program to ensure the function as expected, before adding any multitasking.
+ Then edit main() as below:

int main( void )
____/* Setup the ports - make sure there is no EMAC stuff in here! */

____/* Setup the IO required for the LED’s. */

____vStartLEDFlashTasks( mainFLASH_PRIORITY );

____/* Should never get here! */
____return 0;

Also - be sure to set configUSE_TICK_HOOK and config_USE_IDLE_HOOK to zero in the FreeRTOSConfig.h file to prevent the hook functions attempting to access the USB queues, as this would cause it to crash.