Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT




Loading

FreeRTOS on Atmel SAM3U in CrossStudio

Posted by Danny Haak on September 6, 2011
I try to get FreeRTOS running on a SAM3U(-EK devkit) in Rowley CrossStudio. While creating tasks goes fine, they do not seem to be executed.

What I did:
- Generate a CrossStudio project for the SAM3U-EK devkit (which includes Rowley start-up and configuration assembly files)
- Include FreeRTOS .c and .h file - take the config file from the SAM3U example project for IAR
- Copy simple task from demo
- Include lowlevel*.c/.h files from AT91LIB - including serveral drivers

It compiles fine. but when I put a breakpoint inside the task, it never gets executed.

My main.c:
// general includes
#include
#include
#include

// includes for FreeRTOS
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"

int i;



void vATaskFunction( void *pvParameters );

int main()

{
i = xTaskCreate( vATaskFunction, "test", 200, NULL, tskIDLE_PRIORITY, NULL );
vTaskStartScheduler();

for ( ;; );

}



void vATaskFunction( void *pvParameters )
{
for( ;; )
{
int j = 0;
i = i +5;
vTaskDelay(250 / portTICK_RATE_MS);
}
}


I guess something goes wrong with interrupts to execute ticks - but I'm lost where to fix this. Any help is really appreciated.

RE: FreeRTOS on Atmel SAM3U in CrossStudio

Posted by Richard on September 6, 2011
If you step through the call to vTaskStartScheduler() you will find the answer to why the scheduler is not starting.

My (almost certain) guess is that you have not populated the interrupt vector table with the interrupts required by FreeRTOS. That means, you will get to the call to the SVC assembler instruction in vPortStartFirstTask() that is used to start the kernel, then just jump to the default SVC handler instead of the FreeRTOS SVC handler.

If this is the case then, then install xPortSysTickHandler, vPortSVCHandler, xPortPendSVHandler and xPortSysTickHandler in the appropriate places in the vector table. Or, if the vector table is using CMSIS function names for the handlers, add the following lines to FreeRTOSConfig.h:


#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
#define xPortSysTickHandler SysTick_Handler

regards.

RE: FreeRTOS on Atmel SAM3U in CrossStudio

Posted by Danny Haak on October 11, 2011
This did the trick - thank you.


[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]




Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

FreeRTOS kernel V10 is available for immediate download. Now MIT licensed.


FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS